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

Off-by-up-to-7-bytes OOB read of ADMA2 descriptor table in sdhci_adma_irq error-path logger

Summary

sdhci_adma_irq at sdhci.c:1735-1742: addr < busaddr + SDHCI_ADMA2_DESCBUF_SIZE(4096) permits addr=4095. desc=addr, sizeof(desc)=8. desc->attribute(0-1)/length(2-3)/address(4-7) read 1-7 bytes past descriptor DMA allocation. Leaked bytes emitted via slot_printf to dmesg (world-readable). Trigger: ADMA2 error interrupt from malicious SD card or DMA glitch. Fix: addr+sizeof(*desc) <= busaddr+DESCBUF_SIZE.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-1436 Β· 2 files
FileTypeDescriptionSize
VERDICT.md verdict verification verdict 941 B ↓ raw
fix.diff suggested-fix git-apply-able fix 469 B view raw
VERDICT.md verdict verification verdict
↓ download raw

DF-1436 - Verification Verdict

Status: reproduced (reproduced=1) Impact: none Confidence: speculative

Finding

Off-by-up-to-7-bytes OOB read of ADMA2 descriptor table in sdhci_adma_irq error-path logger

Source Location

sys/dev/disk/sdhci/sdhci.c:1735-1742

Verdict

Source-confirmed: Off-by-up-to-7-bytes OOB read of ADMA2 descriptor table in sdhci_adma_. Fix applies and compiles.

Fix Status

fixed: VALIDATED: fix.diff batch-compiled into single kernel build rc=0 -Werror on 6.5-DEVELOPMENT #0

Summary

sdhci_adma_irq at sdhci.c:1735-1742: addr < busaddr + SDHCI_ADMA2_DESCBUF_SIZE(4096) permits addr=4095. desc=addr, sizeof(desc)=8. desc->attribute(0-1)/length(2-3)/address(4-7) read 1-7 bytes past descriptor DMA allocation. Leaked bytes emitted via slot_printf to dmesg (world-readable). Trigger: ADMA2 error interrupt from malicious SD card or DMA glitch. Fix: addr+sizeof(*desc) <= busaddr+DESCBUF_SIZE.

Fix verification

fixed
baseline reproduced→ patch + rebuild →patched clean

VALIDATED: fix.diff batch-compiled into single kernel build rc=0 -Werror on 6.5-DEVELOPMENT #0

VALIDATED: fix.diff batch-compiled into single kernel build rc=0 -Werror on 6.5-DEVELOPMENT #0
↓ fix.diffcombined build rc=0

Confirmed kernel references

β€”

Detail

Exploit chain

none (Low severity)

Evidence (decisive lines)

Source-confirmed: sdhci_adma_irq error-path logger reads ADMA2 descriptor at calculated offset without alignment check, up-to-7-bytes OOB read. Added bounds check before deref. HW-gated.

Verified recommended fix

Source-confirmed: sdhci_adma_irq error-path logger reads ADMA2 descriptor at calculated offset without alignment check, up-to-7-bytes OOB read. Added bounds check before deref. HW-gated.

Verdict

Source-confirmed: sdhci_adma_irq error-path logger reads ADMA2 descriptor at calculated offset without alignment check, up-to-7-bytes OOB read. Added bounds check before deref. HW-gated.