{"schema_version":"1.9.0","id":"EEF-CVE-2026-23943","published":"2026-03-13T09:11:57.794Z","modified":"2026-09-08T03:30:05.293416767Z","aliases":["CVE-2026-23943","GHSA-c836-qprm-jw9r"],"summary":"Pre-auth SSH DoS via unbounded zlib inflate","details":"## Summary\n\nImproper Handling of Highly Compressed Data (Compression Bomb) vulnerability in Erlang OTP ssh (ssh\\_transport modules) allows Denial of Service via Resource Depletion.\n\nThe SSH transport layer advertises legacy zlib compression by default and inflates attacker-controlled payloads pre-authentication without any size limit, enabling reliable memory exhaustion DoS.\n\nTwo compression algorithms are affected:\n\n\\* zlib: Activates immediately after key exchange, enabling unauthenticated attacks\n\\* zlib@openssh.com: Activates post-authentication, enabling authenticated attacks\n\nEach SSH packet can decompress ~255 MB from 256 KB of wire data (1029:1 amplification ratio). Multiple packets can rapidly exhaust available memory, causing OOM kills in memory-constrained environments.\n\nThis vulnerability is associated with program files lib/ssh/src/ssh\\_transport.erl and program routines ssh\\_transport:decompress/2, ssh\\_transport:handle\\_packet\\_part/4.\n\nThis issue affects OTP from OTP 17.0 before OTP 28.4.1, OTP 27.3.4.9 and OTP 26.2.5.18, corresponding to ssh from 3.0.1 before 5.5.1, 5.2.11.6 and 5.1.4.14.\n\n## Workarounds\n\nBest workaround - Disable all compression:\n\n{preferred\\_algorithms, \\[{compression, \\['none'\\]}\\]}\n\nAlternative mitigations (less secure):\n\n\\* Disable only pre-auth zlib compression (authenticated users can still exploit via zlib@openssh.com):\n  {modify\\_algorithms, \\[{rm, \\[{compression, \\['zlib'\\]}\\]}\\]}\n\\* Limit concurrent sessions (reduces attack surface but does not prevent exploitation):\n  {max\\_sessions, N}  % Cap total concurrent sessions (default is infinity)\n\n## Configurations\n\nThe SSH server or client must advertise zlib or zlib@openssh.com compression. Both are enabled by default. With zlib, the attack is pre-authentication; with zlib@openssh.com, authentication is required first.","affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/erlang/otp","events":[{"introduced":"07b8f441ca711f9812fad9e9115bab3c3aa92f79"},{"fixed":"43a87b949bdff12d629a8c34146711d9da93b1b1"},{"fixed":"93073c3bd338c60cd2bae715ce6a1d4ffc1a8fd3"},{"fixed":"0c1c04b191f6ab940e8fcfabce39eb5a8a6440a4"}]}],"versions":["patch-base-27","OTP-27.3.4","patch-base-26","OTP-26.2.5","OTP-28.4","OTP-27.0","OTP-26.2.5.9","OTP-28.0","OTP-26.2.5.17","OTP-27.3.4.8","OTP-27.3.4.6","OTP-27.3.4.7","OTP-26.2.5.16","OTP-26.2.5.12","OTP-27.3","OTP-27.3.4.5","OTP-27.3.4.4","OTP-26.2.5.15","OTP-26.2.3","OTP-28.1","OTP-27.3.4.3","OTP-27.3.3","OTP-26.2.5.14","OTP-27.3.4.2","OTP-26.0","OTP-26.2.5.13","OTP-25.0","OTP-27.3.4.1","OTP-28.0-rc4","OTP-26.2.5.11","OTP-27.3.2","OTP-28.0-rc3","OTP-26.2.5.10","OTP-27.2","OTP-28.0-rc2","OTP-27.3.1","OTP-28.0-rc1","OTP-26.2.5.8","OTP-26.2.5.7","OTP-26.2.5.6","OTP-27.1","OTP-26.2.5.5","OTP-26.2.5.4","OTP-26.2.5.3","OTP-26.2","OTP-26.2.5.2","OTP-26.2.5.1","OTP-26.2.4","OTP-27.0-rc3","OTP-27.0-rc2","OTP-27.0-rc1","OTP-24.0","OTP-26.1","OTP-26.0-rc3","OTP-26.0-rc2","OTP-26.0-rc1","OTP-23.0","OTP-21.0","OTP-25.0-rc3","OTP-25.0-rc2","OTP-25.0-rc1","OTP-22.0","OTP-24.0-rc3","OTP-24.0-rc2","OTP-24.0-rc1","OTP-23.0-rc3","OTP-23.0-rc2","OTP-23.0-rc1","OTP-20.0","OTP-22.0-rc3","OTP-22.0-rc2","OTP-22.0-rc1","OTP-19.0","OTP-21.0-rc2","OTP-18.0","OTP-21.0-rc1","OTP-17.0","OTP-20.0-rc2","OTP-20.0-rc1","OTP-19.0-rc2","OTP-19.0-rc1","OTP-18.0-rc1"],"database_specific":{"source":"https://cna.erlef.org/osv/EEF-CVE-2026-23943.json"}}],"references":[{"type":"ADVISORY","url":"https://github.com/erlang/otp/security/advisories/GHSA-c836-qprm-jw9r"},{"type":"WEB","url":"https://cna.erlef.org/cves/CVE-2026-23943.html"},{"type":"WEB","url":"https://www.erlang.org/doc/system/versions.html#order-of-versions"},{"type":"FIX","url":"https://github.com/erlang/otp/commit/43a87b949bdff12d629a8c34146711d9da93b1b1"},{"type":"FIX","url":"https://github.com/erlang/otp/commit/93073c3bd338c60cd2bae715ce6a1d4ffc1a8fd3"},{"type":"FIX","url":"https://github.com/erlang/otp/commit/0c1c04b191f6ab940e8fcfabce39eb5a8a6440a4"}],"database_specific":{"capec_ids":["CAPEC-130","CAPEC-490"],"cpe_ids":["cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"],"cwe_ids":["CWE-409"]},"severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N"}],"credits":[{"name":"Igor Morgenstern / Aisle Research","type":"FINDER"},{"name":"Michał Wąsowski","type":"REMEDIATION_DEVELOPER"},{"name":"Jakub Witczak","type":"REMEDIATION_REVIEWER"}]}