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



