Wiz Research Teamは最近、IBM Cloudにサプライチェーンの脆弱性を発見した。クラウドプロバイダーのインフラに影響を及ぼすものとしては初めてだという。
彼らはこの脆弱性を、劇的な趣向から「Hell’s Keychain」と名付けた。
セキュリティ上の問題は8月下旬にIBM Cloudへ報告され、9月初旬に修正された。修正前は、この脆弱性を知る攻撃者が、PostgreSQLを利用するIBM Cloudの顧客が保存しているデータを改変したり、悪意あるコードを実行したりできた。
アクセスへのレシピ:禁断のリンクとキーチェーンの秘密
Wizの研究者であるRonen Shustin、Shir Tamari、Nir Ohfeld、Sagi Tzadikは、ブログ記事で、「私たちの経験では、クラウドサービスプロバイダー(CSP)を標的とするサプライチェーン攻撃のレシピには、2つの要素がある。禁断のリンクとキーチェーンだ。禁断のリンクはネットワークアクセスを表す。具体的には、本番環境とビルド環境をつなぐリンクである」と記している。
キーチェーンは、「攻撃者が標的環境全体から見つけ出す、1つ以上の分散した秘密情報の集合を象徴する。どちらの要素も個別には不衛生だが、組み合わさると致命的な複合体を形成する」と彼らは説明している。
Hell’s Keychainの場合、3つのキーチェーンの秘密情報は、Kubernetesのサービスアカウントトークン、非公開コンテナレジストリのパスワード、CI/CDサーバーの認証情報だった。禁断のリンクは、個人用PostgreSQLインスタンスとIBM Cloud Databasesのビルド環境を接続していた。
関連記事:
SQLインジェクションとコンテナレジストリのスクレイピング
研究者はまず、SQLインジェクションの脆弱性を発見した。これにより、データベースインスタンスをホストする基盤の仮想マシン上で任意のコマンドを実行できたため、内部環境をマッピングし、新たな攻撃対象領域を探すのに利用した。
彼らの行動によりIBM Cloudのセキュリティチームからアラートが発せられたが、最終的に研究を続ける許可が与えられた。
環境を調査する中で、研究者はKubernetes APIトークンを発見した。これを使ってKubernetes APIにアクセスし、PostgreSQLインスタンスを実行している他のポッドの一覧を確認した。その後、コンテナレジストリのスクレイピングを行い、複数のコンテナレジストリへのアクセスに使える4つの認証情報を見つけた。
「IBM CloudのIAM APIを照会したところ、これはIBM CloudのContainer Registry ImagesにアクセスできるAPIキーで、読み書き権限があるように見えた。そこで、ibmcloud-cliを使い、このキーで特定のコンテナレジストリにログインした」と彼らは記している。
キーの説明は不正確で、コンテナレジストリへの書き込みはできなかったことが判明したものの、研究者は発見を深刻なものと捉えた。「悪意ある攻撃者がこの認証情報を入手していたら、IBM Cloudのマネージドデータベースサービスに属する数百のイメージを取得し、調査できた可能性がある」と彼らは記している。
関連記事:SQLインジェクション攻撃を防ぐ方法
IBM Cloudのビルドサーバーへのネットワークアクセス
研究者はアクセスできたコンテナイメージをスキャンし、見落とされていたファイルの中から、FTPの認証情報やIBM Cloudの内部サービス用の内部アーティファクトリポジトリの認証情報など、複数の機密性の高い秘密情報を発見した。
続いて、コンテナイメージのビルドに使われた過去のコマンドを調べ、どのアーティファクトが関係しているかを確認した。「PostgreSQLインスタンスをホストするマシンからこれらのサーバーにアクセスしようとしたところ、IBM Cloud内部のビルドサーバーにネットワークアクセスできることが分かり、私たちは衝撃を受けた。次に、アーティファクトリポジトリの認証情報を使ってサーバーへの認証を行い、その結果、禁断のリンクを実際に発見した」と彼らは記している。
最後に、研究者はPostgreSQLイメージのビルドプロセスで使われるリポジトリにファイルを作成し、権限をテストした。「これにより、すべてのPostgreSQLインスタンスにインストールされるはずのパッケージ内にある任意のファイルを上書きできることが証明され、サプライチェーン攻撃への経路が確立された」と彼らは記している。
学ぶべき教訓
Wizの研究者は、Hell’s Keychainについて、「環境全体に分散した平文の認証情報が、完全性やテナント分離を損なうことで、組織に大きなリスクをもたらし得ることを示している。さらに、この脆弱性は厳格なネットワーク制御の必要性を浮き彫りにするとともに、ポッドからKubernetes APIへアクセスできることが、コンテナレジストリの無制限な公開やスクレイピングにつながり得る、よくある設定ミスであることを示している」と述べている。
研究者によると、今回の発見から学ぶべき重要な教訓は3つある。
- 環境内に分散した秘密情報を常に監視する
- 本番環境に厳格なネットワーク制御を適用する
- 悪意ある攻撃者によるスクレイピングを防ぐよう、コンテナレジストリを設定する
「IBM Cloudは、私たちが発見した脆弱性とセキュリティ上の問題を迅速に調査し、修正した。問題に速やかかつ専門的に対処し、非常に真摯に受け止めてくれたIBM Cloudのセキュリティチームと仕事ができたことをうれしく思う」と彼らは記している。
関連記事:





