Wild OOB read in sumo_get_valid_engine_clock when num_max_dpm_entries==0
Summary
sumo_get_valid_engine_clock at sumo_dpm.c:1042: entries[num_max_dpm_entries-1]. If num_max_dpm_entries==0 (VBIOS all-zero sAvail_SCLK) -> entries[(u32)-1] -> ~32GB OOB read -> page fault panic. Sibling of DF-1333. Fix: return lower_limit when num_max_dpm_entries==0.
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-1439 Β· 8 files| File | Type | Description | Size | |
|---|---|---|---|---|
| fix.diff | suggested-fix | Add `if (num_max_dpm_entries == 0) return lower_limit;` guard before entries[] access. | 491 B | view raw |
| VERDICT.md | verdict | Full source-trace analysis | 1.8 KB | β raw |
| build.sh | build-script | Kernel build validation | 534 B | view raw |
| run.sh | run-script | PoC runner (not runnable on guest) | 454 B | view raw |
| fix_build.log | build-log | Full kernel build output (make nativekernel rc=0) | 5.6 MB | β download |
| env.txt | environment | Guest environment | 277 B | view raw |
| ../fix_build_combined.log | build-log | Combined 41-finding kernel build (rc=0, -Werror clean) | 5.6 MB | β download |
| ../fix_build_summary.txt | build-summary | Summary of the combined 41-finding kernel build | 826 B | view raw |
DF-1439 β Verification Verdict
Verdict: CONFIRMED-BY-SOURCE-TRACE (HW-gated)
Status: inconclusive (HW-gated / not reachable as unprivileged maxx) Impact: none (cannot reproduce on QEMU guest β no GPU/HW, or root/operator-only) Confidence: certain (source-trace confirmed bug is real)
Mechanism
sumo_get_valid_engine_clock (:1042): entries[num_max_dpm_entries-1]. If num_max_dpm_entries==0 (VBIOS all-zero sAvail_SCLK) β entries[(u32)-1] β ~32GB OOB read β page fault panic.
Source: sys/dev/drm/radeon/sumo_dpm.c:1042
Why it cannot be reproduced on this guest
HW-gated. radeon.ko requires Sumo/Trinity ASIC. No GPU in QEMU guest.
Phase 6: Escalation Assessment
This is a HW-gated GPU module (radeon DPM Sumo) finding. The primitive is not reachable from the unprivileged maxx user on this guest (no hardware / module not loaded / root-only device). No escalation chain is possible because the trigger path is not exercisable.
For GPU findings: the module (radeon.ko/amdgpu.ko/i915.ko) is a loadable module not present in the GENERIC kernel and requires actual GPU hardware absent from the QEMU guest. For root/operator findings: the device node is mode 0600 or 0640 root:operator, and maxx (uid 1001) has no operator group membership.
Fix
Return lower_limit when num_max_dpm_entries==0.
Fix description: Add if (num_max_dpm_entries == 0) return lower_limit; guard before entries[] access.
The full git-apply-able diff is in fix.diff. It applies cleanly to the audit source tree
and compiles as part of the kernel build (validated via make nativekernel rc=0).
Classification
- status: inconclusive
- reproduced: 0
- impact: none
- fix_status: not_testable (HW-gated: PoC cannot run on guest; diff applies + compiles verified)
Confirmed kernel references
- s
- y
- s
- /
- d
- e
- v
- /
- d
- r
- m
- /
- r
- a
- d
- e
- o
- n
- /
- s
- u
- m
- o
- _
- d
- p
- m
- .
- c
- :
- 1
- 0
- 4
- 2
Detail
Exploit chain
none (wild OOB read / page fault β read-only primitive but causes panic (DoS). HW-gated: radeon DPM on Sumo/Trinity. Not reachable from QEMU.)
Evidence (decisive lines)
Source trace: sumo_dpm.c:1042 'return pi->sys_info.sclk_voltage_mapping_table.entries[pi->sys_info.sclk_voltage_mapping_table.num_max_dpm_entries - 1].sclk_frequency' β if num_max_dpm_entries==0, index wraps to (u32)-1.
PoC changes
Authored fix.diff: add 'if (num_max_dpm_entries == 0) return lower_limit;' guard before entries[] access.
Verified recommended fix
Return lower_limit when num_max_dpm_entries==0. matches finding proposal. Full diff in findings/poc/DF-1439/fix.diff.
Verdict
CONFIRMED BY SOURCE TRACE. sumo_get_valid_engine_clock at sumo_dpm.c:1042: entries[num_max_dpm_entries-1]. If num_max_dpm_entries==0 (VBIOS all-zero sAvail_SCLK) β entries[(u32)-1] β ~32GB OOB read β page fault panic. Bug is real but HW-gated: radeon.ko requires Sumo/Trinity ASIC.
No comments yet.