Langflow: Webhook認証の回避による認証なしでのフロー実行の脆弱性

### 概要
LangflowのWebhook認証ロジックに存在する脆弱性により、認証されていないユーザーが任意のフローの実行をトリガーできるようになる可能性があります。システムは、`WEBHOOK_AUTH_ENABLE`の設定が`False`の場合、APIキーの検証を誤って省略します。これにより、フローのUUIDを知っている攻撃者が、所有者としてフローを実行できる可能性があり、リモートコード実行(RCE)やサービス拒否(DoS)につながる可能性があります。

### 詳細
`WEBHOOK_AUTH_ENABLE`の設定は、v1.7.0(#9139)で導入され、デフォルト値は`False`です。根本原因は、Webhook認証のパスにある`AuthService.get_webhook_user`(`src/backend/base/langflow/services/auth/service.py`。`src/backend/base/langflow/services/auth/utils.py`にある薄いラッパーは、これを呼び出すだけです)です。

```python
async def get_webhook_user(self, flow_id: str, request: Request) -> UserRead:
settings_service = self.settings
...
# 脆弱性:この設定がFalseの場合(v1.9.0以前のデフォルト)、リクエストに含まれるAPIキーのチェックをせずに、
# フローの所有者を返します。
if not settings_service.auth_settings.WEBHOOK_AUTH_ENABLE:
try:
flow_owner = await get_user_by_flow_id_or_endpoint_name(flow_id)
return flow_owner
```

デフォルトでは(v1.7.0からv1.9.0まで)、Langflowは`WEBHOOK_AUTH_ENABLE`を`False`として扱っており、これはすべてのWebhookエンドポイントが公開されていることを意味します。これは、`flow_id`(UUID)の秘匿性に依存しており、これは安全でない慣行(Security by Obscurity)です。

関連するレポート(GHSA-6g4m-v5q2-475v)では、`PythonCodeStructuredTool`コンポーネントを使用して、この同じ回避策による具体的なRCEの連鎖が示されています(フローによって作成されたPythonコードに対する`exec()`)。そのレポートは、この根本原因の重複であり、このアドバイザリーに優先してクローズされています。そのPoCの貢献者はここに記載されています。

### PoC (概念実証)
1. 機密な操作を実行するフロー(例:メール送信、データベースへの書き込み、またはPythonスクリプトの実行)に対して、有効な `flow_id` を特定します。
2. `Authorization` ヘッダーまたはAPIキーなしで、次のPOSTリクエストをWebhookエンドポイントに送信します。
```bash
curl -X POST "http://<server-ip>:7860/api/v1/webhook/<flow_id>" \
-H "Content-Type: application/json" \
-d '{"input": "payload"}'
```
3. フローの実行が開始され、サーバー上でアクションが実行されることを確認します。

### 影響
これは、**重大な認証バイパス**です。
- **リモートコード実行 (RCE)**: フローには、多くの場合、任意のPythonコードを実行するコンポーネントが含まれています。攻撃者は、これを利用してサーバー全体を制御する可能性があります。
- **サービス拒否 (DoS)**: 攻撃者は、多数のフローを同時に実行させることで、システムリソースを枯渇させることができます。
- **データ整合性**: 許可されていないフローの実行は、データベースやフローを介して接続されている外部システムへの意図しない変更につながる可能性があります。

### 影響を受けるバージョン
`>= 1.7.0, <= 1.9.0` ( `WEBHOOK_AUTH_ENABLE` が存在し、デフォルトで `False` に設定されていたバージョン範囲)。

### 修正
**v1.9.1** で修正されました。[PR #12845](https://github.com/langflow-ai/langflow/pull/12845) — `fix(security): default WEBHOOK_AUTH_ENABLE to True`。設定のデフォルト値が `False` から `True` に変更されたため、Webhookエンドポイントは、オペレーターが `LANGFLOW_WEBHOOK_AUTH_ENABLE=false` を使用して明示的にオプトアウトしない限り、デフォルトでAPIキー認証と所有権の検証を必要とします。

影響を受けるパッケージ:
- pip (Python) langflow: 影響を受けるバージョン >= 1.7.0, <= 1.9.0、修正されたバージョン 1.9.1