DF-3937 / verdict.json
{ "finding_id": "DF-3937", "fix_status": "not_testable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "Fix not validated on the guest (no ENA hardware, env.txt). fix.diff moves ENA_WAIT_EVENT_DESTROY under the existing NULL guard at ena_com.c:1585 \u2014 a pure ordering fix authored post-verification.", "fix_evidence": "findings/poc/DF-3937/fix.diff + VERDICT.md", "status": "inconclusive", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "ena_com_admin_destroy dereferences admin_queue->comp_ctx at ena_com.c:1581 (ENA_WAIT_EVENT_DESTROY -> cv_destroy/lockuninit per ena_plat.h:231-234) FOUR LINES BEFORE the NULL check at :1585. Reached from ena_com_admin_inits error unwind (:1761-1762) when ena_com_init_comp_ctxts kmalloc (M_NOWAIT) fails (:302-306) \u2014 i.e. NULL-deref panic in the ena(4) PCI attach path under memory pressure (an unprivileged user can pressure M_DEVBUF around a driver reload to shape this). Secondary: only comp_ctx[0] of the 32 initialized wait events is destroyed. Low severity / certain at source; hardware-gated (no ENA device on guest) => inconclusive runtime classification. Pattern precedent: DF-3799 (dead-code variant, Info).", "exploit_chain": "local memory pressure + ena attach/reload -> ena_com_init_comp_ctxt alloc fails -> ena_com_admin_init error path -> ena_com_admin_destroy -> cv_destroy(&NULL->wq) -> kernel panic (DoS)", "evidence": "findings/poc/DF-3937/VERDICT.md (5-step trace) + fix.diff + env.txt", "kernel_refs": [ "sys/dev/virtual/amazon/ena/ena-com/ena_com.c:1581", "sys/dev/virtual/amazon/ena/ena-com/ena_com.c:1585", "sys/dev/virtual/amazon/ena/ena-com/ena_com.c:1761", "sys/dev/virtual/amazon/ena/ena-com/ena_com.c:302", "sys/dev/virtual/amazon/ena/ena-com/ena_plat.h:231", "sys/dev/virtual/amazon/ena/ena.c:3220" ], "poc_changes": "No seed PoC; hardware-gated.", "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": 30, "guest_dirty": 0, "notes": "pass-2 GLM5.3. Hunt area (f) DMA memory alloc/free paths of ena_com.c; the rest of the alloc/free unwind (rss_init error paths, io_queue_free, hash_key/ctrl destroy, aenq destroy) was verified correct.", "recommended_fix": "Move ENA_WAIT_EVENT_DESTROY inside the comp_ctx NULL guard (fix.diff).", "build_cmd": null, "run_cmd": null, "code_hash": null } |