Vulnerability description

Reliance on IP Address for Authentication vulnerability in Erlang/OTP ssl (inet_tls_dist module) allows unauthenticated bypass of the distribution-over-TLS LAN allowlist.

The 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.

This vulnerability is associated with program file lib/ssl/src/inet_tls_dist.erl.

This issue affects OTP from OTP 26.0 before 29.0.2, 28.5.0.2 and 27.3.4.13 corresponding to ssl from 11.0 before 11.7.2, 11.6.0.2 and 11.2.12.9.

Affected

pkg:otp/ssl

Module Source File Routine
inet_tls_dist src/inet_tls_dist.erl inet_tls_dist:check_ip/1
Status Type Version Changes / Fixed in
affected otp 11.0
  • unaffected at 11.7.2
  • unaffected at 11.6.0.2
  • unaffected at 11.2.12.9

pkg:github/erlang/otp

Module Source File Routine
inet_tls_dist lib/ssl/src/inet_tls_dist.erl inet_tls_dist:check_ip/1
Status Type Version Changes / Fixed in
affected otp 26.0
affected git 7a08c55078 < 0209a6df65

Configurations

The 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.

Workarounds

Implement a custom verify_fun SSL option that correctly checks the peer IP address using inet:peername/1 on the socket.

References

Credits

  • Finder: Lukas Backström
  • Remediation developer: Ingela Anderton Andin
  • Remediation reviewer: Raimo Niskanen
  • Remediation reviewer: Jakub Witczak

CVE record as JSON:  GET /cves/CVE-2026-48860.json
OSV record as JSON:  GET /osv/EEF-CVE-2026-48860.json