2026年7月、トロイの木馬化したTerraformプロバイダーを使い、開発者環境を狙ってクロスプラットフォーム型マルウェアを展開するキャンペーンが確認されました。
この攻撃ではまず、認証情報の窃取と初期アクセスの確保を担う「FLATROOF」が配信されます。その後、より広範なリモート制御を可能にする「ROOFDECK」が投入されます。
攻撃元の特定は暫定的なものにとどまっています。ThreatLabzは、標的の選定、使用ツール、戦術に類似点を見つけました。しかし、独自のコードの一致、共有インフラ、暗号に関する証拠はなく、独立して確度の高い帰属を判断するには不十分だとしています。
分析対象のプロバイダーがどのように最初の配信を受けたのかも、解明されていません。
Go言語製のバイナリterraform-provider-awsbeta_v1.0.0は、AWS向けTerraformプロバイダーを装っています。プロバイダーとしての機能を備えた骨組みもそのまま残しています。
攻撃者は悪意あるawsbetaパッケージを挿入し、mainから直接呼び出すようにしました。これにより、Terraformがプラグインを起動した時点でマルウェアが実行されます。
このインプラントはまず、一時ディレクトリにsession.lockがあるかを確認します。なければhashicorp-terraform[.]ioからBashローダーをダウンロードします。
ローダーはsafari_updaterという名前で保存され、実行権限が付与されたうえで、切り離されたプロセスとして起動します。同時に、重複実行を防ぐマーカーも作成します。プロバイダーとしての通常の動作は継続するため、目立った異常が表に出にくくなっています。
ローダーはOSとプロセッサのアーキテクチャを判別し、.woffフォントに偽装した暗号化ペイロードを選択します。

Zscaler ThreatLabzがGBhackersに共有したレポートによると、今回の攻撃は、Jade Sleet、UNC4899、Pressure Chollima、Slow Piscesとして追跡されている北朝鮮の国家支援アクター「TraderTraitor」と大きく重なります。
Terraformのサプライチェーン
ファイル名は、LinuxではNotoSansCJK、macOSではHiraginoSans、WindowsではMalgunGothicが使われます。Windowsで実行するには、互換性のあるUnix系シェル環境が必要です。
最初のペイロードは64ビットのWindows実行ファイルです。XORキー0x37でデコードされ、中断状態のChromiumプロセスに注入されて、マスター暗号鍵の回収に使われます。
ダウンロードは、ダイナミックDNSのインフラ、GitHub、Vercelの間でフォールバックしながら行われます。各ファイルは、おとりのフォントデータ、@@ENDFONT@@マーカー、暗号化された実行ファイルを組み合わせた構成です。

ローダーは末尾に付加されたデータを抽出してBase64でデコードします。そのうえで、利用可能なPython、Node.js、Perl、OpenSSLのいずれかを使い、AES-256-CBCで復号します。
macOSでは、実行前に隔離属性を削除し、アドホック署名を適用します。
Rust製のバックドアFLATROOFは、PBKDF2-HMAC-SHA256とAES-256-GCMを使って設定情報を復号します。
コードはTelegram、GitHub APIのポーリング、攻撃者が管理するHTTP Webhookに対応しています。ただし、個々のサンプルがすべてのチャネルを設定しているとは限りません。
永続化の手法はプラットフォームごとに異なります。Linuxではサービス、macOSではシェルのログアウト機構、WindowsではレジストリのRun値を利用します。
埋め込まれたPythonの収集モジュールは、ブラウザーのデータベース、Cookie、保存された認証情報の痕跡、ターミナルの履歴、アプリケーション一覧、ホスト情報を収集します。
プラットフォーム固有の収集対象もあります。Linuxではキーリング、macOSではlogin.keychain-db、WindowsではCredential Managerのエントリーです。Windows向けのスクリプトは、MetaMask、Phantom、Trust Wallet、Rabbyの拡張機能のデータも狙います。
Earna CS Degree
埋め込まれたネイティブコンポーネントは、中断状態のChromiumプロセス内で実行され、ブラウザーの暗号鍵を回収します。
ROOFDECKは、ローカル設定、署名・暗号化されたPastebinのデッドドロップ、Nostrのプロフィールメタデータのいずれかを使って、コマンド&コントロール(C2)のアドレスを解決します。
RSA署名の検証により、受け入れるサーバーアドレスを不正に差し替えることはできません。Nostrのプロフィールにあるwebsiteフィールドを使えば、インプラントを現在のPastebinの場所へ誘導できます。
HTTPまたはWebSocketのエンドポイントに接続すると、ROOFDECKは偵察、対話型シェル、ファイル転送、クリップボードへのアクセス、永続化の管理、自己削除といった操作に対応します。
このマルウェアは、KelpDAOのインシデントレポートと重なる部分があります。同レポートは、2億9,200万ドルのブリッジ窃取事件に先立つ、開発者の侵害を記録していました。
SentinelLabsの関連調査では、暗号資産と無関係なインドのITサービス企業の被害も確認されています。これ以前にUnit 42が行った調査では、採用担当者へのなりすましと、開発者を狙った悪意あるコーディング課題が報告されていました。
各組織は、信頼できないプロバイダーの利用を制限し、信頼できる情報源に照らしてチェックサムを検証する必要があります。あわせて、提供されたロックファイルを点検し、プロバイダーが予期せず起動したプロセスを監視することが求められます。
SentinelLabsは、見慣れないレジストリを精査することを勧めています。外部の面接課題は、業務用ワークステーションから切り離して扱うことも推奨しています。特に、エンジニアがクラウドの認証情報やソース管理へのアクセス権を持っている場合に有効です。
侵害指標(IoC)
| 指標 | ファイル名 | 説明 |
|---|---|---|
| 9d78ece09457907b730d139e4e0c64dd | terraform-provider-awsbeta_v1.0.0 | トロイの木馬化したTerraformプロバイダー |
| 73adaea97f003735335505858c1c6def | safari_updater | Bashスクリプト |
| 116f7189ed7b41f1b339a749d56e63be | HiraginoSans-Bold.woff | 暗号化されたMach-O 64ビット x86_64版FLATROOF |
| be60c52ca8a01fef7dc15c2f0ebb77d8 | HiraginoSans-Regular.woff | 暗号化されたMach-O 64ビット arm64版FLATROOF |
| 58fa0d651898446d5f5d2ed8a27a3330 | MalgunGothic-Bold.woff | 暗号化されたPE32+版FLATROOF |
注記: IPアドレスとドメインは、誤って名前解決されたりハイパーリンク化されたりするのを防ぐため、意図的に無害化(例:[.])しています。無害化を元に戻す作業は、MISP、VirusTotal、SIEMなど、管理された脅威インテリジェンス基盤の中だけで行ってください。
MTTRを21分短縮し、被害が出る前にサイバー脅威を阻止します。ANYRUNのサンドボックスをSOCに統合。
翻訳元: https://gbhackers.com/terraform-supply-chain/