{"answers":{"affected":"1 open source package ship an affected version, including bandit.","exploited":"It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-105659 exists.","fix":"Upgrade bandit to 1.13.0 or later.","what":"CVE-2026-105659 is a high-severity denial of service vulnerability in mtrudel bandit, published on 14 Oct 2026. An attacker can exploit it over the internet without logging in, with no action from the victim."},"fix_prompt":"Check this codebase for CVE-2026-105659 and fix it if it is affected.\n\nWhat it is: CVE-2026-105659 is a high-severity denial of service vulnerability in mtrudel bandit, published on 14 Oct 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.\nExploitation: It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-105659 exists.\n\nAffected packages and fixed versions:\n- bandit (Hex): affected from 1.4.0; fixed in 1.13.0\n\nTask:\n1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.\n2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2026-105659/ (Markdown: https://insights.sbomify.com/CVE-2026-105659/index.md)","id":"CVE-2026-105659","markdown":"https://insights.sbomify.com/CVE-2026-105659/index.md","name":"CVE-2026-105659","record":{"aliases":["EEF-CVE-2026-105659","GHSA-69m6-wcv4-rwcf"],"analysis":{"component_type":"server_software","fix_type":"upgrade","impacts":["denial_of_service"],"network_reachable":"yes","non_default_config":false,"product_category":"Elixir HTTP/2 server","requires_auth":"none","summary":"An unauthenticated remote attacker can exhaust server resources by sending slow HTTP/2 WINDOW_UPDATE frames, causing indefinite process pinning and denial of service.","user_interaction":"not_required","vuln_class":"denial_of_service"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"EEF","cpe":[],"cvss":{"score":8.7,"severity":"high","source":"cna","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N","version":"4.0"},"cwes":[{"id":"CWE-400","name":"Uncontrolled Resource Consumption"}],"description":"Uncontrolled Resource Consumption vulnerability in mtrudel bandit allows an unauthenticated remote attacker to pin HTTP/2 stream processes indefinitely via a trickle of small WINDOW_UPDATE frames. A stream whose response outruns the connection or stream send window blocks until the peer grants more window, and each block carries a 15 second deadline. Both deadlines restart whenever the peer makes partial progress. Bandit.HTTP2.Connection.finish_data/5 re-queues a partially advanced send in pending_sends with a fresh expires_at, so every WINDOW_UPDATE on stream 0, and every SETTINGS frame, resets the clock. Bandit.HTTP2.Stream.send_data/3 recurses on each stream WINDOW_UPDATE and re-arms a fresh after read_timeout. A peer that grants a few bytes every few seconds keeps the blocked stream process, its Plug state and any resource it holds mid-response alive for as long as it keeps dripping, and repeats this across streams and connections to exhaust server processes and memory.\n\nThe two paths are independent. The stream-level block is reached on its own by widening the connection window with a large WINDOW_UPDATE on stream 0 and shrinking the per-stream window with a small SETTINGS_INITIAL_WINDOW_SIZE, so closing only the connection-level path leaves it exploitable.\n\nThis issue affects bandit: from 1.4.0 before 1.13.0.","ecosystems":["Hex"],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"weaponised"},"has_fix":true,"headline":"Denial of service in bandit","id":"CVE-2026-105659","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":"Hex","product":null,"products":[],"type":"denial_of_service","year":"2026"},"n_packages":1,"n_references":5,"next":{"headline":"Unvalidated HTTP/1 request-target authority lets a client choose conn.host and conn.port in Bandit","id":"CVE-2026-105660"},"packages":[{"ecosystem":"Hex","fixed":["1.13.0"],"introduced":["1.4.0"],"last_affected":[],"package":"bandit","purl":"pkg:hex/bandit","source":"EEF-CVE-2026-105659"}],"prev":{"headline":"Ghost: Password Hash Ordering Disclosure in Ghost Admin API","id":"CVE-2026-105652"},"products":["bandit"],"published":"2026-10-14","related":[],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"CC BY 4.0","name":"Erlang Ecosystem Foundation","prefix":"EEF"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":"yes","exploitation":"poc","technical_impact":"partial"},"state":"PUBLISHED","updated":"2026-10-16","vendors":["mtrudel"]},"summary":"An unauthenticated remote attacker can exhaust server resources by sending slow HTTP/2 WINDOW_UPDATE frames, causing indefinite process pinning and denial of service.","url":"https://insights.sbomify.com/CVE-2026-105659/"}