
CVE-2026-33017 - Langflow 未認証RCEエクスプロイト
coded by: Xer0TLabs x Persephrak Decentralized Syndicate
本書は、レビュー、インシデントレスポンス、および防御的分析を目的として、提供されたPythonプログラムの概要を説明するものです。本書には、操作手順、ターゲット選定の指針、ペイロードの例、またはシステムへのアクセス取得手順は意図的に含まれていません。
このスクリプトは、主張されているLangflowの認証不要リモートコード実行の問題に対するエクスプロイトとして自己定義しています。本READMEはコードが何を試みるかを説明するものであり、CVE識別子、影響を受けるバージョン、エンドポイントの動作、ベンダーのアドバイザリ、またはスクリプトの有効性を独自に検証するものではありません。
このプログラムは、LangflowのHTTPエンドポイントに対して特別に構築されたJSONデータを送信しようとするコマンドライン自動化ツールとして構成されています。その意図された前提は、フロー定義に埋め込まれたユーザー制御のPythonがリモートアプリケーションによって処理されるというものです。
その前提がターゲット上で成立する場合、スクリプトはそれを任意のオペレーティングシステムコマンド実行に変換するように設計されています。基本的な実行チェックに加えて、永続化の確立、対話型リモートセッションの作成、偵察コマンドの実行、およびローカルでのSSH鍵ペアの生成を目的としたルーチンが含まれています。
これらの機能は、許可なくシステムを侵害する可能性があるため、このコードは潜在的に悪意のある、またはデュアルユースのツールとして扱う必要があります。明示的に許可され、定義されたテスト範囲によって管理されている場合を除き、システムに対して実行してはなりません。
このプログラムは、引数解析、JSON処理、HTTPリクエスト、ソケット、スレッド、サブプロセス実行、およびファイルアクセスのための標準Pythonモジュールをインポートします。
ssl._create_unverified_context を通じて、通常のTLS証明書検証をグローバルに無効化します。これにより、HTTPSリクエストが無効または信頼できない証明書を受け入れるようになります。テストコードでは時折見られますが、傍受やなりすましに対する保護を弱めるため、本番環境では安全ではありません。
Colors は、色付き出力を表示するために使用されるANSIターミナルエスケープシーケンスを定義します。
Logger は、情報、成功、警告、およびエラーメッセージを出力する小さなユーティリティクラスです。その banner() メソッドは、スクリプトのタイトル、主張されている脆弱性、主張されている影響を受ける製品範囲、深刻度、およびCISA KEVステータスを表示します。これらの主張はプログラム内の表示テキストであり、主張が正確であることの証明ではありません。
これはメインクラスです。初期化時には、以下の処理を行います:
http:// プレフィックスを追加します。デフォルトのフローIDは固定のUUIDのような値です。プログラムはコマンドラインオプションを通じてこれを上書きすることを許可します。
_build_malicious_payload(command) は、1つのノードを持つフローグラフに似たJSONオブジェクトを作成します。ノードは CustomComponent としてマークされ、code フィールドにPythonソースコードを含みます。
挿入されたソースは、オペレーティングシステムコマンドを呼び出そうとします。最初に1つのPython APIを試し、エラーが発生した場合はサブプロセス呼び出しにフォールバックします。JSON構造はその後、リクエスト送信コードに返されます。
これがコアとなるエクスプロイトロジックです。受信サービスがグラフを処理する際に、送信されたコードを実行することを前提としています。
_send_exploit_request(payload_data) は、ペイロードをJSONとしてシリアライズし、構築されたエンドポイントに対してHTTP POSTリクエストを行います。従来のブラウザ風ヘッダーを含み、レスポンス本文テキストとHTTPステータスの両方を返します。
HTTPエラーはプログラムを終了させるのではなく、捕捉されて返されます。接続失敗やタイムアウトなどのその他の例外は、文字列に変換され、ステータス 0 で返されます。
check_vulnerability() は、マーカーコマンドを含むペイロードを送信し、成功したHTTPレスポンスまたは error という単語を含むレスポンスのいずれかを、ターゲットが「脆弱であるように見える」という証拠として扱います。
これは信頼性の高い検証方法ではありません。200レスポンス、500レスポンス、またはアプリケーションエラーは、コード実行とは無関係な多くの理由で発生する可能性があります。スクリプトはマーカーの出力を独立して観測しないため、誤検知を生成する可能性があります。
execute_command(command) は、指定されたコマンドを悪意のあるフローペイロードにラップして送信します。HTTP 200または500を、可能性のある成功結果として解釈します。
繰り返しますが、ステータスコードだけではリモートコマンド実行を実証できません。防御的なコードレビューの観点から、このメソッドはオペレーターが任意のOSコマンドを供給できるようにすることで、ツールを柔軟にしようとしています。
_build_ssh_payload() および inject_ssh_key() は、リモートのSSH設定とauthorized_keysファイルを変更するように設計されています。試みられるアクションには、SSHディレクトリの作成、SSH公開鍵の追加、権限の変更、SSHデーモン設定の変更、SSHサービスの再起動、cronベースの永続化メカニズムの作成、およびシェル履歴アーティファクトの削除が含まれます。
これらは永続化および防御回避の動作であり、無害な脆弱性チェックではありません。プログラムは、ファイルやサービスが実際に変更されたことを確認することなく、HTTPステータスに基づいて成功を主張する場合があります。
_build_reverse_shell_payload() は、ターゲットがオペレーター制御のホストとポートへの発信ネットワーク接続を開始させることを目的とした、複数のフォールバックメカニズムを組み立てます。
spawn_reverse_shell() は、バックグラウンドスレッドでローカルTCPリスナーを起動し、短時間待機してからリモートペイロードを送信し、接続を待ちます。
_start_listener() は接続を受け入れ、シンプルな対話型コマンドループを提供します。これはリモートアクセス機能です。エラーハンドリングが限定的で、受信接続を認証せず、安全な管理や正当なテストインフラストラクチャには適していません。
full_exploit_chain() は、複数の動作を組み合わせます:
偵察リストは、ID、権限、オペレーティングシステム情報、ファイル、プロセス、リッスン中のサービス、アカウント、およびスケジュールされたタスクを明らかにすることを目的としています。これは侵害後の列挙の特徴です。
generate_ssh_key_pair(key_path) は、要求されたファイルがまだ存在しない場合に、ローカルの ssh-keygen プログラムを呼び出して4096ビットのRSA鍵ペアを作成します。
主張されているCVEを参照する鍵コメントを作成し、SSH永続化機能をサポートすることを目的としています。これはリモートターゲットではなく、スクリプト自体が実行されるマシンに影響を与えます。
main() は、ターゲット選択、フローID、単一コマンド実行、SSH鍵処理、リバースシェル設定、フルチェーン実行、自動鍵生成、および冗長出力のためのコマンドラインオプションを定義します。
コードは限定的な検証のみを実行します。たとえば、リバースシェルおよびフルチェーンモードでは、ローカルホストとポートが必要です。認可、範囲、ターゲットの所有権、URLの安全性、またはターゲットが実際にLangflowインスタンスであるかどうかは検証しません。
encoded_key 変数は計算されますが、使用されることはありません。このコードをレビューするセキュリティチームは、以下を悪用の試みまたは侵害後の活動の指標として扱う必要があります:
修復の決定については、このスクリプトに埋め込まれたバージョンと深刻度の記述ではなく、公式のLangflowセキュリティアドバイザリ、リリースノート、および組織の脆弱性管理プロセスに依存してください。
このプログラムを展開ツールまたはアクセスツールとして実行したり再配布したりしないでください。システム上で発見された場合は、証拠として保存し、ハッシュとタイムスタンプを記録し、コピーへのアクセスを制限し、関連するサービスおよびネットワークログを調査し、組織のインシデントレスポンスプロセスに従ってください。
正当な許可された評価のためには、書面による範囲、非破壊的な検証計画、文書化された停止条件、および修復に焦点を当てたレポートを使用してください。永続化、リバースシェル、資格情報の変更、履歴の削除、またはシステムを混乱させたり不正なアクセスを残したりする可能性のあるアクションは避けてください。