Langflow(開発者がLLMプロンプト、データソース、カスタムPythonコードを組み合わせることができるオープンソースプラットフォーム)には、脆弱なサーバー上で誰でも任意のPythonを実行できてしまう重大な欠陥があります。CVSSスコアで9.8と評価されたCVE-2026-33017は、1.9.0より前のすべてのバージョンに影響し、認証なしで実行可能です。そのため、運用者はアップグレードするか、「public flow」機能をオフにする必要があります。
バグの内容
Langflowのpublic-flowエンドポイントは、ログインなしで誰でも試せるデモスタイルのチャットボット向けに設計されました。このエンドポイントは、リクエストボディ内のdataパラメータを受け取り、ペイロードに安全なフロー定義が含まれていると想定した上で、その内容をPythonの組み込み関数であるexec()に直接渡します。exec()は文字列をコードとして評価し、Langflowプロセスと同じ権限で実行します。
攻撃者は、共有URLによく表示される値であるpublic flowのIDさえあれば、悪意のあるフロー定義に差し替えたリクエストを作成できます。サーバーがそのリクエストを処理すると、注入されたPythonが即座に実行され、攻撃者はホストシステムを完全に制御できるようになります。
なぜ脆弱性が入り込んだのか
以前のリリースでは、dataフィールドが存在する場合、データベースからフローを読み込むコードパスがバイパスされていました。サーバーはペイロードをサニタイズ(無害化)したり検証したりする代わりに、呼び出し元を信頼してそのまま実行していました。このエンドポイントはログインなしでアクセス可能なため、public flowsが有効になっているすべてのLangflowインスタンスにおいて、攻撃対象領域はパブリックインターネット全体に広がります。
リスクのある対象
深刻度スコアに基づき、この脆弱性は「緊急(critical)」とみなされます。
即時の緩和策
- Langflow 1.9.0にアップグレードする – これが唯一の検証済みの修正方法です。
- public flow機能を無効にする – 匿名アクセスが不要な場合。
- AUTO_LOGINをオフにする – これにより、未認証リクエストに対する自動セッション作成が停止されます。
- APIをファイアウォールまたはリバースプロキシの背後に配置する – 信頼できるIP範囲にアクセスを制限するため。
- Web Application Firewall (WAF)を導入する –
dataパラメータを含むbuild_public_tmpエンドポイントへのリクエストをブロックするように設定します。
修正の重要性
この脆弱性は、高い権限で実行されるコンテキストにおいて、ユーザーが提供したコードを信頼するという根本的な設計ミスを突いたものです。Langflow 1.9.0では、その信頼を排除し、より厳格な入力処理を強制することで、公開デモユーザーと基盤となるサーバーとの間の障壁を再構築しています。
今後の注視事項
- コミュニティの対応 – 追加のパッチやアドバイザリについて、Langflowのリポジトリを監視してください。
結論: public-flowエンドポイントを公開しているすべてのLangflow環境は、直ちにパッチを適用する必要があります。バージョン1.9.0が稼働するまでは、機能を停止し、ネットワーク制御によってサービスを保護してください。侵害が発生した場合のコストは、迅速なアップグレードの手間をはるかに上回ります。
