{"id":"EEF-CVE-2026-48860","summary":"Distribution-over-TLS LAN allowlist silently bypassed due to sockname/peername confusion in inet_tls_dist","details":"## Summary\n\nReliance on IP Address for Authentication vulnerability in Erlang/OTP ssl (inet_tls_dist module) allows unauthenticated bypass of the distribution-over-TLS LAN allowlist.\n\nThe `inet_tls_dist:check_ip/1` function, which enforces a LAN allowlist for Erlang distribution over TLS, calls `inet:sockname/1` instead of `inet:peername/1` to obtain the peer's IP address. Because `inet:sockname/1` returns the local socket address, both the local IP and the supposed peer IP resolve to the same value, causing the subnet mask comparison to always succeed regardless of the actual remote address. Any holder of a CA-signed TLS certificate can therefore bypass the LAN restriction and gain full Erlang distribution access to the node, including `rpc:call/4` and `code:load_binary/3`.\n\nThis vulnerability is associated with program file `lib/ssl/src/inet_tls_dist.erl`.\n\nThis issue affects OTP from OTP 26.0 before OTP 27.3.4.13, OTP 28.5.0.2, and OTP 29.0.2, corresponding to ssl from 11.0 before 11.2.12.9, 11.6.0.2, and 11.7.2.\n\n## Workarounds\n\nImplement a custom `verify_fun` SSL option that correctly checks the peer IP address using `inet:peername/1` on the socket.\n\n## Configurations\n\nThe Erlang distribution must be configured to use TLS (`inet_tls_dist`) with the `check_ip` option enabled. The default Erlang distribution configuration does not use TLS and is not affected.","aliases":["CVE-2026-48860","GHSA-gp7x-mfv6-52cv"],"modified":"2026-09-24T20:45:41.924371139Z","published":"2026-06-10T14:35:49.987Z","database_specific":{"cwe_ids":["CWE-1025","CWE-863"],"capec_ids":["CAPEC-1","CAPEC-115"],"cpe_ids":["cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"]},"references":[{"type":"ADVISORY","url":"https://github.com/erlang/otp/security/advisories/GHSA-gp7x-mfv6-52cv"},{"type":"WEB","url":"https://cna.erlef.org/cves/CVE-2026-48860.html"},{"type":"WEB","url":"https://www.erlang.org/doc/system/versions.html#order-of-versions"},{"type":"WEB","url":"https://github.com/erlang/otp/commit/7a08c5507862a7011568506d0c17b1fdef30bee4"},{"type":"FIX","url":"https://github.com/erlang/otp/commit/0209a6df65d605552b378273027b3968b35f26b4"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/erlang/otp","events":[{"introduced":"7a08c5507862a7011568506d0c17b1fdef30bee4"},{"fixed":"0209a6df65d605552b378273027b3968b35f26b4"}]}],"database_specific":{"source":"https://cna.erlef.org/osv/EEF-CVE-2026-48860.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:A/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"}],"credits":[{"name":"Lukas Backström","type":"FINDER"},{"name":"Ingela Anderton Andin","type":"REMEDIATION_DEVELOPER"},{"name":"Raimo Niskanen","type":"REMEDIATION_REVIEWER"},{"name":"Jakub Witczak","type":"REMEDIATION_REVIEWER"}]}