{"id":"CVE-2026-23842","aliases":["EUVD-2026-3299","GHSA-v4w8-49pv-mf72","PYSEC-2026-1244"],"status":"published","title":"ChatterBot has Denial of Service via Database Connection Pool Exhaustion","description":"ChatterBot is a machine learning, conversational dialog engine for creating chat bots. ChatterBot versions up to 1.2.10 are vulnerable to a denial-of-service condition caused by improper database session and connection pool management. Concurrent invocations of the get_response() method can exhaust the underlying SQLAlchemy connection pool, resulting in persistent service unavailability and requiring a manual restart to recover. Version 1.2.11 fixes the issue.","severity":{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00541,"percentile":0.45989,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":true,"fix_available":true},"cwes":["CWE-400"],"published":"2026-01-19T18:39:37Z","modified":"2026-10-28T02:30:49Z","exploits":[{"source":"pocgithub","id":"AdityaBhatt3010/CVE-2026-23842-Denial-of-Service-via-Database-Connection-Pool-Exhaustion-version-1.2.10","title":"AdityaBhatt3010/CVE-2026-23842-Denial-of-Service-via-Database-Connection-Pool-Exhaustion-version-1.2.10","date":"2026-03-01","url":"https://github.com/AdityaBhatt3010/CVE-2026-23842-Denial-of-Service-via-Database-Connection-Pool-Exhaustion-version-1.2.10"}],"fixes":[{"ecosystem":"PyPI","package":"chatterbot","fixed_in":["1.2.11"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"chatterbot","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"1.2.10"},{"fixed":"1.2.11"}]}]},{"source":"osv","ecosystem":"PyPI","package":"chatterbot","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.2.11"}]}],"versions":["0.0.0","0.0.1","0.0.2","0.0.3","0.0.4","0.0.5","0.1.0","0.1.1","0.1.2","0.2.0","0.2.1","0.2.2","0.2.3","0.2.4","0.2.5","0.2.6","0.2.7","0.2.8","0.2.9","0.3.0","0.3.1","0.3.2","0.3.3","0.3.4","0.3.5","0.3.6","0.3.7","0.4.0","0.4.1","0.4.10","0.4.11","0.4.12","0.4.13","0.4.2","0.4.3","0.4.4","0.4.5","0.4.6","0.4.7","0.4.8","0.4.9","0.5.0","0.5.1","0.5.2","0.5.3","0.5.4","0.5.5","0.6.0","0.6.1","0.6.2","0.6.3","0.7.0","0.7.1","0.7.2","0.7.3","0.7.4","0.7.5","0.7.6","0.8.0","0.8.1","0.8.2","0.8.3","0.8.4","0.8.5","0.8.6","0.8.7","1.0.0","1.0.0a1","1.0.0a2","1.0.0a3","1.0.0a4","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.7","1.0.8","1.1.0","1.1.0a7","1.2.0","1.2.1","1.2.10","1.2.2","1.2.3","1.2.4","1.2.5","1.2.6","1.2.7","1.2.8","1.2.9"]},{"source":"osv","ecosystem":"PyPI","package":"chatterbot","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.2.11"}]}],"versions":["0.0.0","0.0.1","0.0.2","0.0.3","0.0.4","0.0.5","0.1.0","0.1.1","0.1.2","0.2.0","0.2.1","0.2.2","0.2.3","0.2.4","0.2.5","0.2.6","0.2.7","0.2.8","0.2.9","0.3.0","0.3.1","0.3.2","0.3.3","0.3.4","0.3.5","0.3.6","0.3.7","0.4.0","0.4.1","0.4.10","0.4.11","0.4.12","0.4.13","0.4.2","0.4.3","0.4.4","0.4.5","0.4.6","0.4.7","0.4.8","0.4.9","0.5.0","0.5.1","0.5.2","0.5.3","0.5.4","0.5.5","0.6.0","0.6.1","0.6.2","0.6.3","0.7.0","0.7.1","0.7.2","0.7.3","0.7.4","0.7.5","0.7.6","0.8.0","0.8.1","0.8.2","0.8.3","0.8.4","0.8.5","0.8.6","0.8.7","1.0.0","1.0.0a1","1.0.0a2","1.0.0a3","1.0.0a4","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.7","1.0.8","1.1.0","1.1.0a7","1.2.0","1.2.1","1.2.10","1.2.2","1.2.3","1.2.4","1.2.5","1.2.6","1.2.7","1.2.8","1.2.9"]}],"products":[{"vendor":"chatterbot","product":"chatterbot"},{"vendor":"gunthercox","product":"chatterbot"}],"references":[{"url":"https://github.com/gunthercox/ChatterBot/security/advisories/GHSA-v4w8-49pv-mf72","tags":["x_refsource_CONFIRM","Exploit","Vendor Advisory","advisory","web"]},{"url":"https://github.com/gunthercox/ChatterBot/pull/2432","tags":["x_refsource_MISC","Issue Tracking","fix","web"]},{"url":"https://github.com/gunthercox/ChatterBot/commit/de89fe648139f8eeacc998ad4524fab291a378cf","tags":["x_refsource_MISC","Patch","fix","web"]},{"url":"https://github.com/gunthercox/ChatterBot/releases/tag/1.2.11","tags":["x_refsource_MISC","Product","Release Notes","web"]},{"url":"https://github.com/user-attachments/assets/4ee845c4-b847-4854-84ec-4b2fb2f7090f","tags":["x_refsource_MISC","Exploit","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-23842","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-v4w8-49pv-mf72","tags":["advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/23xxx/CVE-2026-23842.json","tags":["advisory"]},{"url":"https://github.com/gunthercox/ChatterBot","tags":["package"]},{"url":"https://pypi.org/project/chatterbot","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-23842","title":"ChatterBot has Denial of Service via Database Connection Pool Exhaustion","description":"ChatterBot is a machine learning, conversational dialog engine for creating chat bots. ChatterBot versions up to 1.2.10 are vulnerable to a denial-of-service condition caused by improper database session and connection pool management. Concurrent invocations of the get_response() method can exhaust the underlying SQLAlchemy connection pool, resulting in persistent service unavailability and requiring a manual restart to recover. Version 1.2.11 fixes the issue.","status":"published","published":"2026-01-19T18:39:37.059Z","modified":"2026-01-20T20:05:48.462Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"cna"}],"cwes":["CWE-400"],"updated_at":"2026-11-02T13:42:15.603999Z"}],"euvd":[{"id":"EUVD-2026-3299","description":"ChatterBot is a machine learning, conversational dialog engine for creating chat bots. ChatterBot versions up to 1.2.10 are vulnerable to a denial-of-service condition caused by improper database session and connection pool management. Concurrent invocations of the get_response() method can exhaust the underlying SQLAlchemy connection pool, resulting in persistent service unavailability and requiring a manual restart to recover. Version 1.2.11 fixes the issue.","status":"published","published":"2026-01-19T18:39:37Z","modified":"2026-01-20T20:05:48Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T19:48:49.964072Z"}],"ghsa":[{"id":"GHSA-v4w8-49pv-mf72","title":"ChatterBot Vulnerable to Denial of Service via Database Connection Pool Exhaustion","description":"### Summary\nChatterBot versions up to 1.2.10 are vulnerable to a denial-of-service condition caused by improper database session and connection pool management. Concurrent invocations of the get_response() method can exhaust the underlying SQLAlchemy connection pool, resulting in persistent service unavailability and requiring a manual restart to recover.\n\n### Details\nChatterBot relies on SQLAlchemy for database access and uses a connection pool with default limits. The get_response() method does not enforce concurrency limits, rate limiting, or explicit session lifecycle controls.\n\nWhen multiple threads concurrently invoke get_response(), database connections are rapidly consumed and not released in a timely manner. This leads to exhaustion of the SQLAlchemy QueuePool, causing subsequent requests to block and eventually fail with a TimeoutError.\n\nThis issue can be triggered without authentication in deployments where ChatterBot is exposed as a chatbot service, making it exploitable by remote attackers to cause denial of service.\n\nPoC Video: \nhttps://github.com/user-attachments/assets/4ee845c4-b847-4854-84ec-4b2fb2f7090f\n\n### PoC\n1. Install ChatterBot version 1.2.10.\n2. Use the default database configuration (SQLite / SQLAlchemy).\n3. Run the following Python script to invoke concurrent requests:\n\nfrom chatterbot import ChatBot\nimport threading\n\nbot = ChatBot(\"dos-test\")\n\ndef attack():\n    bot.get_response(\"hello\")\n\nthreads = []\nfor _ in range(30):\n    t = threading.Thread(target=attack)\n    t.start()\n    threads.append(t)\n\nfor t in threads:\n    t.join()\n\n4. Observe that the application becomes unresponsive and raises SQLAlchemy TimeoutError exceptions indicating exhaustion of the connection pool.\n\n### Impact\nThis vulnerability allows an attacker to trigger a denial-of-service condition by exhausting the database connection pool. Once triggered, the chatbot becomes unresponsive to legitimate users and requires a manual restart to restore functionality.\n\nAll deployments of ChatterBot version 1.2.10 or earlier that allow concurrent access to the get_response() method are impacted.","status":"published","published":"2026-01-20T18:36:17Z","modified":"2026-01-20T18:36:18Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-400"],"updated_at":"2026-11-02T14:39:18.564331Z"}],"nvd":[{"id":"CVE-2026-23842","description":"ChatterBot is a machine learning, conversational dialog engine for creating chat bots. ChatterBot versions up to 1.2.10 are vulnerable to a denial-of-service condition caused by improper database session and connection pool management. Concurrent invocations of the get_response() method can exhaust the underlying SQLAlchemy connection pool, resulting in persistent service unavailability and requiring a manual restart to recover. Version 1.2.11 fixes the issue.","status":"published","published":"2026-01-19T19:16:04.51Z","modified":"2026-06-17T10:22:11.35Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"secondary"}],"cwes":["CWE-400"],"updated_at":"2026-11-02T14:12:04.066712Z"}],"osv":[{"id":"CVE-2026-23842","title":"ChatterBot has Denial of Service via Database Connection Pool Exhaustion","description":"ChatterBot is a machine learning, conversational dialog engine for creating chat bots. ChatterBot versions up to 1.2.10 are vulnerable to a denial-of-service condition caused by improper database session and connection pool management. Concurrent invocations of the get_response() method can exhaust the underlying SQLAlchemy connection pool, resulting in persistent service unavailability and requiring a manual restart to recover. Version 1.2.11 fixes the issue.","status":"published","published":"2026-01-19T18:39:37.059Z","modified":"2026-10-28T02:30:49.094100175Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-400"],"updated_at":"2026-11-02T15:44:59.079784Z"},{"id":"GHSA-v4w8-49pv-mf72","title":"ChatterBot Vulnerable to Denial of Service via Database Connection Pool Exhaustion","description":"### Summary\nChatterBot versions up to 1.2.10 are vulnerable to a denial-of-service condition caused by improper database session and connection pool management. Concurrent invocations of the get_response() method can exhaust the underlying SQLAlchemy connection pool, resulting in persistent service unavailability and requiring a manual restart to recover.\n\n### Details\nChatterBot relies on SQLAlchemy for database access and uses a connection pool with default limits. The get_response() method does not enforce concurrency limits, rate limiting, or explicit session lifecycle controls.\n\nWhen multiple threads concurrently invoke get_response(), database connections are rapidly consumed and not released in a timely manner. This leads to exhaustion of the SQLAlchemy QueuePool, causing subsequent requests to block and eventually fail with a TimeoutError.\n\nThis issue can be triggered without authentication in deployments where ChatterBot is exposed as a chatbot service, making it exploitable by remote attackers to cause denial of service.\n\nPoC Video: \nhttps://github.com/user-attachments/assets/4ee845c4-b847-4854-84ec-4b2fb2f7090f\n\n### PoC\n1. Install ChatterBot version 1.2.10.\n2. Use the default database configuration (SQLite / SQLAlchemy).\n3. Run the following Python script to invoke concurrent requests:\n\nfrom chatterbot import ChatBot\nimport threading\n\nbot = ChatBot(\"dos-test\")\n\ndef attack():\n    bot.get_response(\"hello\")\n\nthreads = []\nfor _ in range(30):\n    t = threading.Thread(target=attack)\n    t.start()\n    threads.append(t)\n\nfor t in threads:\n    t.join()\n\n4. Observe that the application becomes unresponsive and raises SQLAlchemy TimeoutError exceptions indicating exhaustion of the connection pool.\n\n### Impact\nThis vulnerability allows an attacker to trigger a denial-of-service condition by exhausting the database connection pool. Once triggered, the chatbot becomes unresponsive to legitimate users and requires a manual restart to restore functionality.\n\nAll deployments of ChatterBot version 1.2.10 or earlier that allow concurrent access to the get_response() method are impacted.","status":"published","published":"2026-01-20T18:36:17Z","modified":"2026-07-07T17:56:29.90263267Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-400"],"updated_at":"2026-11-02T15:46:56.639206Z"},{"id":"PYSEC-2026-1244","title":"ChatterBot Vulnerable to Denial of Service via Database Connection Pool Exhaustion","description":"### Summary\nChatterBot versions up to 1.2.10 are vulnerable to a denial-of-service condition caused by improper database session and connection pool management. Concurrent invocations of the get_response() method can exhaust the underlying SQLAlchemy connection pool, resulting in persistent service unavailability and requiring a manual restart to recover.\n\n### Details\nChatterBot relies on SQLAlchemy for database access and uses a connection pool with default limits. The get_response() method does not enforce concurrency limits, rate limiting, or explicit session lifecycle controls.\n\nWhen multiple threads concurrently invoke get_response(), database connections are rapidly consumed and not released in a timely manner. This leads to exhaustion of the SQLAlchemy QueuePool, causing subsequent requests to block and eventually fail with a TimeoutError.\n\nThis issue can be triggered without authentication in deployments where ChatterBot is exposed as a chatbot service, making it exploitable by remote attackers to cause denial of service.\n\nPoC Video: \nhttps://github.com/user-attachments/assets/4ee845c4-b847-4854-84ec-4b2fb2f7090f\n\n### PoC\n1. Install ChatterBot version 1.2.10.\n2. Use the default database configuration (SQLite / SQLAlchemy).\n3. Run the following Python script to invoke concurrent requests:\n\nfrom chatterbot import ChatBot\nimport threading\n\nbot = ChatBot(\"dos-test\")\n\ndef attack():\n    bot.get_response(\"hello\")\n\nthreads = []\nfor _ in range(30):\n    t = threading.Thread(target=attack)\n    t.start()\n    threads.append(t)\n\nfor t in threads:\n    t.join()\n\n4. Observe that the application becomes unresponsive and raises SQLAlchemy TimeoutError exceptions indicating exhaustion of the connection pool.\n\n### Impact\nThis vulnerability allows an attacker to trigger a denial-of-service condition by exhausting the database connection pool. Once triggered, the chatbot becomes unresponsive to legitimate users and requires a manual restart to restore functionality.\n\nAll deployments of ChatterBot version 1.2.10 or earlier that allow concurrent access to the get_response() method are impacted.","status":"published","published":"2026-07-07T16:03:19.183779Z","modified":"2026-07-07T17:47:27.106045442Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:52:54.622769Z"}]}}
