PingCAP は2026年10月、「Security Update」で、権限のない第三者が盗まれたサービスアカウントの認証情報を使い、9月9日から10月7日まで一部の内部システムに入っていたと発表しました。データのコピーとソースコードの取得があり、持ち出された記録には TiDB Cloud のユーザー名・メールアドレスと SQL エディタのテキストが含まれます。発表の前日には、恐喝グループ FulcrumSec がリークサイトに約10.6TB を持ち出したと載せていました。本記事は PingCAP の発表と攻撃者の主張を分け、TiDB Cloud の利用者がやることを整理します。

TIMELINE時系列

侵入は9月に始まり、発表はリークサイトの掲載の後

  1. 9/9〜

    盗まれた認証情報で内部システムへ

    10/7 まで。データのコピーとソースコードの取得

  2. 10/7

    PingCAP が把握し、無効化を開始

    10/14 に特定した認証情報の無効化と経路の遮断を完了

  3. 10/19

    攻撃者のリークサイトに掲載(約10.6TB を主張)

  4. 10/20

    PingCAP が発表を公開

出典: PingCAP「Security Update」(2026年10月)、Ransomware.live(10-19 掲載)。日付は2026年

30秒でわかる(2026年10月21日更新:PingCAP の発表を反映)

  • ・入口:盗まれたサービスアカウントの認証情報。9月9日から10月7日まで一部の内部システムに入られ、データのコピーとソースコードの取得があった
  • ・持ち出された記録:TiDB Cloud のユーザー名とメールアドレス、組織とプロジェクトの関係、SQL エディタのテキストとエラー、請求と契約の情報
  • ・影響の証拠が無いもの:TiDB に保存されたデータ。API キーは暗号化された値だったとしている
  • ・食い違い:攻撃者は平文の API キー約11.5万件、SQL 文約2,065万件を主張している。PingCAP は件数を認めていない

まずやること

  • ・SQL エディタ・Chat2Query を使った人:書いた文にパスワード・API キー・個人情報が無いかを見直し、あれば差し替える
  • ・TiDB Cloud の利用者全員:API キーと DB ユーザーのパスワードを作り直す。PingCAP を名乗るメールのリンクは開かず、コンソールを直接開いて確かめる
  • ・セルフホストの TiDB の利用者:今回の記録には含まれない。PingCAP のセキュリティアドバイザリを見ておく

事案の読み方とほかのインシデントは サプライチェーン攻撃とは|手口・防御ツール比較・npm 12の新機構まで実践解説 にまとめています。

PingCAP 不正アクセスの時系列

日時(2026年) 出来事 出どころ
9月9日〜10月7日 権限のない第三者が、盗まれたサービスアカウントの認証情報で一部の内部システムに入り、データをコピーし、ソースコードを取得 PingCAP
10月7日 PingCAP が把握し、同日から該当する認証情報の無効化を始める PingCAP
10月12〜13日 外部の会社が脆弱性4件を報告 PingCAP
10月14日 特定した侵害された認証情報をすべて無効化し、特定した不正アクセスの経路を遮断。脆弱性4件も修正し、外部の会社が再試験で確認 PingCAP
10月19日 攻撃者のリークサイトに「PingCAP / TiDB Cloud」が載り、Ransomware.live が記録 Ransomware.live
10月20日 Hackmanac が X で FulcrumSec の主張(約10.6TB・約490万ファイル)を伝える。名前が挙がった Bitget が、利用者のデータは出ていないと説明 Hackmanac、Crypto Briefing
10月20日(米国時間) PingCAP の「Security Update」の公開を確認。調査の状況は10月19日時点として書かれている。日本時間10月21日0時台に PingCAP Japan が X で日本語の報告 PingCAP、PingCAP Japan

侵入が始まってからリークサイトに載るまで約6週間、PingCAP が把握してからも約2週間あります。その間に外へ出た鍵やパスワードは、利用者が替えるまで有効なままです。

PingCAP の発表で分かった TiDB Cloud の流出範囲

サービスアカウントは、人ではなくシステム同士の処理に使うアカウントです。PingCAP はその認証情報が盗まれたと書いていますが、どう盗まれたかは発表から確かめられません。外部のインシデント対応会社は本番システムを調べ、調べた範囲では攻撃者がコマンドを実行した形跡も、アクセスを保ち続けた形跡も無かったとしています。発表は、この結果が持ち出されたデータの範囲を変えるものではないとも書いています。

区分 PingCAP の発表
入られた場所 PingCAP の一部の内部システム。データのコピーとソースコードの取得
TiDB Cloud のアカウントの記録 ユーザー名、メールアドレス、組織とプロジェクトの関係、SQL エディタのテキストとエラー。一部の記録には組織・プロジェクト・クラスタの識別子
請求と契約 顧客の連絡先、契約条件、注文、価格、支払条件、請求の設定
API キー 書き出された表に暗号化された TiDB Cloud の API キーの値。外部の会社が試した1件は、そのままでは API キーとして使えなかった
影響の証拠が無いもの TiDB に保存されたデータ(外部の弁護士とフォレンジックの専門家の支援のもとで)
調査中 修正前の脆弱性が悪用されていなかったか、ほかの認証情報が出ていないか、顧客ごとの範囲

PingCAP Japan は X で「TiDB Cloud への不正アクセス、クレジットカード情報の流出は確認されておりません」と書いています。入られたのは PingCAP の内部システムで、そこにあった TiDB Cloud の記録が持ち出された、という英語の発表と合わせて読む必要があります。SQL エディタのテキストは、利用者が自分で打った文そのものです。そこにパスワードや鍵を書いていれば、TiDB のデータとは別の経路で出たことになります。

PingCAP の発表と FulcrumSec の主張はどこが違うか

STATEMENT VS CLAIM発表と主張

流出の種類は発表で裏付け、件数と平文の鍵は主張のまま

攻撃者の主張

FulcrumSec(未確認)

  • 約10.6TB・約490万ファイル
  • 平文の API キー約11.5万件
  • SQL 文 約2,065万件
  • 本番データベースを含む

PingCAP の発表

Security Update

  • ユーザー名・メール・組織とプロジェクト
  • SQL エディタのテキストとエラー
  • API キーは暗号化された値
  • TiDB のデータに影響の証拠なし
出典: PingCAP「Security Update」(2026年10月)、攻撃者の数字は報道と Hackmanac の投稿による(2026-10-21時点)
項目 PingCAP の発表 FulcrumSec の主張 読み方
入口 盗まれたサービスアカウントの認証情報 PingCAP のリポジトリに入っていた GCP のサービスアカウントの鍵と Azure のサービスプリンシパル 種類は重なる。鍵の出どころは主張のみ
ソースコード 取得された 持ち出した 確認済み
アカウントの記録 ユーザー名・メールアドレス・組織とプロジェクト 約18万の組織、40万超のメールアドレス 種類は確認済み、件数は主張のみ
SQL エディタ テキストとエラー SQL Editor と Chat2Query の生の SQL 文 約2,065万件 種類は確認済み、件数は主張のみ
API キー 暗号化された値。試した1件はそのまま使えず 平文の約11.5万件、うち約4.2万件が有効 食い違い
TiDB のデータ 影響の証拠は無い 本番データベースを含む 食い違い
総量 確かめた範囲で数字は無い 約10.6TB・約490万ファイル 主張のみ

攻撃者の数字は、リークサイトの記載を伝えた報道と Hackmanac の投稿によります。本記事はリークサイトへのリンクを載せません。FulcrumSec はクラウドの設定と鍵の管理の甘さを狙う恐喝グループとして Sysdig や MOXFIVE が分析していて、交渉の圧力のために規模を大きく見せることもあります。

主張には利用企業の名前も並んでいますが、本記事は一覧を載せません。声明を出した当事者として、暗号資産取引所の Bitget は10月20日、同社が TiDB Cloud に置いたのは公開している取引の記録だけで、2か月以上前に使うのをやめており、利用者のデータは出ていないと説明しました。名前が挙がったことは、その企業のデータが出たことを示しません。主張が先に広まった段階の読み方は メルカリ情報漏洩の主張|2,400万件のデータ販売は未確認、分かっていることと利用者の備え でも扱いました。

TiDB Cloud の利用者がとる対策

WHAT USERS SHOULD DO利用者がやること

持ち出されたSQL の中身から先に見直す

  1. 1.SQL エディタに書いた文を見直す

    パスワード・API キー・個人情報があれば差し替える

  2. 2.API キーと DB のパスワードを替える

  3. 3.PingCAP を名乗るメールに注意

    リンクを開かず、コンソールを直接開いて確かめる

  4. 4.接続元を絞り、記録を見る

    IP アクセスリストと監査ログ。監査ログは既定で無効

当サイトの推奨。機能名は TiDB Cloud の公式ドキュメント(docs.pingcap.com)による

以下は当サイトの推奨で、PingCAP の発表が示した手順ではありません。PingCAP から個別の連絡が来たら、そちらを優先してください。

SQL エディタと Chat2Query に書いた文を見直す

SQL Editor の SQL Files タブで、保存したファイルを順に開きます。SQL Editor は AWS 上の Starter で使え、Dedicated ではサポートに頼んで使う機能です。使ったことが無ければ、この項は飛ばしてかまいません。

・CREATE USER … IDENTIFIED BY '…' と ALTER USER … IDENTIFIED BY '…'、SET PASSWORD
・接続文字列、ほかのサービスの API キーやトークンを値に入れた INSERT・UPDATE
・顧客の氏名・メールアドレスなどの個人情報を条件や値に書いた文
・Chat2Query に打った質問文(表の名前や業務の内容が入っていることがある)

見つけたら、そのパスワードや鍵を差し替えます。ファイルを消しても、持ち出された写しは消えません。個人情報が入っていた場合は、自社の個人情報の担当に伝えてください。SQL Files に何も無くても、書いていないとは限りません。発表が言う「テキストとエラー」が保存したファイルと同じものかは分かっていないので、打った覚えがあるパスワードは替えておきます。

鍵・パスワード・接続元・記録

やること TiDB Cloud の機能 注意
DB ユーザーのパスワードを替える Dedicated はコンソールの Password Settings(root)。ほかのユーザーは SQL の ALTER USER 新しいパスワードを SQL エディタに打つと、また同じ場所に残る。アプリの接続文字列と秘密情報の置き場も同時に更新する
API キーを作り直す 組織の API キー(公開鍵と秘密鍵の組)。Data Service の API キーは Data App ごとの別物 新しいキーに切り替えてから古いキーを削除する。作成・削除はコンソール監査ログの記録対象
接続元を絞る Dedicated は IP アクセスリスト、Starter・Essential は公開エンドポイントのファイアウォールルール。Private Endpoint 「Allow access from anywhere」は公式ドキュメントも高リスクとしている
記録を見る DB 監査ログとコンソール監査ログ(保存90日) どちらも既定で無効。有効にする前の操作は残っていない
フィッシングに備える — メールアドレスと組織名が出ている。「再設定」「請求の確認」のリンクを開かず、コンソールを直接開く

アクセスキー漏洩を防ぐ|開発用クラウドの長期キーをやめ、漏れても使えず気づける形にする手順と、漏れた最初の1時間 で扱ったとおり、鍵を替えたら古い鍵が本当に使えなくなったかまで確かめて、作業は終わりです。

手元のリポジトリとメモに残った接続情報と SQL を探す

SQL エディタに貼った文は、手元のリポジトリやメモから写したものかもしれません。次の2つは値を表示せず、ファイル名とコミットだけを出します。1つ目は TiDB Cloud のホスト名とパスワード入りの接続文字列、2つ目はパスワードを書いた SQL を探します。

git fetch --all --prune
# 追跡中のファイルで TiDB Cloud のホスト名を含むものを、ファイル名だけ出す
git grep -l -I -E 'tidbcloud\.com'
# パスワード入りの接続文字列(mysql://ユーザー:パスワード@…tidbcloud.com)を含むファイル
git grep -l -I -E 'mysql://[^:/@ ]+:[^@ ]+@[^ ]*tidbcloud\.com'
# 過去のコミットに入ったことがあるか(消したファイルも含む。値は出さず、コミットとファイル名だけ)
git log --all -G 'tidbcloud\.com' --format='%h %ad %s' --date=short --name-only
# Git で追跡していないファイル(.env など)も含めて、作業ディレクトリを探す
grep -rlI --exclude-dir=.git -E 'tidbcloud\.com' .
git fetch --all --prune
# パスワードを書いた SQL(IDENTIFIED BY '…'・SET PASSWORD)を含む追跡中のファイル名だけ出す
git grep -l -I -i -E "identified( with [a-z_]+)? by ['\"]|set password"
# 過去のコミットに入ったことがあるか(消したファイルも含む。値は出さず、コミットとファイル名だけ)
git log --all -i -G "identified( with [a-z_]+)? by ['\"]|set password" --format='%h %ad %s' --date=short --name-only
# Git で追跡していない書き出しやメモ(.sql・.md など)も含めて、作業ディレクトリを探す
grep -rliI --exclude-dir=.git -E "identified( with [a-z_]+)? by ['\"]|set password" .

ダミーのリポジトリで、追跡中のファイル・削除済みのコミット・追跡外のファイルに置いた接続文字列と CREATE USER … IDENTIFIED BY・IDENTIFIED WITH … BY・SET PASSWORD がそれぞれ出ること、パスワードを含まない CREATE USER と説明文の「identified by」が出ないこと、関係の無いリポジトリでは何も出ないことを確かめています。

何も出なくても、パスワードが漏れていないとは限らない点に注意してください。見ているのはこのリポジトリと作業ディレクトリだけで、SQL エディタの中身、チャット、ほかのリポジトリ、端末の履歴は見ていません。SET PASSWORD は説明文にも当たるので、出たファイルは中を見て判断します。秘密情報全般を探すには、シークレットスキャンの入れ方|gitleaksをコミット前・プッシュ時・CIの3層に組み込み誤検知を絞る の gitleaks を使ってください。

監査ログで普段と違う接続元を数える

DB 監査ログには接続元の IP(CLIENT_IP)が記録されます。公式ドキュメントは項目を列挙するだけで、1行の書式までは示していません。次のコマンドは CLIENT_IP=…・CLIENT_IP="…"・"CLIENT_IP":"…" のどの形でも IPv4 を拾うように書いた例です。先に head -n 3 でログの形を見て、合わなければ正規表現を直してください。

# 監査ログを置いたディレクトリ(例: ./audit-logs)で、接続元IPごとの件数を多い順に出す
grep -rhoE 'CLIENT_IP[^0-9]{1,4}[0-9.]+' ./audit-logs | grep -oE '[0-9.]+$' | sort | uniq -c | sort -rn
# 許可している接続元の一覧(allowed_ips.txt、1行に1つ)に無いIPだけを出す
grep -rhoE 'CLIENT_IP[^0-9]{1,4}[0-9.]+' ./audit-logs | grep -oE '[0-9.]+$' | awk 'NR==FNR {ok[$1]=1; next} !($1 in ok) {n[$1]++} END {for (ip in n) print n[ip], ip}' allowed_ips.txt - | sort -rn

3つの書式を混ぜたダミーのログで、一覧に無い2つの IP だけが2つ目に出ること、許可済みの IP だけのログでは何も出ないことを確かめています。allowed_ips.txt は IP を1つずつ書く形で、CIDR の範囲は扱いません。

一覧に無い IP が出ても、それだけでは侵入とは判断できません。新しい CI のランナーや在宅の接続かもしれません。何も出なくても安全とは言えず、監査ログを有効にする前の接続は残っていません。AWS PrivateLink 経由の接続はロードバランサーの IP が記録される場合もあります。説明のつかない接続があれば PingCAP のサポートに相談します。

セルフホストの TiDB と影響範囲

立場 発表で当たるもの やること
SQL エディタ・Chat2Query を使った TiDB Cloud の利用者 ユーザー名・メールアドレス・組織とプロジェクト、SQL エディタのテキストとエラー 書いた文の見直しと差し替え
TiDB Cloud の契約・請求の担当者 顧客の連絡先・契約条件・注文・価格・支払条件・請求の設定 請求や契約の変更を装う連絡は、既知の窓口で確かめる
TiDB Cloud にデータを置くアプリの利用者 TiDB に保存されたデータへの影響の証拠は無い(PingCAP) 運営元の案内を待つ
セルフホストの TiDB の利用者 今回の記録には含まれない セキュリティアドバイザリを見る

TiDB 本体は Apache 2.0 の OSS で、自分のサーバーで動かす TiDB のデータは PingCAP のクラウドにはありません。気にかけておく点はソースコードの取得です。公開リポジトリの中身が出ても新しい弱点にはなりませんが、非公開の部分が含まれていた場合は、そこから脆弱性が見つかる可能性が残ります。PingCAP の Security Vulnerabilities のページと、GitHub の pingcap/tidb の Security タブ(SECURITY.md とアドバイザリ)を見ておけば、修正が出たときに気づけます。

続報では次の点を見ると、自分の対応を見直しやすくなります。

・顧客ごとの範囲の確定と、PingCAP からの個別の連絡
・ほかの認証情報が出ていないかの調査結果と、API キーの差し替えを求めるかどうか
・修正前の脆弱性4件が悪用されていなかったかの結果

続報が出たら、本記事も更新します。

参照ソース