2025年9月23日Ravie Lakshmananサプライチェーン攻撃 / マルウェア
GitHubは月曜日、npmエコシステムを標的とした最近のサプライチェーン攻撃の波(Shai-Hulud攻撃を含む)を受けて、「近い将来」認証および公開オプションを変更することを発表しました。
これには、トークンの悪用や自己増殖型マルウェアによる脅威に対処するため、2要素認証(2FA)を必須としたローカルでの公開、7日間の有効期限を持つグラニュラートークン、およびOpenID Connect(OIDC)を利用してCI/CDワークフローから直接npmパッケージを安全に公開できるトラステッドパブリッシングが含まれます。
トラステッドパブリッシングは、npmトークンの必要性を排除するだけでなく、短命でワークフロー固有の資格情報を使用して各公開を認証することで暗号学的な信頼を確立します。これらの資格情報は流出や再利用ができません。さらに重要なのは、npm CLIがパッケージの証明書(プロベナンスアテステーション)を自動生成・公開することです。
「トラステッドパブリッシング経由で公開されたすべてのパッケージには、そのソースとビルド環境の暗号学的証明が含まれています」とGitHubは2025年7月末に述べています。「ユーザーはパッケージがどこでどのようにビルドされたかを検証でき、サプライチェーンへの信頼が高まります。」
これらの変更をサポートするため、マイクロソフト傘下の同社は以下のステップを実施すると述べています。
- 従来のクラシックトークンを非推奨にする。
- 時限ワンタイムパスワード(TOTP)2FAを非推奨とし、FIDOベースの2FAへ移行する。
- 公開権限を持つグラニュラートークンの有効期限を短縮する。
- デフォルトでトークンによる公開アクセスを許可しない設定にし、トラステッドパブリッシャーまたは2FA強制のローカル公開の利用を推奨する。
- ローカルパッケージ公開時の2FA回避オプションを削除する。
- トラステッドパブリッシングの対象プロバイダーを拡大する。
この動きは、Shai-Huludというコードネームのサプライチェーン攻撃が、数百のnpmパッケージに自己増殖型ワームを注入し、開発者のマシンをスキャンして機密情報を攻撃者管理のサーバーに送信した事件から1週間後に発表されました。
「自己増殖と複数種類のシークレット(npmトークンだけでなく)の窃取能力を組み合わせることで、このワームはGitHubとオープンソースメンテナによる迅速な対応がなければ、無限に攻撃が続いていた可能性があります」とGitHubのXavier René-Corailは述べています。
npmパッケージにQRコードベースの手法が含まれる #
この発表は、ソフトウェアサプライチェーンセキュリティ企業Socketが、ステガノグラフィ(情報隠蔽)技術を使ってブラウザのパスワードを収集できる悪意あるnpmパッケージfezboxを発見したと発表したタイミングで行われました。このパッケージはすでにnpmからダウンロードできなくなっています。2025年8月21日の初公開以来、合計476回ダウンロードされました。
「このパッケージでは、脅威アクター(npmエイリアス:janedu、登録メール:janedu0216@gmail[.]com)が、QRコード内でペイロードを実行し、ウェブクッキー内のユーザー名とパスワード認証情報をブラウザから盗み出します」とセキュリティ研究者のOlivia Brownは述べています。
Fezboxは一般的なヘルパー関数からなるJavaScriptユーティリティを装っていますが、実際にはリモートURLからQRコードを取得し、それを解析してURL内に含まれるJavaScriptペイロードを実行する隠密なコードが含まれています。
ペイロードはdocument.cookieを読み取り、クッキーからユーザー名とパスワード情報を抽出し、HTTPSのPOSTリクエストで外部サーバー(”my-nest-app-production>.up.railway[.]app”)に送信します。
「ほとんどのアプリケーションはもはやクッキーにパスワードそのものを保存しないため、このマルウェアがどれほど成功したかは判断が難しいです」とBrownは述べています。「しかし、さらなる難読化のためにQRコードを使うのは脅威アクターによる創造的な工夫です。この手法は脅威アクターが難読化技術を進化させ続けていること、そして依存関係をチェックする専用ツールの重要性がこれまで以上に高まっていることを示しています。」
翻訳元: https://thehackernews.com/2025/09/github-mandates-2fa-and-short-lived.html