Langflow の RCE 脆弱性 CVE-2026-33017 を悪用:AWS 侵害キャンペーンを Sysdig が観測

Langflow CVE-2026-33017 Exploited to Steal AWS Keys, Deploy NATS Worker

2026/05/14 gbhackers — Langflow の脆弱性 CVE-2026-33017 に対する、パッチを適用していないインスタンスが積極的に悪用されている。一連の攻撃は、単なるリモート・コード実行や AWS キーの窃取に留まらず、”KeyHunter” と呼ばれる NATS ベースのボットネット型ワーカー・プールへの参加基盤としての悪用も展開されている。

この脆弱性は、CISA の Known Exploited Vulnerabilities (KEV) カタログに登録されている。この脆弱性は、公開されている Langflow のフロー構築エンドポイントに影響を及ぼす。それを悪用する未認証の脅威アクターは、任意の Python コードの実行が可能となり、環境変数/アプリケーション・シークレットへの完全なアクセスを達成する。

この攻撃を仕掛けた脅威アクターは、約 10時間にわたり LMDeploy インスタンスと LiteLLM 上の攻撃対象領域を探索した後に、Langflow を悪用することで、認証情報の収集および再利用サイクルを成立させた。2026年5月5日 09:12 UTC の時点で、攻撃者は Langflow の公開 Flow API に対する CVE-2026-33017 の悪用を成功させ、プロセス環境をダンプした上で、AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY をメモリから直接抽出した。

Sysdig Threat Research Team (TRT) が観測したのは、Langflow の認証不要 RCE を悪用して AI パイプラインを掌握した攻撃者が、被害者の AWS 環境へと pivot する挙動である。攻撃者は、窃取した認証情報を悪用して sts:GetCallerIdentity を呼び出して有効性を確認した後に、AWS Bedrock/S3/EC2/Lambda/IAM など複数サービスに対する偵察を実施した。これは、典型的なスコープ制限付きキーを悪用する偵察スキャンである。

さらに Bedrock:InvokeModel および Bedrock:ListModelInvocationJobs の呼び出しから、Claude や Llama 3 などの高額な基盤モデルを第三者に課金させて悪用する LLMjacking の試行も確認されている。これは他者のクラウド請求を悪用し、高コストな推論ワークロードを実行する行為である。

Langflow CVE-2026-33017 の悪用

このキャンペーンの特徴は、AWS 偵察パターン自体にあるのではなく、攻撃者が採用した C2 インフラにある。そこでは、攻撃者によりハードニングされた NATS サーバが、隠蔽 C2 インフラとして運用されていた。

The NATS-as-C2 tool chain (Source : Sysdig).
The NATS-as-C2 tool chain (Source : Sysdig).

従来の HTTP パネルや Discord/Telegram のようなチャット・アプリケーションではなく、認証および subject レベル ACL を備えた “45.192.109.25:14222” の NATS エンドポイントを悪用することで、この攻撃者は KeyHunter プロジェクト内のワーカー・ノードを制御していた。

単一のワーカーにより、CodePen/JSFiddle/StackBlitz/CodeSandbox などから共有されたコード・スニペットがスクレイピングされ、漏洩 API キーの収集の後に、AWS および商用 LLM のキーが検証され、その結果がオペレーターに送信されていた。

Sysdig のテレメトリによると、”159.89.205.184″ から Python ワーカーおよび Go ベースのワーカー・バイナリがダウンロードされていた。いずれも NATS に接続され、KeyHunter という名称が付与されていたが、この名称はオープンソースのキー検出ツールから借用されたものである。

Python ワーカーは scan_cde/scan_web/validate_aws/validate_ai の 4 機能を提供していた。これらは NATS subject である task.scan_cde/task.scan_web/task.validate_aws/task.validate_ai として定義され、クラウド開発環境および AI API プロバイダーを対象とする収益化チャネルに対応していた。その一方で、NATS サーバ自体は subject 単位で厳格なアクセス制御を適用し、侵害済みワーカーが publish または subscribe できる範囲を制限していた。

Python ワーカーが heartbeat.worker へ heartbeat を送信しようとした際に、サーバは “permissions violation for publish” エラーを返して送信を拒否した。それに対し攻撃者は、エクスプロイト・チャネル経由でエニュメレーション・スクリプトを投入し、ワーカー・ロールから利用できる subject に対して総当たり攻撃を実施した。

その結果として、heartbeat.worker/worker.hb/worker.heartbeat/result.*/workers.heartbeat のみが悪用可能となった。これらのロールは、heartbeat および結果送信の publish に限定されていることが判明しており、制御 subject への subscribe や他ワーカー通信の盗聴は不可能であった。

この設計は、C2 レイヤーにおける最小権限 (least privilege) の適用の事例でもある。それにより、仮に防御側がワーカー・ノードを掌握した場合でも、NATS バス全体への容易な侵入や、コントローラーに対する成りすましは困難となる。

Go ワーカーは、明示的 ACK を伴う NATS JetStream pull consumer を使用しており、ノード障害やオフライン状態が発生した場合でも、タスクが耐久キューへ保持され再配信される仕組みとなっている。さらに systemd ベースのインストーラー “deploy.sh” により Restart=always を設定し、ファイル・ディスクリプタ上限を 65,535 へ引き上げることで、高並列スクレイピングおよび長期持続性に最適化している。

Persistence (Source : Sysdig).
Persistence (Source : Sysdig).

KeyHunter バイナリの静的解析では、GitHub のようなコード・リポジトリではなく、オンライン・コード・サンドボックスに特化していることが確認されている。それぞれのプラットフォームごとに複数の抽出戦略を備えることで、UI や API の変更に対する耐性を持つに至っている。

Go ワーカーは uTLS を統合し、実ブラウザの TLS フィンガープリントを模倣する一方で、JavaScript を多用するページではヘッドレス・ブラウザの併用により、CodeSandbox や StackBlitz における bot 検知回避を試みていた。さらに、正規表現パターンおよび gitleaks 連携により、AWS/OpenAI/Anthropic/Stripe/Slack/秘密鍵/データベース URL などの、広範な認証情報を収集対象としていた。

運用面における攻撃者の OPSEC (Operations Security) は限定的であり、ログ削除/履歴無効化/systemd ユニット名偽装などの対策は確認されていない。また、クラッシュした Go バイナリからは、Windows ビルド・パスの漏洩も確認された。

それであっても、Langflow RCE/自動 AWS 偵察/NATS ベース C2 を組み合わせた攻撃は、小規模ながら高い技術力を持つグループの存在を示している。この攻撃者は、高度に強化されたインプラントよりも、低コスト VPS ノード/マルチ・アーキテクチャ・ワーカー/耐障害メッセージングを活用することで、ステルス性よりも規模拡大を優先していた。

防御側にとって重要なのは、Langflow への迅速なパッチ適用である。それに加えて、AI サービスおよび Bedrock 利用状況の異常監視、そして NATS のようなメッセージ・ブローカーを単なるバックエンド基盤ではなく、潜在的 C2 チャネルとして検知対象へ含めることである。

侵害指標 (IOC)

IndicatorType
45.192.109.25:14222NATS C2
159.89.205.184:8888Staging HTTP
FileSHA-256Size 
worker-linux-amd64dbee863ad2a39f939be2c7ed76f7d5a8fe000aad2d2b2d32b3e8ec3ee42f1c259,453,752
keyhunter_worker.py323bbf3064d4b83df7920d752636b1acb36f462e58609a815bd8084d1e6b004c10,979
deploy.sh16b279aa018c64294d58280636e538f86e3dd9bdcb5734c203373394b72d101a1,424

注: IP およびドメインは defang 表記であり、制御環境でのみ復元すること。