UBUNTU-CVE-2026-48860 (CVE-2026-48860)
Vulnerability from osv_ubuntu – Published: 2026-06-10 16:17 – Updated: 2026-10-06 20:53 – Source websiteReliance 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 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.
{
"affected": [
{
"ecosystem_specific": {
"binaries": [
{
"binary_name": "erlang",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-asn1",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-base",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-common-test",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-crypto",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-debugger",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-dialyzer",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-diameter",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-edoc",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-eldap",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-et",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-eunit",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-examples",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-ftp",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-inets",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-jinterface",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-megaco",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-mnesia",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-mode",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-nox",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-observer",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-odbc",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-os-mon",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-parsetools",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-public-key",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-reltool",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-runtime-tools",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-snmp",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-src",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-ssh",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-ssl",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-syntax-tools",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-tftp",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-tools",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-wx",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-x11",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-xmerl",
"binary_version": "1:27.3.4.1+dfsg-1ubuntu0.1"
}
]
},
"package": {
"ecosystem": "Ubuntu:25.10",
"name": "erlang",
"purl": "pkg:deb/ubuntu/erlang@1:27.3.4.1+dfsg-1ubuntu0.1?arch=source\u0026distro=questing"
},
"ranges": [
{
"events": [
{
"introduced": "0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"1:27.3+dfsg-1ubuntu1",
"1:27.3+dfsg-1ubuntu1.1",
"1:27.3.4.1+dfsg-1",
"1:27.3.4.1+dfsg-1build1",
"1:27.3.4.1+dfsg-1ubuntu0.1"
]
},
{
"ecosystem_specific": {
"binaries": [
{
"binary_name": "erlang",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-asn1",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-base",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-common-test",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-crypto",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-debugger",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-dialyzer",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-diameter",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-edoc",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-eldap",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-et",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-eunit",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-examples",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-ftp",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-inets",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-jinterface",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-megaco",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-mnesia",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-mode",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-nox",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-observer",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-odbc",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-os-mon",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-parsetools",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-public-key",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-reltool",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-runtime-tools",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-snmp",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-src",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-ssh",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-ssl",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-syntax-tools",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-tftp",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-tools",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-wx",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-x11",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
},
{
"binary_name": "erlang-xmerl",
"binary_version": "1:27.3.4.6+dfsg-1ubuntu0.1"
}
]
},
"package": {
"ecosystem": "Ubuntu:26.04:LTS",
"name": "erlang",
"purl": "pkg:deb/ubuntu/erlang@1:27.3.4.6+dfsg-1ubuntu0.1?arch=source\u0026distro=resolute"
},
"ranges": [
{
"events": [
{
"introduced": "0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"1:27.3.4.1+dfsg-1build1",
"1:27.3.4.3+dfsg-1",
"1:27.3.4.4+dfsg-1",
"1:27.3.4.6+dfsg-1",
"1:27.3.4.6+dfsg-1ubuntu0.1"
]
}
],
"aliases": [],
"details": "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\u0027s 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\u00a026.0 before OTP\u00a027.3.4.13, OTP\u00a028.5.0.2, and OTP\u00a029.0.2, corresponding to ssl from 11.0 before 11.2.12.9, 11.6.0.2, and 11.7.2.",
"id": "UBUNTU-CVE-2026-48860",
"modified": "2026-10-06T20:53:30Z",
"published": "2026-06-10T16:17:00Z",
"references": [
{
"type": "REPORT",
"url": "https://ubuntu.com/security/CVE-2026-48860"
},
{
"type": "REPORT",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-48860"
},
{
"type": "REPORT",
"url": "https://github.com/erlang/otp/security/advisories/GHSA-gp7x-mfv6-52cv"
},
{
"type": "REPORT",
"url": "https://cna.erlef.org/cves/CVE-2026-48860.html"
},
{
"type": "REPORT",
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-48860"
}
],
"related": [],
"schema_version": "1.7.0",
"severity": [
{
"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",
"type": "CVSS_V4"
},
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N",
"type": "CVSS_V3"
},
{
"score": "medium",
"type": "Ubuntu"
}
],
"upstream": [
"CVE-2026-48860"
]
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.