⬢ DragonFlyBSD Kernel Audit
DF-3849 / manifest.json
← back to finding ↓ download raw
{
  "verdict": "inconclusive",
  "verdict_detail": "source-level certain; hardware-gated at runtime (no dc NIC on the audit guest); integer mechanics executed on guest via trigger.c",
  "impact_class": "kernel heap OOB read up to ~14 KB past a 2040-byte RX cluster (info leak via BPF/stack) + negative m_len (~4 GB unsigned) on FRAMESZ<4 (DoS/panic) from a malicious or misbehaving dc(4) device",
  "severity": "Medium",
  "confidence": "certain",
  "reproduce": {
    "build": "cc -O2 -o /root/trigger /root/trigger.c   # on the guest",
    "run": "/root/trigger ; plus hardware-absence probe: ifconfig -l ; pciconf -lv ; kldstat -v | grep if_dc",
    "expected": "FRAMESZ=16383 -> m_len=16379 on a 2040-byte cluster => OOB READ 14339 bytes past the cluster; FRAMESZ=2 -> NEGATIVE m_len (unsigned ~4294967294); guest shows pci/if_dc in kernel but no dc hardware"
  },
  "kernel_refs": [
    "sys/dev/netif/dc/if_dc.c:2523",
    "sys/dev/netif/dc/if_dc.c:2548",
    "sys/dev/netif/dc/if_dc.c:2568",
    "sys/dev/netif/dc/if_dc.c:2583",
    "sys/dev/netif/dc/if_dc.c:2590",
    "sys/dev/netif/dc/if_dc.c:2321",
    "sys/dev/netif/dc/if_dc.c:2343",
    "sys/dev/netif/dc/if_dcreg.h:415",
    "sys/dev/netif/dc/if_dcreg.h:465"
  ],
  "artifacts": [
    "README.md",
    "VERDICT.md",
    "trigger.c",
    "build.sh",
    "run.sh",
    "build.log",
    "run.log",
    "fix.diff",
    "manifest.json",
    "verdict.json",
    "env.txt"
  ]
}