セキュリティ研究者が、人気のPythonベースのAIアプリ構築ツールにおける2つの脆弱性を発見した。これにより攻撃者は認証情報やファイルを抽出でき、さらに横展開の足掛かりを得る可能性がある。
人気のAI開発フレームワークChainlitに存在する2つの脆弱性により、攻撃者がサーバー上の任意のファイルやデータベース内容を読み取れる可能性がある。未修正のまま放置された場合、これらの欠陥によって攻撃者はAPIキーやその他の秘密トークンを漏えいさせ、組織のインフラ内部での横展開を容易にする恐れがある。
セキュリティ企業Zafranの研究者は、Chainlitの欠陥に関する報告書の中で「これらの脆弱性はユーザーの操作なしにトリガー可能だ」と述べた。「Zafranは、大手企業が運用する実際のインターネット公開アプリケーションで脆弱性を確認した。」
Chainlitは、チャットボットインターフェースを備えたAIアプリを構築するためのPythonベースのパッケージだ。認証を扱い、さまざまなバックエンドシステム、データベース、クラウドサービスとの統合を提供する。Python Index(PyPI)から過去1年間で500万回以上ダウンロードされており、RAGシステムやその他のLLM駆動アプリ向けのユーザー向けインターフェースを構築するチュートリアルでしばしば言及される。
2つの脆弱性はCVE-2026-22218およびCVE-2026-22219として追跡されており、先月リリースされたバージョン2.9.4で修正された。当時のリリースノートには「セキュリティ脆弱性の修正」とだけ記載され、今週アドバイザリが公開されるまで、それ以上の詳細は示されていなかった。
カスタム要素を介した任意ファイルの読み取り
最初の脆弱性(CVE-2026-22218)は、フレームワークのElementクラスに存在する。Chainlitでは、要素(element)はメッセージに添付できるコンテンツ片で、たとえば画像、PDFファイル、動画、音声ファイル、データフレームなどが含まれる。
フレームワークのElementクラスは、メッセージ内でJavaScript XML(JSX)ファイルを表示するためのカスタムタイプもサポートしている。JSXファイルはHTMLを表示するためにJavaScriptの構文を拡張したもので、Reactなどのライブラリで一般的に使用される。
Zafranの研究者は、このカスタム要素がフィールドを検証しないため、攻撃者がそのすべてのプロパティを制御できることを突き止めた。たとえば、攻撃者がpathプロパティをサーバー上の任意のファイルに設定したカスタム要素を送信すると、そのファイルがユーザーセッションに返される。
このため、この欠陥により攻撃者はサーバーから任意のファイルを読み取れるようになり、その中には機密情報が含まれているものも多い。たとえば/proc/self/environファイルは環境変数を保存するために使われ、そこにはAPIキー、認証情報、内部ファイルパス、データベースパス、AWSやその他クラウドサービス用のトークン、さらには認証が有効な場合に認証トークンへ署名するために使われる秘密情報CHAINLIT_AUTH_SECRETまで含まれる可能性がある。
さらに、Chainlitの背後でオーケストレーション層としてLangChainを使用し、キャッシュが有効になっている場合、LLMに送信されたユーザープロンプトと対応する応答は.chainlit/.langchain.dbというファイルに保存される。このファイルはユーザーやテナントをまたいでプロンプトを保存するため、攻撃者はこれを定期的に持ち出して機密情報を入手できる可能性がある。Zafranの概念実証(PoC)エクスプロイトでは、このファイルの漏えいが含まれていた。
クロスサイトリクエストフォージェリ
2つ目の脆弱性(CVE-2026-22218)は、同じカスタム要素を攻撃ベクターとして用いるが、URLプロパティを通じて別の方法で悪用する。このフィールドを設定することで、攻撃者はサーバーに指定したURLへのリクエストを発生させ、その内容を取得してデータベースに保存させることができる。
ChainlitはデフォルトでPostgreSQLを使用するが、SQLiteのような別バックエンドや、AWS S3やAzure Blobsといったクラウドストレージプロバイダーを含む、異なるバックエンドでSQLAlchemyを使用することもできる。この脆弱性を悪用することで、攻撃者はサーバーサイドリクエストフォージェリ(SSRF)を引き起こし、認証情報を取得できる。
研究者は「ChainlitがIMDSv1を有効にしたAWS EC2インスタンス上にデプロイされている場合、SSRF脆弱性を利用してhttp://169.254.169.254/latest/meta-data/iam/security-credentials/にアクセスし、ロールのエンドポイントを取得できるため、クラウドアカウント内での横展開が可能になる」と述べた。
これら2つの欠陥を組み合わせることで、攻撃者は大量の情報や認証情報だけでなく、データベースそのものや、カスタムコードを含む可能性のあるアプリケーションのソースコードファイルも抽出できる。
研究者は報告書の中で「サーバーからクラウド認証情報やIAMトークンを入手すると、攻撃者はもはやアプリケーションに制限されない」と記した。「背後にあるクラウド環境へアクセスできるようになる。ストレージバケット、シークレットマネージャー、LLM、内部データ、その他のクラウドリソースが攻撃者からアクセス可能になる恐れがある。」
Zafranの報告書には、Snortネットワーク侵入検知システムおよびCloudflareのWebアプリケーションファイアウォール向けのシグネチャが含まれており、アプリケーションを修正済みのChainlitバージョンへ更新するまでの間、攻撃の試行をブロックするために利用できる。