Coderレジストリ侵害:悪意あるTerraformモジュールの手口を解説 | eSecurity Planet

Coderは、正体不明の攻撃者が同社のモジュールレジストリを支えるインフラを侵害し、クラウド認証情報やSSHキー、CI/CDシークレットなどの機密データを窃取するよう改変されたTerraformモジュールを配布していたことを確認しました。

悪意あるモジュールが配布されていたのは8月31日の07:35から21:45 UTCまでの約14時間にわたる期間です。Coderは自社が保持する顧客データへの影響を示す証拠は見つかっていないとしていますが、侵害を受けたすべてのデプロイメントを確実に特定できるわけではないと説明しています。

攻撃者はCoderの信頼済みレジストリ経路を乗っ取った

Coderによると、正体不明の攻撃者は同社のCloudflareインフラへのアクセスに成功し、registry.coder.comを提供するIPプールに不正なIPアドレスを追加しました。

その結果、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は、有用な証拠を消してしまう前に、ファイアウォールやプロキシ、DNS、VPCのフローログを確認し、coder-infra[.]comへの通信がないか調べるよう推奨しています。

また各組織に対しては、プロビジョナーのログで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サプライチェーン攻撃の拡散を助け、数百のパッケージに認証情報窃取マルウェアを広める結果となりました。

翻訳元: https://www.esecurityplanet.com/cybersecurity/news-coder-registry-malicious-terraform-modules/

本記事は esecurityplanet.com の記事を翻訳・要約したものです。