Coderは、モジュールレジストリを支えるインフラが身元不明の攻撃者によって侵害され、クラウド認証情報、SSHキー、CI/CDのシークレットなどの機密データを窃取するよう改変されたTerraformモジュールが配信されたことを確認した。
悪意あるモジュールは、8月31日07:35から21:45(UTC)まで、およそ14時間にわたって配信された。Coderによると、同社が保持する顧客データが影響を受けた証拠は見つかっていないが、侵害されたデプロイメントをすべて特定できたとは断定できない。
攻撃者はCoderの信頼されたレジストリ経路を乗っ取った
Coderによると、身元不明の攻撃者が同社のCloudflareインフラにアクセスし、registry.coder.com.
Cloudflareはその後、正規のレジストリリクエストの一部を攻撃者が制御するサーバーにルーティングした。これらのサーバーには、認証情報を窃取するコードを含む、CoderのTerraformモジュールの改変版がホストされていた。
この攻撃はTerraform自体の脆弱性を悪用したものではない。代わりに、信頼されたソフトウェア配信経路が侵害され、Coderの正規レジストリホスト名を通じて悪意あるアーティファクトが届く状態になった。
CoderのCloudflare環境へのアクセスに使われた初期手法は明らかにされていない。
配信された悪意あるモジュールは、プロビジョナー環境を検索し、クラウドおよびAIツールのAPIキー、CI/CD認証情報、設定ファイル内のシークレット、端末履歴、OIDCトークン、SSHキー、ワンタイム認証トークンなど、その他の機密データを探し出した。
プロビジョナーがcoderd内で実行されていた場合、マルウェアはCoderのデータベースパスワードやその他の設定シークレットにもアクセスできた。
窃取された情報は、偽装ドメインcoder-infra[.]com.
Terraformモジュールは認証情報窃取コードを実行できた
Coderは顧客に対し、プロビジョナーのログでdata.external.telemetryを検索するよう呼びかけている。これは、悪意あるモジュールが使用したTerraformの外部データソースを示すものだ。
Terraformの外部データソースは外部プログラムを実行でき、Terraformから見える環境変数をその子プロセスに渡す。HashiCorpのドキュメントでは、この機能を通常のプロバイダーが適さない場合の「エスケープハッチ」と説明している。
これにより、悪意あるモジュールは有利な立場を得た。インフラのプロビジョニング中に実行されるコードが、プロビジョニングプロセスで利用可能なものと同じクラウド認証情報、トークン、設定データにアクセスできたのだ。
このインシデントは、Terraformによるプロバイダーとモジュールの保護に隔たりがあることも浮き彫りにした。
Terraformの.terraform.lock.hclファイルにはプロバイダーの選択と暗号学的ハッシュが記録されるが、HashiCorpによると、ロックファイルは現在、リモートモジュールを追跡していない。
モジュールのバージョンを厳密に指定すれば、Terraformが同じバージョン番号を選択するようにできる。しかし、侵害されたレジストリが、そのバージョンに紐づく元の内容を配信しているかどうかを独立して検証することはできない。
この区別は、今回のようにレジストリの配信経路そのものが侵害されたケースでは特に重要だ。
このインシデントは、最近相次いでいる開発者インフラを標的とするソフトウェアサプライチェーン攻撃に続くものだ。信頼されたパッケージや開発ツールが、認証情報やクラウド環境への経路となっている。
Coderは調査と認証情報のローテーションを推奨
Coderは、証拠として役立つ可能性のある情報を消去する前に、coder-infra[.]comへの接続について、ファイアウォール、プロキシ、DNS、VPCフローログを確認するよう推奨している。
組織はまた、プロビジョナーのログでdata.external.telemetryを検索し、8月31日の露出期間中にダウンロードされたモジュールを特定するとともに、Coderが公開したSQLクエリを使って、影響を受けた可能性のあるキャッシュ済みモジュールとテンプレートのバージョンを特定すべきだ。
影響を受けた可能性のある組織は、インシデント中にプロビジョナーからアクセス可能だった認証情報を、次のものを含めてすべてローテーションすべきだ。
- クラウドおよびAIツールのAPIキー
- CI/CD認証情報
- OIDCおよびワンタイム認証トークン
- SSHキー
- 該当する場合はデータベースパスワード
露出したクラウドアクセスキーは使用可能な状態が続く可能性があるため、認証情報のローテーションは特に重要だ。元の侵害を封じ込めた後も同様である。
Coderは、影響を受けたキャッシュ済みパッケージを削除し、次の修正済みリリースのいずれかにアップグレードすることも推奨している。
- 2.37.0
- 2.36.4
- 2.35.7
- 2.34.9
Coderによると、リフレッシュトークンはプロビジョナーに渡されなかった。
侵害の範囲は依然として不明
Coderは、重要なログが攻撃者の制御下にあるインフラに保存されているため、影響を受けたデプロイメントをすべて断定的に特定することはできないとしている。
同社は、攻撃者がCloudflare環境への初期アクセスをどのように得たのかを明らかにしておらず、活動を既知の脅威アクターに帰属させてもいない。
このインシデントは、ソフトウェアサプライチェーン攻撃の対象領域の一部としての開発者ツールをめぐる懸念の高まりに拍車をかけるものだ。レジストリ、CI/CDシステム、コーディングツール、インフラ自動化はすべて、開発者のワークステーション自体をはるかに超える範囲へのアクセス権を持つ認証情報を保持している可能性がある。
したがって、8月31日の露出期間中にCoderを使用していた組織は、パッチ適用、調査、認証情報のローテーションをそれぞれ別個の対策として扱うべきだ。Coderを更新すれば侵害された配信経路は排除できるが、すでに窃取された可能性のあるシークレットを無効化することはできない。
関連記事:侵害されたGitHubアカウントが拡散に加担したShai-Hulud npmサプライチェーン攻撃では、数百のパッケージに認証情報を窃取するマルウェアが配布された。





