
Nucleiテンプレート - CVE-2026-33017(Langflow ≤ 1.8.2 における認証不要のリモートコード実行脆弱性)検出用。HTTPレスポンス分析を通じて脆弱なビルドとパッチ適用済みビルドを区別する非破壊的な事前チェックを実行します。
Nucleiテンプレートは、CVE-2026-33017 — Langflow ≤ 1.8.2 における、公開フロービルドエンドポイントから到達可能な未認証のリモートコード実行脆弱性を検出します。
POST /api/v1/build_public_tmp/{flow_id}/flow
脆弱なハンドラは、攻撃者が制御する data フローグラフを受け入れ、グラフビルド中に data.nodes[].data.node.template.code.value をサンドボックスなしでそのままPythonの exec() に渡します。修正(≥ 1.9.0)では、ハンドラシグネチャから data パラメータを削除しているため、パッチ適用済みのビルドはFastAPIのバリデーション層で同じリクエストをHTTP 422で拒否します。
このテンプレートは非破壊的です。ゼロUUIDのフローIDに対して無害なペイロードを送信するため、脆弱なホスト上でも exec() に到達することはありません。HTTPレスポンスのシグネチャのみで脆弱なハンドラとパッチ適用済みハンドラを区別します。
| 段階 | リクエスト | 説明 |
|---|---|---|
| 1 | GET /api/v1/version | ターゲットがLangflowであることを確認し、ビルドバージョンを抽出します。 |
段階2のルーティング:
実際のRCE確認には、(a) ターゲット上の実際のPUBLICフローUUIDと、(b) 帯域外コールバック(DNS/HTTP)が必要です。その手順は意図的にここには含まれていません。このテンプレートは、アクティブなエクスプロイトを実行する意味があるかどうかを判断する安全な事前チェックです。
単一ホスト:
nuclei -t CVE-2026-33017.yaml -u https://target.example.com
リストからの一括スキャン:
nuclei -t CVE-2026-33017.yaml -l targets.txt -rl 20 -c 10
デバッグ出力を使用(生のリクエスト/レスポンスを表示):
nuclei -t CVE-2026-33017.yaml -u https://target.example.com -debug-req -debug-resp
テンプレートを実行前にローカルで検証:
nuclei -validate -t CVE-2026-33017.yaml
脆弱なターゲット:
[CVE-2026-33017] [http] [critical] https://target.example.com [vulnerable-flow-not-found] ["1.8.2","base"]
パッチ適用済みターゲット — 検出結果は出力されません(422レスポンスはどのルールにも一致しません)。
Langflowホストの一般的な検出クエリ(テストを許可されたアセットに対してのみ使用):
http.title:"Langflow"app="Langflow"intitle:"Langflow" inurl:"/flows"AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H脆弱なビルドでは、公開ハンドラはおおよそ次のように宣言されています:
@router.post("/build_public_tmp/{flow_id}/flow")
async def build_public_flow(flow_id: UUID, data: FlowDataRequest | None = None, ...):
...
await verify_public_flow_and_get_user(flow_id, ...)
...
# data.nodes[].data.node.template.code.value reaches exec() in the
# Component build path
data は攻撃者が制御します。パッチ適用済みハンドラはパラメータを完全に削除し、data=None を強制するため、パッチ適用済みビルドでは data ボディフィールドを含むリクエストが422で拒否されます。
/api/v1/build_public_tmp/ をブロックしてください。LANGFLOW_AUTO_LOGIN=False を設定し、スーパーユーザー資格情報を構成し、LANGFLOW_SECRET_KEY をローテーションしてください。access_type=PUBLIC のフローは攻撃者がURL内で標的とするものです。このテンプレートは防御的なセキュリティおよび許可されたテストのみを目的として公開されています。自分が所有していない、または明示的な書面によるテスト許可を得ていないシステムに対して実行することは、ほとんどの法域で違法であり、プラットフォームの利用規約に違反します。
このテンプレートを使用することで、以下に同意したものとみなされます:
lopseg — https://github.com/lopseg
プルリクエストやIssueを歓迎します。
MIT
| 2 |
POST /api/v1/build_public_tmp/00000000-0000-0000-0000-000000000000/flow(dataフィールドと無害なtemplate.code.valueを含むボディ) |
| 下記のルーティング判定に使用します。 |
| ステータス | ボディの内容 | 判定 |
|---|
404 | flow / public | 脆弱 — ハンドラが data を受け入れ、UUIDが偽のためルックアップに失敗しました。 |
200 | job_id / build / task | 脆弱 — ハンドラが data を受け入れ、ビルドパスに入りました。 |
5xx | exec / Component / traceback | 脆弱 — ハンドラが失敗前に exec コードパスに到達しました。 |
422 | Field required / extra / data | パッチ済み — ハンドラシグネチャが data を受け付けなくなりました。 |