SAP公式npmパッケージが改ざん被害——CI/CDのシークレットを根こそぎ盗むサプライチェーン攻撃を解説
「公式パッケージなら安全」——その前提が崩れたとき、被害は一気に広がる。2026年4月末、SAP公式のnpmパッケージ複数件が改ざんされ、インストールするだけでクラウド認証情報からKubernetesシークレットまで根こそぎ奪われる攻撃が報告された。SAPのエコシステムを利用する開発チームは、今すぐ影響範囲を確認してほしい。 何が起きたか セキュリティ研究者AikidoとSocketが報告したところによると、以下のSAP公式パッケージの特定バージョンに悪意あるコードが混入していた(現在はNPM上でdeprecated=非推奨): @cap-js/sqlite v2.2.2 @cap-js/postgres v2.2.2 @cap-js/db-service v2.10.1 mbt v1.2.48 これらはSAPのCloud Application Programming Model(CAP)やCloud MTA Builderとして、エンタープライズ開発で広く使われているパッケージだ。 攻撃の仕組み 改ざんされたパッケージには、npmの preinstall フックを悪用した悪意あるスクリプトが仕込まれていた。npm install を実行するだけで、ユーザーが何も意識することなく攻撃コードが走る。 動作フロー: GitHubからBun JavaScriptランタイムをダウンロード 難読化された execution.js ペイロードを実行 開発者マシンとCI/CD環境から認証情報を収集・外部送信 窃取対象は広範囲にわたる: npmおよびGitHubの認証トークン SSHキーと開発者認証情報 AWS・Azure・Google Cloudのクラウド認証情報 Kubernetesの設定ファイルとシークレット CI/CDパイプラインのシークレットと環境変数 特に注目すべきは、CIランナーのメモリを直接読み取る手法だ。Linuxの /proc/<pid>/mem を参照してRunnerプロセスからシークレットを抽出し、CIプラットフォームのログマスキングを完全にバイパスする。この手法はBitwarden・Checkmarxへの過去の攻撃でも確認されており、同一構造だとSocketは指摘している。 収集データは暗号化されたうえで、被害者のGitHubアカウントに「A Mini Shai-Hulud has Appeared」という説明文付きリポジトリとして公開される。さらに、窃取したnpm・GitHub認証情報を使って他のパッケージに同じ悪意あるコードを注入し、自己増殖を試みる設計になっている。 今回の侵害の起点については、CircleCIジョブの設定ミスを経由してNPMトークンが漏洩した可能性が指摘されている。本攻撃は「TeamPCP」と呼ばれる脅威アクターと中程度の確信度で結び付けられており、Trivy・Checkmarx・Bitwarden への攻撃でも類似の手口が確認されている。 実務への影響 今すぐ確認すること SAP CAPやCloud MTAを利用しているプロジェクトでは、以下を即座に実施してほしい: バージョン確認:npm list @cap-js/sqlite @cap-js/postgres @cap-js/db-service mbt を実行し、問題バージョンが含まれていないかチェック 認証情報のローテーション:該当期間にnpm installを実行した環境では、クラウド認証情報・GitHubトークン・SSHキーをすべて無効化してローテーション CI/CDシークレットの棚卸し:疑いがあるパイプラインのシークレットは即時ローテーション 中長期的な対策 npm ci と package-lock.json の徹底:CI上では npm ci で固定バージョンのみインストールし、ロックファイルを必ずコミット管理する preinstallスクリプトの制限:.npmrc に ignore-scripts=true を設定することで、ライフサイクルスクリプトを無効化できる(正規ビルドスクリプトへの影響は要確認) NHI(Non-Human Identity)の最小権限管理:CI/CDで使用するトークン・サービスアカウントは最小権限で運用し、定期的にローテーションする仕組みを整備する SCA(Software Composition Analysis)ツールの導入:パッケージのインストール前に挙動やシグネチャを検証するツールをパイプラインに組み込む 筆者の見解 今回の攻撃が改めて示したのは、CI/CDパイプラインそのものがセキュリティ境界であるという現実だ。 ...