はじめに:人気AIフレームワークChainlitに重大な脆弱性
セキュリティ企業Zafran Labsは、会話型AIアプリケーション構築のための人気のオープンソースフレームワークであるChainlitに2つの深刻な脆弱性を発見しました。Chainlitは、LangChain、OpenAI、AWS Bedrockといったツールと連携し、インターネットに接続されたAIシステムを支え、月間70万回のPyPIダウンロードを記録するほど広範囲に利用されています。これらの脆弱性は、ユーザーの操作なしにAPIキー、機密ファイル、クラウド認証情報を盗み出すことを可能にします。Zafran Labsは、主要企業の実際のサーバーで悪用が確認されたことを発表し、AIインフラのリスクを調査する「Project DarkSide」を立ち上げました。
これらの問題は、Chainlitのコア機能、すなわちユーザーチャット用のUI/フロントエンド層とAIオーケストレーション用のバックエンドに影響を及ぼします。
脆弱性の詳細:機密情報窃取とSSRF攻撃
今回の報告された脆弱性は以下の2点です。
- CVE-2026-22218: 任意ファイル読み込み(Arbitrary File Read)
- CVE-2026-22219: SSRF(Server-Side Request Forgery)
攻撃者は認証後、/project/element PUTエンドポイントを悪用します。ChainlitのElementクラスがカスタム要素を不適切に処理するため、サーバー上のファイルをコピーしたり、リモートURLを無防備にフェッチしたりする可能性があります。
CVE-2026-22218: 任意ファイル読み込みのメカニズム
攻撃者は、制御されたpathプロパティを持つカスタム要素を送信します。Chainlitのpersist_file機能は、サーバーから読み取り可能な任意のファイルを攻撃者のセッションディレクトリにコピーし、それをAPI経由で外部に公開します。これには以下のような重要な情報が含まれる可能性があります。
- 環境変数(例:
AWS_SECRET_KEY)を含む/proc/self/environ - トークン偽造に使用される
CHAINLIT_AUTH_SECRET - LangChainセットアップにおけるクロステナントプロンプトを漏洩させる
.chainlit/.langchain.db - カスタムフックが記述された
app.pyのようなソースコード - ユーザーチャットをダンプするSQLiteデータベース
CVE-2026-22219: SSRF攻撃のメカニズム
SQLAlchemyデータ層において、攻撃者はカスタム要素内にurlを設定します。Chainlitはaiohttpを介してそのURLをフェッチし、コンテンツを保存した後、生成された読み取りURLを通じて外部への情報漏洩を可能にします。これは、ファイル読み込みと組み合わせて、漏洩した環境変数や/etc/hostsから内部サービスを調査するのに利用されます。特に、IMDSv1を使用するAWS EC2環境では、http://169.254.169.254/latest/meta-data/iam/security-credentials/にアクセスすることでロールの認証情報を窃取し、バケット、シークレット、LLMへのラテラルムーブメントを可能にします。
この攻撃は、トークンの偽造による認証バイパスから始まり、クラウドの乗っ取りにまでエスカレートする可能性があります。セッションアクセス以外の特権は不要であり、マルチテナント環境ではすべてのユーザーのLLMプロンプトや応答が漏洩するリスクが増大します。
侵害の痕跡 (Indicators of Compromise – IoCs)
以下の点に注意することで、侵害の有無を検出できる可能性があります。
- 露出したChainlitサーバー:
/chainlitパスまたはWebSocket/wsがポート8000/3000で公開されているかスキャン。 - 脆弱なバージョン:
<2.9.4(ヘッダー/User-Agentで「Chainlit」をチェック)。 - トラフィック:
PUT /project/elementで{"type":"custom","path":"..."}または{"type":"custom","url":"..."}を含むリクエスト。 - ファイル:
.chainlit/.langchain.db、CHAINLIT_AUTH_SECRETを含む環境変数漏洩。
Zafran Labsは、以下のSnortシグネチャを提供しています。
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"Chainleak - PUT /project/element"; content:"PUT"; http_method; content:"/project/element"; http_uri; depth:16;)
推奨される緩和策
これらの脆弱性から保護するためには、以下の対策を直ちに講じる必要があります。
- Chainlitをバージョン2.9.4以降にアップグレードする。
- Zafran LabsのComponentsモジュールまたはWAF(Web Application Firewall)ルールを使用する。
- IMDSv1をブロックし、最小権限のIAM(Identity and Access Management)を強制する。
- ShodanやCensysなどのツールを使用して、露出したChainlitインスタンスがないかスキャンする。
AIスタックのセキュリティリスクへの警鐘
Zafran Labsの「Project DarkSide」は、UI、エージェント、オーケストレーション、LLMといったAIスタック全体にわたるリスクを明らかにしており、従来の脆弱性が連鎖してクラウド侵害に繋がる可能性を示唆しています。AIの採用が急増する中、Chainlitのようなフレームワークをセキュアに保つことは、「ダークサイド」攻撃を阻止するために極めて重要です。
