はじめに
最近、Wiz社が公開した「Miasma」というサプライチェーン攻撃の調査レポートを読みました。
最初は、
Red Hatのnpmパッケージが改ざんされたらしい
程度の認識でしたが、内容を追っていくと単なるマルウェア混入ではなく、
「信頼されている開発環境そのものが攻撃対象になる時代」
を象徴する事例だと感じました。
今回は自分の理解整理も兼ねてまとめてみます。
サプライチェーン攻撃とは
サプライチェーン攻撃とは、利用者ではなく、その利用者が信頼している仕組みを攻撃する手法です。
例えば以下のような構成があったとします。
開発者
↓
GitHub
↓
CI/CD
↓
npm
↓
利用者
攻撃者は利用者を直接攻撃するのではなく、
- GitHubアカウント
- CI/CD環境
- npmパッケージ
などを侵害します。
結果として利用者は、
npm install
を実行しただけにも関わらず、攻撃者のコードを実行してしまう可能性があります。
今回のMiasma攻撃の概要
今回の事例では、Red Hat関連のnpmパッケージが侵害されました。
攻撃の流れを簡略化すると以下のようになります。
開発者アカウント侵害
↓
GitHubリポジトリ改ざん
↓
GitHub Actions実行
↓
npmへ公開
↓
利用者がインストール
↓
認証情報窃取
重要なのは、
正規の開発フローを悪用している
という点です。
なぜ検知が難しいのか
一般的に悪意あるパッケージは、
- 作成者が不明
- ダウンロード数が少ない
- 怪しいコードが含まれる
などの特徴があります。
しかし今回のケースでは、
正規のGitHubリポジトリ
↓
正規のGitHub Actions
↓
正規のnpm公開
という流れで公開されていました。
利用者から見ると、
いつものアップデート
にしか見えません。
つまり脆弱性を突く攻撃ではなく、
「信頼」を悪用する攻撃
だったということです。
マルウェアが狙っていたもの
今回のMiasmaは主に以下の認証情報を収集していました。
GitHub関連
- Personal Access Token (PAT)
- GitHub Actions Token
- SSH Key
クラウド関連
- AWS認証情報
- Azure認証情報
- GCP認証情報
CI/CD関連
- Pipeline Secrets
- Build Server認証情報
もしCI/CD環境の認証情報が漏洩すると、そこから別のリポジトリやクラウド環境へ侵害が連鎖する可能性があります。
実務目線で感じたこと
現在私はAWS移行案件に携わっています。
今回の事例を見て感じたのは、
ソースコードだけをレビューしても不十分
ということです。
従来は、
- ソースコード
- 設計書
- アプリケーション脆弱性
に注目していればよかったかもしれません。
しかし現在は、
- GitHub
- GitHub Actions
- Docker Image
- npm Package
- OIDC設定
- Secrets管理
なども含めて考える必要があります。
特に、
開発環境
↓
CI/CD
↓
クラウド
が密接に接続されている現代では、一箇所の侵害が大きな被害につながる可能性があります。
CTFとの違い
普段CTFをやっていると、
Webアプリの脆弱性
↓
権限昇格
↓
フラグ取得
という流れを意識することが多いと思います。
一方で今回のケースは、
認証情報窃取
↓
開発環境侵害
↓
CI/CD侵害
↓
サプライチェーン侵害
という流れです。
どちらも攻撃ですが、狙う対象や考え方が大きく異なります。
そのため、CTFだけでは見えない攻撃手法を学ぶ良い機会になりました。
まとめ
今回のMiasmaから学べることは、
「アプリケーションの脆弱性を直せば安全」という時代ではなくなっている
ということです。
重要なのは、
信頼している仕組みをどう守るか
です。
今後は以下のような取り組みがさらに重要になると感じました。
- SBOM
- Dependency Scanning
- Sigstore
- SLSA
- Secret Management
- Least Privilege
セキュリティというとWebアプリケーションの脆弱性診断に目が行きがちですが、今回のようなサプライチェーン攻撃についても継続的に学習していきたいと思います。
参考
- Wiz Research: Miasma Supply Chain Attack Targeting Red Hat npm Packages
- Red Hat Security Advisory
- GitHub Actions Security Best Practices