ソフトウェアサプライチェーン攻撃は、クラウドIDの侵害へと進化しつつあります。攻撃者は信頼されたパッケージを悪用し、アプリケーションが実行される前の段階で、開発者のワークステーションやCI/CD環境から認証情報を盗み出します。
その結果、危険な「ピボット」が起こります。日常的な依存関係のインストールが、クラウドアカウント、ソースコードリポジトリ、コンテナプラットフォーム、シークレット管理システム、さらには本番リソースへのアクセスを攻撃者に与えかねません。
最初の侵害は、一見正当なパッケージの更新から始まることが多くあります。開発者が依存関係をインストールしたり、自動化されたパイプライン中にビルドランナーが新バージョンを取得したりするケースです。
ビルド自体は正常に完了するかもしれません。しかし、インストール中に悪意のあるライフサイクルスクリプトが実行され、環境変数、ローカル設定ファイル、プロセスメモリ、クラウドメタデータサービス、トークンストアを即座に列挙します。
このため、開発環境は単にコードを書く場所ではなく、クラウドへの価値の高い侵入口となっています。
MicrosoftによるMini Shai-Huludキャンペーンの分析では、悪意のある@antvのnpmパッケージがpreinstallフックを使い、npm installの実行中に難読化されたペイロードを動かしていたことが明らかになりました。
ワークステーションやビルドランナーには、AWSアクセスキー、Azure CLIセッション、GCPサービスアカウントの認証情報、GitHubパーソナルアクセストークン、npm公開用トークン、Kubernetesのkubeconfigファイル、SSH鍵、Vaultトークン、デプロイ用シークレットなどが保管されていることがよくあります。
これらの認証情報は、~/.aws/credentials、~/.kube/config、.npmrc、.netrcといった予測しやすい場所に置かれがちです。そのため、侵害された依存関係からクラウドへの偵察やアカウント乗っ取りまで、攻撃者は短い経路で到達できます。
Qualysの研究者によると、このマルウェアはGitHub Actions、AWS、Kubernetes、HashiCorp Vault、npm、1Passwordの各環境の認証情報を狙っていました。
アンチウイルス&マルウェア
コードはインストール対象のアプリケーションが起動する前に実行されるため、インストールを中止したり、実行時の動作を避けたりしても、認証情報の窃取を防げるとは限りません。
サプライチェーン侵入の手口
この活動は、攻撃者の典型的な手口を示しています。まずメンテナーのアカウントや公開用の認証情報を侵害します。次に、正規の依存関係にインストール時に動く悪意あるペイロードを仕込みます。そして下流の環境から認証情報を盗み、それを使って侵入範囲を広げます。

盗まれたnpmトークンやGitHubトークンは、さらなるパッケージ改ざんに利用される恐れがあります。クラウド認証情報からは、IAMロール、ストレージバケット、仮想マシン、サーバーレス関数、シークレットストア、Kubernetesワークロードなどを探索される可能性があります。
MITRE ATT&CKは、この挙動をT1195.001「Compromise Software Dependencies and Development Tools」として整理しています。これは、ソフトウェアが最終利用者に届く前に、攻撃者が依存関係や開発ツールを操作する手法を指します。
現代のクラウド環境では、この初期アクセス手法が、認証情報の窃取、正規アカウントの悪用、クラウドサービスの探索、データ収集、永続化などと素早く結びつきます。
最大のリスクは、従来のパッケージ削除の手順だけでは不十分な点です。悪意ある依存関係を削除しても、侵入経路の一つを断つにすぎません。実行中に収集された認証情報までは無効になりません。
攻撃者がCI/CDのシークレット、クラウドアクセスキー、リポジトリトークン、メタデータ由来のワークロード認証情報にアクセスしていた場合、すでに環境へ戻る有効な経路を確保している可能性があります。
組織は、インストール時のパッケージ侵害が確認された場合、それを潜在的なID関連インシデントとして扱うべきです。
インシデント対応担当者は、影響を受けたワークステーションやランナーからアクセス可能だったすべての認証情報を特定する必要があります。そのうえで、露出したトークンを失効させてローテーションし、露出期間全体のクラウド監査ログを確認します。あわせて、リポジトリやパッケージレジストリの活動を調べ、新たに作成されたIAMロール、アクセスキー、ワークフローファイル、SSH authorized keysも調査します。
予防策では、実行の機会と認証情報が漏れた際の影響の両方を減らす必要があります。CIパイプラインでは、不要なライフサイクルスクリプトを無効化し、依存関係のロックファイルの整合性を強制します。承認済みのプライベートレジストリを使い、新リリースを自動で受け入れるのではなく、安全が確認されたバージョンに固定することも有効です。
ビルド要件に支障がなければ、npmのインストールでは--ignore-scriptsまたは同等の制御を使い、信頼できないpreinstallやpostinstallの実行を防ぐべきです。
クラウド認証情報も、有効期間が短く、権限範囲が狭く、ワークロードに紐づいたものにする必要があります。可能な限り、長期間保存されるキーをOIDCベースのフェデレーションに置き換えてください。ビルドジョブにデプロイ権限を持たせないようにし、クラウドのインスタンスメタデータサービスも保護します。
たとえばAWS環境では、IMDSv2を強制することで、メタデータからの単純な認証情報の収集を大幅に難しくできます。
Qualys TotalCloudは、AWS、Azure、GCPにまたがるID、セキュリティ態勢、ワークロード、インベントリ、機密データのシグナルを、セキュリティチームが結びつけて把握するのに役立ちます。
クロスサイトスクリプティング対策
機能としては、露出したシークレットの特定、リスクの高い権限経路の可視化、TruRiskに基づく文脈による危険なクラウドアクセス状態の優先順位付けなどがあります。
SOCのアラート調査を1件あたり21分短縮。即座にIOCのコンテキストを得て、迅速な対応を実現します。 SOCにTI Lookupを導入する
翻訳元: https://gbhackers.com/supply-chain-intrusions/