DF-0220 / env.txt
================================================================================
DF-0220 verification environment (re-verified 2026-07-03)
================================================================================
Guest: DragonFlyBSD master DEV (KVM, single-tenant, vm.sh-managed)
Snapshot reverted between boots via: dfbsd-qemu/vm.sh reset with-src
uname -a:
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
kern.version (first line):
DragonFly 6.5-DEVELOPMENT #0: Thu Jul 2 06:02:54 UTC 2026
cc --version:
cc 8.3 [DragonFly] Release/2019-02-22
QEMU/KVM config (vm.sh):
qemu-system-x86_64 -enable-kvm -m 4096 -smp 6
-drive disk.qcow2 (virtio-blk)
-netdev user,hostfwd 127.0.0.1:5522-:22 (virtio-net)
(no virtio-rng device, no RDRAND on the host CPU exposed to the guest)
dmesg | grep -iE 'random|entropy|csprng|rand|seed|rdrand':
rdrand0: No RdRand support. <- no HW RNG entropy source on this guest
sysctl (post-boot):
kern.rand_mode: mixed <- default (rand_mode==2: csprng XOR IBAA)
kern.boottime = ... (varies per boot)
Random-source constants (sys/sys/random.h, sys/kern/subr_csprng.c):
RAND_SRC_TIMING = 0x0002 (sys/sys/random.h:79)
RAND_SRC_THREAD2 = 0x000c (sys/sys/random.h:89)
RAND_SRC_MASK = 0x00FF (sys/sys/random.h:93)
SIZE = 256 (kern_nrandom.c timing loop = 128 feeds)
MIN_POOL_SIZE = 96 (sys/kern/subr_csprng.c:54)
MIN_RESEED_INTERVAL = hz/10 (sys/kern/subr_csprng.c:57)
Kernel data fact (decisive for non-reproduction):
sizeof(struct globaldata) = 14976 (DWARF DW_AT_byte_size + gdb on
/boot/kernel/kernel.debug; struct defined
at sys/sys/globaldata.h:129-215)
=> the RAND_SRC_THREAD2 feed in rand_initialize (kern_nrandom.c:539-543)
injects 14976 bytes into csprng pool[0], far exceeding MIN_POOL_SIZE=96,
so the first read_random at kern_nrandom.c:558 triggers a successful
csprng_reseed and keys the cipher BEFORE init(8) (SI_SUB_KTHREAD_INIT)
runs.
SYSINIT ordering (sys/sys/kernel.h):
SI_BOOT2_POST_SMP = 0x1cc0000 <- rand_initialize (kern_nrandom.c:562)
SI_SUB_KTHREAD_INIT = 0xe000000 <- init(8) launch (kernel.h:216)
(rand_initialize runs ~0xc340000 subsystem-ticks before userspace starts)
PoC user: maxx (uid 1001, not in wheel). Root shell forced via vm.sh run_root.
Console: comconsole baked into clean-install baseline; no panics here, but any
would land in dfbsd-qemu/boot.log.