CVE-2026-19577

Source
https://cve.org/CVERecord?id=CVE-2026-19577
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-19577.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-19577
Aliases
  • GHSA-vv76-4m89-95q5
Published
2026-10-11T17:14:55Z
Modified
2026-11-04T13:07:38Z
Severity
  • 7.1 (High) CVSS_V3 - CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H CVSS Calculator
Summary
Out-of-bounds read in IPv6 route forwarding when the nexthop neighbor has no link-layer address
Details

net_route_ipv6_packet() in subsys/net/ip/route_ipv6.c resolved the nexthop's link-layer address with net_nbr_get_lladdr(nbr->idx) without first checking whether the neighbor cache entry actually had a linked link-layer address. An unresolved neighbor carries idx == NET_NBR_LLADDR_UNKNOWN (0xff), and net_nbr_get_lladdr() in subsys/net/ip/nbr.c performs no runtime bounds check beyond a NET_ASSERT, returning &net_neighbor_lladdr[255] — roughly 2.5 KB past the end of an array whose default size is CONFIG_NET_IPV6_MAX_NEIGHBORS (8). Because the returned pointer is never NULL, the following lladdr == NULL guard does not catch it.

The function is reached from ipv6_route_packet() in subsys/net/ip/ipv6.c for every received unicast IPv6 packet whose destination is not a local address on the receiving interface; CONFIG_NET_IPV6_ROUTE is enabled by default whenever the IPv6 neighbor cache is, so no router or forwarding configuration is needed. net_route_ipv6_get_info() returns the packet's destination itself as the nexthop when a neighbor cache entry for it exists, and the cache lookup does not skip INCOMPLETE entries. An unauthenticated attacker on the same link can therefore force the unresolved state — for example by eliciting traffic to a spoofed, non-existent neighbor address so that net_ipv6_send_ns() creates an INCOMPLETE entry, or by sending a Router Advertisement with no source link-layer address option, which creates a persistently unresolved router neighbor — and then send a packet addressed to that neighbor.

The result is an out-of-bounds read at a fixed index past the neighbor link-layer address array. On builds with CONFIG_ASSERT enabled the assertion fires and the device panics, giving a repeatable remote denial of service. With assertions disabled, the stale out-of-bounds struct net_linkaddr drives a memcmp() over an attacker-uninfluenced length and, when its len byte passes the NET_LINK_ADDR_MAX_LENGTH check, up to 8 bytes of unrelated static RAM are copied into the outgoing frame's destination link-layer address and transmitted on the link, disclosing them to any listener. There is no out-of-bounds write and the offset is not attacker-controlled, which bounds the impact.

Database specific
{
    "cna_assigner": "zephyr",
    "cwe_ids": [
        "CWE-125"
    ],
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/19xxx/CVE-2026-19577.json"
}
References

Affected packages

Git / github.com/zephyrproject-rtos/zephyr

Affected ranges

Type
GIT
Repo
https://github.com/zephyrproject-rtos/zephyr
Events
Database specific
Show details
{
    "extracted_events": [
        {
            "range": [
                {
                    "introduced": "1.8.0"
                },
                {
                    "fixed": "4.5.0"
                }
            ],
            "source": "AFFECTED_FIELD",
            "strategy": "StandardRange"
        },
        {
            "range": [
                {
                    "fixed": "b0b0e8973d1967114adbb9ed1611d448b5a46519"
                }
            ],
            "source": "REFERENCES_COMMIT"
        }
    ]
}

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-19577.json"
vanir_signatures
[
    {
        "deprecated": false,
        "digest": {
            "function_hash": "294095077573764182615844699345687502981",
            "length": 1448
        },
        "id": "CVE-2026-19577-35963a4a",
        "signature_type": "Function",
        "signature_version": "v1",
        "source": "https://github.com/zephyrproject-rtos/zephyr/commit/b0b0e8973d1967114adbb9ed1611d448b5a46519",
        "target": {
            "file": "subsys/net/ip/route_ipv6.c",
            "function": "net_route_ipv6_packet"
        }
    },
    {
        "deprecated": false,
        "digest": {
            "line_hashes": [
                "132025590957025858420202237637469035475",
                "113734926947707747502488306166286684862",
                "193632283557702553665683066644584351259",
                "60751968220922427659699602758961822811"
            ],
            "threshold": 0.9
        },
        "id": "CVE-2026-19577-9c77e533",
        "signature_type": "Line",
        "signature_version": "v1",
        "source": "https://github.com/zephyrproject-rtos/zephyr/commit/b0b0e8973d1967114adbb9ed1611d448b5a46519",
        "target": {
            "file": "subsys/net/ip/route_ipv6.c"
        }
    }
]
vanir_signatures_modified
"2026-11-04T13:07:38Z"