今この瞬間もワームがオープンソース内で拡散している。あなたが何もクリックする必要もなく。
TeamPCP——昨年12月に注目を浴びたハッキング集団——は組織的にクラウドインフラを侵害し、認証情報を窃取し、数百のターゲットにランサムウェアをデプロイしてきた。しかし、この特定のキャンペーンが異なり、深刻な脅威となっている理由は、彼らが開発者が日々使用するツールに対して寄せる信頼をどのように武器化したかにある。この攻撃は理論上の脆弱性ではない。現在リアルタイムで発生している。npmパッケージを通じて自動拡散している。その巧妙さは、このグループがほとんどのセキュリティチームよりもサプライチェーンをよく理解していることを示唆している。
ストーリーはAqua SecurityのGitHubアカウント侵害から始まる。同社はTrivyを保守している。Trivyはコンテナ化環境で最も広く導入されている脆弱性スキャナーの一つだ。そこからTeamPCPは事実上すべての主要バージョンラインでTrivyの悪意あるバージョンをプッシュした。正当なセキュリティツールだと考えてダウンロードした開発者は、実はバックドアをダウンロードしていたのだ。
自動拡散するワーム
ここからが恐ろしい部分だ。
感染したマルウェアは、次の手動デプロイメントを待って静止していない。侵害されたマシン内でnpm認証トークンを探す——開発者がパッケージレジストリへのパブリッシュアクセスを持つ認証情報ファイルを散らかしていることがよくある。トークンを見つけたら、ワームはそのトークンがアクセスできるあらゆるパッケージの新しいバージョンを作成できるようになる。1つの観測されたインシデント中、28個のパッケージが60秒以内に汚染された。
しかし本当に不気味な部分は?初期バージョンのワームでは、攻撃者が各パッケージ間で手動で拡散させる必要があった。週末にプッシュされた更新版は、その摩擦を完全に排除した。
マルウェアはマシンをスキャンしてnpmリポジトリへのアクセストークンを見つけ、悪意あるコードを含む新しいバージョンを作成することで、パブリッシュ可能なパッケージを侵害する。
これが指数関数的な攻撃サーフェスの定義だ。侵害された単一の開発者マシンは、もはや1つのパッケージだけを感染させない。数十個の潜在的に感染させることができる。それらの汚染されたパッケージは、その後数千人の開発者によってダウンロードされる。新たな感染は毎回トークン収集のための別のベクトル。側方への拡散の別の機会だ。
なぜこの脱出メカニズムは優秀(にして恐ろしい)のか
TeamPCPは1つのアーキテクチャ上の決定をした。注視の価値がある。
彼らは従来のコマンド&コントロールサーバーを使わなかった。
その代わり、Internet Computer Protocol——分散型ブロックチェーンプラットフォーム——にコントロールインフラをデプロイした。具体的には、canisterと呼ばれるものを使った。それは本質的には分散ノードで実行されるスマートコントラクトだ。canisterの役割はシンプルながら精妙:感染したマシンを悪意あるバイナリをホストするURLに向ける。ここにある天才性——セキュリティ研究者や法執行機関がコントロールインフラを追い始めるとき、押収すべき単一のサーバーがない。毒するべきDNSレコードがない。スマートコントラクト自体はネットワーク全体からのコンセンサスなしに、第三者が修正またはオフラインにすることが理論上不可能に設計されている。
感染したマシンは50分ごとにチェックインする。それはレスポンシブに感じるのに十分な頻度だが、ほとんどのモニタリングシステムでアラームを発生させるのに十分ではない頻度だ。
これは単に巧妙なインフラではない。これは敵がパーシスタンスについてどのように考えるかの根本的なアーキテクチャシフトだ。もはやコマンド&コントロールサーバーを構築していない。分散ネットワークへのレジリエンスをアウトソースしている。クラウドインフラへの移行と同等のマルウェアだ。ただし、そのクラウドはセキュリティ研究者が数十年をかけて完成させた正確なテイクダウンメカニズムに対する耐性を持つように設計されている。
これはサプライチェーン攻撃の新しい標準になるのか?
まだではない。しかしそうなる可能性がある。
サプライチェーン攻撃は新しくない。侵害されたソフトウェアを見てきた——SolarWinds、Codecov、XZ Utilsのバックドア。しかし、それらは主に信頼された単一プロジェクトへのコード注入と採用を待つことについてだった。TeamPCPは異なる。なぜなら彼らはオートメーションと自己拡散を追加したからだ。1つのツールを汚染することに満足していない。エコシステム全体に攻撃を水平スケールさせるインフラを構築している。
これがオープンソース保守者とセキュリティチームにとって特に関連する理由:ここの攻撃サーフェスはどのコード内の脆弱性ではない。開発者の~/.npm認証情報ファイルにある認証トークンだ。パーソナルマシンで再利用されたGitHubパスワードだ。ビルドパイプラインを制御すれば安全だという仮定だ。これらの仮定のいずれもが成立しない。
TeamPCPがイラン機を対象とするデータワイパーも含めたという事実は、国家レベルの関与または少なくとも非常に具体的な地政学的意図を示唆している。それは別の警戒の層——このグループが資源、忍耐、および典型的な金銭的サイバー犯罪を超える目的を持っていることを意味する。
これから何が起きるのか?
Aqua Securityはセキュリティコミュニティと協力して被害範囲を把握している。npmは勧告を公開した。パッケージはやんけされた。研究者はすべての影響を受けたバージョンを追跡し、拡散を追跡している。
しかし、ここに不快な真実がある:封じ込めは後ろ向きだ。脆弱性レポートが公開される時点で、感染の窓はすでに閉じている。本当の問題は、次に誰かが高い価値のGitHubアカウントを侵害したときに何が起きるかだ。このテクニックが複製されたときに何が起きるのか?別のグループがブロックチェーンベースのコマンド&コントロールをより効果的に使用する方法を理解したときに何が起きるのか?
オープンソースコミュニティの信頼モデル全体は、侵害が稀で急速に発見されるという仮定に基づいて構築されている。TeamPCPは十分なアクセスと十分な洗練さで、発見フェーズを時間で測定でき、拡散フェーズを分で測定できることを実証した。
よくある質問
TeamPCPとはなにか、どこから来たのか?
TeamPCPはセキュリティリサーチチームであるFlareによって12月に初めて観察されたハッキング集団だ。彼らは大規模なオートメーション、ワーム対応マルウェア、およびサプライチェーン攻撃における専門知識で知られている。彼らの起源は不明のままだが、イラン対象ツールの包含は可能な国家レベルの関与または地政学的動機を示唆している。
自分のnpmパッケージが侵害されたかどうかを見分けることができるか?
npmが公開した勧告で影響を受けたパッケージを確認せよ。Trivyを使用している場合は、パッチ適用されたバージョンに直ちにアップグレードせよ。他のパッケージについて:勧告リストを確認し、インシデント日付付近でリリースされた不審な新バージョンについてパッケージ変更ログを確認し、更新された脆弱性スキャナー(信頼できるソースから)で依存関係を監査せよ。
なぜマルウェアコントロールにブロックチェーンを使用することが実際に問題なのか?
なぜなら従来のテイクダウン方法は中央集約型サーバーの押収またはDNSレコードの破損に依存しているからだ。ブロックチェーンベースのスマートコントラクトはタンパープルーフおよび分散型であるように設計されている——ネットワーク全体のコンセンサスなしに無効化することはほぼ不可能にしている。これはアーキテクチャレジリエンス。武器化されている。