■ 1. 事件の概要
- Red Hat公式npmチャンネル「@redhat-cloud-services」配下の32パッケージ、計96バージョンが侵害された
- 週11万6991回ダウンロードされていたパッケージに、開発者の認証情報を盗むワーム型マルウェアが配布されていた
- セキュリティ企業Aikidoによって発見・報告された
■ 2. 攻撃の手口
- 攻撃経路:
- Red Hat従業員のGitHubアカウントが侵害され、複数のリポジトリにコードレビューを回避する形で悪意ある孤立コミットが直接投入された
- GitHub Actions OIDCを使ったパッケージ公開フローが悪用され、見かけ上は正規の手順で公開されたように見えた
- 不正なGitHub Actions設定:
- 攻撃者はRed Hatの開発用リポジトリに、パッケージ公開処理を自動実行する不正なワークフロー設定ファイルを追加した
- GitHubから短時間有効な認証情報を取得し、npmの公式な公開経路からバックドア入りパッケージを登録する仕組みだった
- 自動実行の仕組み:
- 侵害されたパッケージには、インストール時に自動で実行される仕組みが組み込まれていた
- npm installの実行時やCI環境での依存関係導入時点で悪意あるコードが動作する可能性があった
■ 3. マルウェア「Miasma」の詳細
- 基本特性:
- 約4.2MBの大きなJavaScriptファイルで、何重にも難読化されていた
- 以前からnpmなどのサプライチェーン攻撃で使われてきた「Mini Shai-Hulud」に似た特徴を持つ
- 追加の難読化、多段階の実行処理、より強化された認証情報の収集機能を備えており、改変された派生版とみられる
- 収集対象の情報:
- GitHub Actionsのシークレット
- AWS、Google Cloud、Azureの認証情報
- SSH秘密鍵
- npmおよびPyPIの公開トークン
- Docker認証情報
- .envファイル
- 感染拡大の仕組み:
- 盗み出された認証情報は暗号化されたうえで外部に送信される
- 感染した環境がアクセスできる別のパッケージやリポジトリにもバックドアを仕込もうとするワーム型の挙動を持つ
- 1つの開発環境の侵害が別のプロジェクトへの攻撃につながる危険がある
■ 4. Red Hatの対応と影響範囲
- 対応内容:
- 問題把握後に調査を開始し、影響を受けたパッケージをnpmレジストリから削除した
- 影響範囲の説明:
- 問題のパッケージは社内開発向けに限られており、console.redhat.comを通じて顧客向けに公開されたものではない
- 現時点で顧客、パートナー環境、Red Hatの本番システムへの影響は確認されていない
■ 5. 影響を受けた可能性がある場合の対処
- 影響を受けたパッケージをインストールした可能性がある場合は、開発端末やCI/CD環境が侵害された前提で対応する必要がある
- Aikidoによる推奨対応:
- CIのシークレットを直ちにローテーションする
- クラウド認証情報を直ちにローテーションする
- SSH鍵を直ちにローテーションする
- npmトークンを直ちにローテーションする