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

REX.R prefix causes OOB read across all Group/FPU escape tables (f_reg returns 8..15 into 8-entry arrays)

Summary

f_reg at db_disasm.c:908 returns 8..15 when REX.R set. All Group/FPU tables (db_Grp1..9, db_Esc8..f) have 8 entries. Prefix loop :1231-1234 accepts any REX byte. db_disasm_esc :1080 and Group handlers :1271/:1279/:1284/:1290 index with f_reg unmasked -> REX.R + Group/FPU opcode -> OOB read. Compilers never emit REX.R before Group/FPU (semantically ignored) so not reachable from in-tree kernel code. Requires DDB operator disassembling crafted bytes. Defense-in-depth: mask f_reg&0x7 at Group/Esc sites (keep wide for genuine register operands).

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-1033 Β· 1 files
FileTypeDescriptionSize
manifest.json file 396 B view raw

Fix verification

not_testable
baseline reproduced→ patch + rebuild →patched clean

recommended fix identified; fix.diff not authored/validated in this batch

recommended fix identified; fix.diff not authored/validated in this batch
combined build rc=0

Confirmed kernel references

β€”

Detail

Exploit chain

none (Info severity)

Evidence (decisive lines)

Source-confirmed at sys/cpu/x86_64/misc/db_disasm.c:908: REX.R prefix causes OOB read across Group/FPU escape tables

Verified recommended fix

Source-confirmed at sys/cpu/x86_64/misc/db_disasm.c:908: REX.R prefix causes OOB read across Group/FPU escape tables

Verdict

Source-confirmed at sys/cpu/x86_64/misc/db_disasm.c:908: REX.R prefix causes OOB read across Group/FPU escape tables