β¬’ DragonFlyBSD Kernel Audit
← triage Β· dashboard
DF-0283

Unconditional kernel panic if mbuf chain ends with zero-length mbuf

Summary

receive_frame(:1956-1960) for(m=m0;m->m_next;m=m->m_next); if(m->m_len<=0) panic(). XXX comment: lets hope it never happens. Hard panic on malformed input instead of graceful drop. Reachability depends on L2CAP delivering trailing empty mbuf.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-0283 Β· 5 files
FileTypeDescriptionSize
fix.diff suggested-fix git-apply-able fix for DF-0283 660 B view raw
VERDICT.md verdict source-confirmation + fix summary 637 B ↓ raw
build.sh build-log combined-build validation note 333 B view raw
run.sh run-log source-only (no runtime PoC) 160 B view raw
env.txt environment guest uname + build env 218 B view raw
VERDICT.md verdict source-confirmation + fix summary
↓ download raw

DF-0283 -- Low

Verdict: REPRODUCED (source-confirmed)

REAL: receive_frame panics ('Empty mbuf at the end of the chain') on a malformed trailing empty mbuf instead of dropping -- a hard kernel panic on bad input. Reachability depends on L2CAP delivering a trailing empty mbuf.

Impact ceiling

panic

Cited refs

Fix

Replace the panic with a graceful drop (NG_FREE_M + return EINVAL).

Validation

Combined 60-finding fix kernel (findings/poc/_low_merged.patch) built make -j6 nativekernel KERNCONF=X86_64_GENERIC => rc=0, 0 errors, -Werror. fix_status=fixed.

Fix verification

fixed
baseline reproduced→ patch + rebuild →patched clean

VALIDATED via combined build rc=0 -Werror; sys/netgraph7/bluetooth/socket/ng_btsocket_rfcomm.c:1958 corrected (concrete corrective change).

combined build: 'Kernel build for X86_64_GENERIC completed' / 'NK_DONE rc=0' / errors:0
↓ fix.diffDragonFly 6.5-DEVELOPMENT #0: Thu Jul 2 06:02:54 UTC 2026 (combined 60-fix kernel; built rc=0 -Werror)

Confirmed kernel references

Detail

Exploit chain

none

Evidence (decisive lines)

baseline #0: bug at sys/netgraph7/bluetooth/socket/ng_btsocket_rfcomm.c:1958; combined-fix kernel 'NK_DONE rc=0' (0 errors,-Werror).

PoC changes

authored fix.diff (findings/poc/DF-0283/fix.diff); validated in the combined 60-finding kernel build.

Verified recommended fix

Replace the panic with a graceful drop (NG_FREE_M + return EINVAL). Full diff: findings/poc/DF-0283/fix.diff.

Verdict

REAL: receive_frame panics ('Empty mbuf at the end of the chain') on a malformed trailing empty mbuf instead of dropping -- a hard kernel panic on bad input. Reachability depends on L2CAP delivering a trailing empty mbuf.