警戒被害が起きている。または、起きれば重く広い

GitHub 乗っ取り4,837件、CI の鍵を盗むコードが拡散

盗まれた GitHub アカウント 4,837 件が、GitHub Actions の秘密情報を盗むコードを多数のリポジトリへ仕込んだ。Aikido と SafeDep の報告をもとに、確認方法と対策を整理する。

要点

  • 盗まれた GitHub アカウント 4,837 件が使われ、開発の自動処理(CI)から鍵やパスワードを盗むコードが、多数のリポジトリ(ソースコードの置き場)に仕込まれた。
  • Aikido Security の報告では、少なくとも 1,806 のリポジトリで盗むコードが動いた形跡がある。クラウドの鍵まで盗まれれば、被害は GitHub の外へ広がる。
  • 攻撃は 2026 年 11 月 10 日から始まり、SafeDep によると 12 日時点でも続いていた。

何が起きたか

Aikido Security は 11 月 12 日に報告を公開した。攻撃者は、盗んだ認証情報(トークン)を持つ 4,837 件の GitHub アカウントを使った。まず、そのアカウントで書き込めるリポジトリに、試し用のプルリクエスト(変更の提案)を送った。題は「docs: dependency audit notes」、枝の名前は wfx-docs だった。この題のプルリクエストは約 61,800 件ある。うち 10,431 件は、アカウントの持ち主ではないリポジトリに入った。共同作業者や組織の権限で書き込めたためだ。

そのうち、盗むコードが実際に動いた形跡があるのは少なくとも 1,806 のリポジトリだ。Aikido は、実際の影響はこれより大きいかもしれないとしている。

SafeDep は別に数えており、悪意ある変更が入ったリポジトリは 8,093 だった。多くは、既存の自動処理(GitHub Actions のワークフロー)に書き足す形だった。SafeDep は、数えたのが公開リポジトリの既定の枝だけなので、実際の数はもっと多いとしている。

盗む対象は広い。Actions に登録した秘密情報、GitHub 自身のトークン、AWS・Azure・GCP などのクラウドの鍵、パッケージ公開用の鍵、SSH の鍵などだ。Aikido は、盗むコードにクラウドへ入口を残す機能があったと説明している。たとえば AWS の権限設定を誰でも使える形にしたり、Azure に新しい認証設定を足したりする。実際にそうした入口が作られたかどうかは、報告からは分からない。

パッケージにも影響が出た。Packagist の digitalelvis/neuronai-studio 3.14.3 などだ。Aikido は、盗まれたアカウントのうち少なくとも 50 が、パッケージの公開者とみられるとしている。

SafeDep によると、コミット(変更の記録)は本人のアカウントとして署名なしで作られていた。SafeDep は、これをトークンが盗まれた証拠と見ている。Aikido によると、10 月の GhostAction の波と重なるアカウントはある。ただし Aikido は、今回を別の攻撃者による別の作戦とみている。アカウントがどう盗まれたかは、確かめられていない。

日本の利用者への影響

Aikido と SafeDep の報告には、日本への言及がない。日本での被害の有無は不明だ。ただし GitHub と GitHub Actions は日本の開発現場でも広く使われている。自分のアカウントが盗まれていれば、国や組織に関係なく当たる。

今すぐやること

  1. 自分や組織のリポジトリに、wfx-docs という枝や「docs: dependency audit notes」というプルリクエストがないか探す。SafeDep は、この試し用のプルリクエストだけでも、アカウントが盗まれた印だと見ている。
  2. 見つかったら、そのアカウントに結びつく鍵や許可を全部無効にする。トークン、SSH 鍵、外部アプリへの許可、ログイン中の状態が対象だ。あわせて 2 要素認証(パスワードのほかに別の手段でも本人確認する仕組み)を有効にする。
  3. そのリポジトリから読めた秘密情報は、すべて新しいものに替える。組織や環境ごとの設定も忘れない。
  4. AWS・Azure などで、身に覚えのない認証設定が増えていないか確かめる。Aikido は、実行記録が消されている例があると報告している。Actions の実行番号が抜けていないかも見る。
  5. 今後に備え、ワークフローの権限を最小にし、長期の鍵ではなく短期のトークンを使う。変更の承認を必須にする。

背景

CI の仕組みは、秘密情報を読める場所に置かれることが多い。今回のように、攻撃者がそこを狙う例は珍しくない。Aikido によると、今回の件は、2025 年 9 月に見つかり 10 月に広がった GhostAction と、盗まれたアカウントが一部重なっている。盗まれた認証情報は、複数の攻撃者の手に渡ることもある。鍵を入れ替えないまま残すと、次の攻撃に使われる。

技術者向けの詳細
  • 開始: 2026-11-10 12:45 UTC ごろ(日本時間 21:45)。SafeDep の集計では 11-12 04:36 UTC まで確認。
  • 試し用 PR の題: docs: dependency audit notes。枝: wfx-docs。ほかに chore/[a-z0-9]{8}、ci-check-[0-9]{4}。
  • コミットメッセージ: ci: refresh build cache、ci: restore、ci: cleanup、chore: add ci helper、chore: add dependency audit workflow。
  • ファイル: build-audit-<乱数>.yml、隠しスクリプト .ci-<乱数>.sh、npm の postinstall フック。
  • 注入の内訳(SafeDep): 既存ワークフロー改変 7,309、postinstall 771、空リポジトリへの新規ワークフロー 16。
  • Azure: Entra のアプリに wfx-ci-<n> という名前のフェデレーション資格情報がないか確認。
  • AWS: CloudTrail で wfx-<pid> のセッション名による AssumeRole、その後の鍵作成や信頼ポリシー変更を確認。
  • GCP: GitHub の workload identity pool からのトークン生成・JWT 署名を確認。Vault は GitHub OIDC 発行元からの JWT ログインを確認。
  • 通信先(無害化): 194.150.166[.]244:8080、18.143.168[.]96:8080、153.75.82[.]159:8080、および Telegram。
  • 影響パッケージ: Packagist digitalelvis/neuronai-studio 3.14.3(npm install 経由でのみ動作)。Go github.com/onuragtas/redock(docker-env 名でも配布)v1.0.278・v1.0.280・v1.0.282。
  • Go github.com/vkuznet/gocurl: 疑似バージョン v0.0.0-20261111095532-8d5aad0cb0da(コミット 8d5aad0)に build.yml への追記のみ。SafeDep によると、タグ push で動く設定のため、このワークフローは未実行。
  • 影響コミットで npm install を実行した端末は、侵害されたものとして鍵を入れ替える。
  • 詳細は Aikido と SafeDep を参照。

出典

一次情報

報道

参考

記事は、運営者が生成 AI を活用して作成し、内容を確かめたうえで公開しています。 誤りに気づいたら編集方針の連絡先へ。

次に読む

同じタグの記事