Skip to content
Heist/ feed
Back to feed
Medium

wicked: out-of-bounds read in the DHCPv4 option parser due to payload length taken from the IP total length

Type: advisorySources: OSV

An out-of-bounds read was found in the DHCPv4 packet capture code of wicked. ni_capture_inspect_udp_header() in src/capture.c reports the IP total length as the payload length instead of the length of the remaining UDP payload. Consequently, the DHCP option walker in the DHCPv4 client (wickedd-dhcp4) reads up to ihl + 8 bytes — at most 68 bytes — past the end of the 1500-byte packet receive buffer. An unauthenticated attacker on the same network who sends a crafted DHCP/UDP packet can make the client parse adjacent heap memory as DHCP options, so that heap contents such as allocator metadata or pointer values can be interpreted into lease fields. The over-read is bounded to 68 bytes; no memory write, no attacker control over the adjacent bytes and no remote exfiltration primitive has been demonstrated. This issue affects wicked up to and including version 0.6.80.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-71402
Confirmed fixed CVEs
Not specified
Updated in this feed
2 Nov 2026, 20:09 UTC · Revision 1

Source evidence

wicked: out-of-bounds read in the DHCPv4 option parser due to payload length taken from the IP total length

core-osv · Original source

Published 27 Aug 2026, 15:09 UTC

An out-of-bounds read was found in the DHCPv4 packet capture code of wicked. ni_capture_inspect_udp_header() in src/capture.c reports the IP total length as the payload length instead of the length of the remaining UDP payload. Consequently, the DHCP option walker in the DHCPv4 client (wickedd-dhcp4) reads up to ihl + 8 bytes — at most 68 bytes — past the end of the 1500-byte packet receive buffer. An unauthenticated attacker on the same network who sends a crafted DHCP/UDP packet can make the client parse adjacent heap memory as DHCP options, so that heap contents such as allocator metadata or pointer values can be interpreted into lease fields. The over-read is bounded to 68 bytes; no memory write, no attacker control over the adjacent bytes and no remote exfiltration primitive has been demonstrated. This issue affects wicked up to and including version 0.6.80.

osv:CVE-2026-71402
Complete source record
{
  "id": "9f68739f8de2b06a7c36c13336e154c46af0b24e8fc73b6003bdd5c4e635f341",
  "url": "https://osv.dev/vulnerability/CVE-2026-71402",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "wicked: out-of-bounds read in the DHCPv4 option parser due to payload length taken from the IP total length",
    "summary": "An out-of-bounds read was found in the DHCPv4 packet capture code of wicked. ni_capture_inspect_udp_header() in src/capture.c reports the IP total length as the payload length instead of the length of the remaining UDP payload. Consequently, the DHCP option walker in the DHCPv4 client (wickedd-dhcp4) reads up to ihl + 8 bytes — at most 68 bytes — past the end of the 1500-byte packet receive buffer. An unauthenticated attacker on the same network who sends a crafted DHCP/UDP packet can make the client parse adjacent heap memory as DHCP options, so that heap contents such as allocator metadata or pointer values can be interpreted into lease fields. The over-read is bounded to 68 bytes; no memory write, no attacker control over the adjacent bytes and no remote exfiltration primitive has been demonstrated. This issue affects wicked up to and including version 0.6.80.",
    "evidence": "osv:CVE-2026-71402",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-71402",
      "aliases": [
        "CVE-2026-71402"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:A/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/opensuse/wicked",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "last_affected": "d6b6f7d298363f8c7ba56bd3e99a2980d5e294cf"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "last_affected": "0.6.80"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StandardRange"
                  },
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "last_affected": "0.6.80"
                      }
                    ],
                    "source": "DESCRIPTION"
                  }
                ]
              }
            }
          ],
          "versions": [
            "version-0.6.80",
            "version-0.6.78",
            "version-0.6.77",
            "version-0.6.76",
            "version-0.6.75",
            "version-0.6.73",
            "version-0.6.74",
            "version-0.6.72",
            "version-0.6.70",
            "version-0.6.71",
            "version-0.6.69",
            "version-0.6.68",
            "version-0.6.67",
            "version-0.6.64",
            "version-0.6.60",
            "version-0.6.66",
            "version-0.6.65",
            "version-0.6.62",
            "version-0.6.61",
            "version-0.6.57",
            "version-0.6.56",
            "version-0.6.55",
            "version-0.6.54",
            "version-0.6.52",
            "version-0.6.53",
            "version-0.6.51",
            "version-0.6.50",
            "version-0.6.49",
            "version-0.6.48",
            "version-0.6.31",
            "version-0.6.47",
            "version-0.6.46",
            "version-0.6.45",
            "version-0.6.44",
            "version-0.6.43",
            "version-0.6.42",
            "version-0.6.40",
            "version-0.6.41",
            "version-0.6.39",
            "version-0.6.38",
            "version-0.6.37",
            "version-0.6.36",
            "version-0.6.35",
            "version-0.6.34",
            "version-0.6.33",
            "version-0.6.32",
            "version-0.6.30",
            "version-0.6.29",
            "version-0.6.28",
            "version-0.6.27",
            "version-0.6.26",
            "version-0.6.25",
            "version-0.6.24",
            "version-0.6.23",
            "version-0.6.22",
            "version-0.6.21",
            "version-0.6.20",
            "version-0.6.19",
            "version-0.6.18",
            "version-0.6.17",
            "version-0.6.16",
            "version-0.6.15",
            "version-0.6.14",
            "version-0.6.13",
            "version-0.6.12",
            "version-0.6.11",
            "version-0.6.10",
            "version-0.6.9",
            "version-0.6.8",
            "version-0.6.7",
            "version-0.6.6",
            "version-0.6.5",
            "version-0.6.4",
            "version-0.6.3",
            "version-0.6.2",
            "version-0.6.1",
            "version-0.6.0",
            "version-0.5.38",
            "version-0.5.37",
            "version-0.5.36",
            "version-0.5.35",
            "version-0.5.34",
            "version-0.5.33",
            "version-0.5.32",
            "version-0.5.31",
            "version-0.5.30",
            "version-0.5.29",
            "version-0.5.28",
            "version-0.5.27",
            "version-0.5.26",
            "version-0.5.25",
            "version-0.5.24",
            "version-0.5.23",
            "version-0.5.22",
            "version-0.5.21",
            "version-0.5.20",
            "version-0.5.19",
            "version-0.5.18",
            "version-0.5.17",
            "version-0.5.16",
            "version-0.5.15",
            "version-0.5.14",
            "version-0.5.13",
            "version-0.5.12",
            "version-0.5.11",
            "version-0.5.10",
            "version-0.5.9",
            "version-0.5.8",
            "version-0.5.7",
            "factory-rq-221054",
            "version-0.5.6",
            "factory-rq-214794",
            "version-0.5.5",
            "factory-rq-214306",
            "factory-rq-213496",
            "version-0.5.4",
            "factory-2014010901",
            "version-0.5.3",
            "factory-2013120601",
            "version-0.5.2",
            "factory-2013100201",
            "version-0.5.1",
            "factory-2013092701",
            "factory-2013091802",
            "factory-2013091801",
            "factory-2013091601"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-71402.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:23.399573881Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/71xxx/CVE-2026-71402.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-71402",
        "https://bugzilla.suse.com/show_bug.cgi?id=1274627",
        "https://github.com/openSUSE/wicked/pull/1079",
        "https://github.com/openSUSE/wicked"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-125",
          "CWE-130"
        ],
        "cna_assigner": "suse",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/71xxx/CVE-2026-71402.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-71402",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 489642,
  "published_at": "2026-08-27T15:09:41.984+00:00"
}