⬢ DragonFlyBSD Kernel Audit
DF-3671 / verdict.json
← back to finding ↓ download raw
{
  "finding_id": "DF-3671",
  "status": "inconclusive",
  "reproduced": 0,
  "impact": "none",
  "confidence": "certain",
  "verdict": "Source-level certain, Info-class (DF-3643 parity): five clusters in ixgbe_common.c discard PHY/EEPROM read return values and act on the (uninitialized or zeroed) outputs — ixgbe_common.c:621-628 (benign), :1095 (instance_id from uninit stack u16), :278-279+375-376 (failed PHY read written back, clobbering the PHY AN advertisement), :3083-3088 (FC negotiation silently degrades to fc_none on failed reads), :4438 + consumer ixgbe_start_hw_generic :397/:430-431 (need_crosstalk_fix decided from uninitialized stack). No kernel-memory disclosure to userspace; decisions only. Upstream FreeBSD shared code is IDENTICAL at these sites (diff verified) — vendored-code issue, filed for hardening. Hardware-gated; guest has no ixgbe device (env.txt). fix.diff checks all five returns; compile-validated -Werror-clean on md5-identical guest source.",
  "exploit_chain": "",
  "evidence": "VERDICT.md (site table with path:line); build_patched.log; env.txt",
  "kernel_refs": ["sys/dev/netif/ix/ixgbe_common.c:621", "sys/dev/netif/ix/ixgbe_common.c:1095", "sys/dev/netif/ix/ixgbe_common.c:278", "sys/dev/netif/ix/ixgbe_common.c:375", "sys/dev/netif/ix/ixgbe_common.c:3083", "sys/dev/netif/ix/ixgbe_common.c:4438", "sys/dev/netif/ix/ixgbe_common.c:430"],
  "poc_changes": "New pass-2 finding, no seed.",
  "attempts": 1,
  "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT DragonFly 6.5-DEVELOPMENT #0: Thu Jul 2 06:02:54 UTC 2026 root@dfbsd:/usr/obj/usr/src/sys/X86_64_GENERIC x86_64",
  "runtime_sec": 60,
  "guest_dirty": 0,
  "build_cmd": "cd /usr/src && patch -p1 < fix.diff && cd sys/dev/netif/ix && make obj && make",
  "run_cmd": "n/a (needs failing PHY on real hardware)",
  "code_hash": "6542a0e0ce6fc6d3c84ae5743310a197b55be2a8e39b8ac5c5ad9d550d69ceaf",
  "notes": "Upstream-identical vendored code; recommend also reporting to Intel shared code maintainers. One -Werror iteration was needed while authoring fix.diff (reg_cu error path must goto out).",
  "recommended_fix": "Check every phy.ops/eeprom.ops read return; zero-init *device_caps; skip the PHY write-back when the preceding read failed (fix.diff).",
  "fix_status": "not_testable",
  "fix_baseline_reproduced": 0,
  "fix_patched_reproduced": 0,
  "fix_verdict": "Compile-validated only; runtime validation needs hardware.",
  "fix_evidence": "build_baseline.log / build_patched.log (-Werror clean with fix)."
}