DragonFlyBSD Kernel Audit
DF-0883 / fix_run.log
← back to finding ↓ download raw
=== PATCHED udf.ko (single-fix module) — PoC: evil.udf (lb_size=0, packet_len=2048) ===
Kernel: DragonFly 6.5-DEVELOPMENT #0: Thu Jul  2 06:02:54 UTC 2026
Module: /boot/kernel/udf.ko rebuilt with lb_size validation (fix.diff applied)

Run 1:
  [+] loading UDF module (if not loaded)...
  [+] configuring vnode device...
  [+] attempting UDF mount (lb_size=0, packet_len=2048)...
  mount_udf: /dev/vn0: Invalid argument
  [!] mount returned 1
  [+] guest still alive:
  10:59PM  up 2 mins, 0 users, load averages: 0.11, 0.06, 0.02
  RUN_EXIT=0

dmesg:
  udf: invalid logical block size 0      <-- fix validation message

Run 2 (determinism check):
  vnconfig -c vn0 evil.udf
  mount -t udf -o rdonly /dev/vn0 /mnt/udf
  mount_udf: /dev/vn0: Invalid argument
  mount rc=1
  Guest still alive.

Contrast with unpatched baseline:
  BEFORE: Fatal trap 18: integer divide fault ... udf_mount.part.2+0x814: idivl
  AFTER:  mount returns EINVAL cleanly, no panic, guest stays up.

Note: The UDF filesystem is a loadable kernel module (kldload udf). The fix
lives in the module, not the kernel binary. The before/after comparison uses
the SAME #0 kernel binary with the original vs fixed udf.ko module — the only
variable is the one-file source change in udf_vfsops.c.