Look up another CVE · open CVE-2026-74751 in the interactive tracker
CVE-2026-74751
riscv: lib: Fix ZBB strnlen reading past count boundary
Published 2026-08-26 (2 months ago) by the Linux kernel CNA. Subsystem arch/riscv. Debian urgency: unimportant.
What to do, per Debian release
Debian's own status for CVE-2026-74751 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source
| Release | Status | Version | What this means |
|---|---|---|---|
| Debian 12bookworm | not affected | 6.1.190-1 | Nothing to do. bookworm never shipped the vulnerable code. |
| Debian 13trixie | not affected | 6.12.113-1 | Nothing to do. trixie never shipped the vulnerable code. |
| Debian 14forky | fixed | 7.1.10-1 | Update the kernel and reboot. Fixed in 7.1.10-1. A running kernel keeps the old code until the machine restarts. |
| Debian unstablesid | fixed | 7.1.10-1 | Update the kernel and reboot. Fixed in 7.1.10-1. A running kernel keeps the old code until the machine restarts. |
The vulnerability
What the bug is
The ZBB-optimized strnlen loop loads one word ahead before checking the aligned boundary: REG_L t1, SZREG(t0) // load next word addi t0, t0, SZREG // advance orc.b t1, t1 bgeu t0, t4, 4f // boundary check AFTER load where t4 = (s + count) & -SZREG. When s is aligned and count is a multiple of SZREG, t4 equals s + count and the loop loads a full word starting at exactly s + count. If s + count falls on a page boundary with the next page unmapped, this faults. Fix by computing the aligned boundary from the last valid byte (s + count - 1) instead of s + count. This makes the loop stop at the word containing the last valid byte rather than potentially loading the word after it. The count == 0 case is already handled by the beqz early exit. Also add a pre-loop guard (bgeu t0, t4) for the case where all valid bytes fit within the first word. With the adjusted boundary, t4 can equal t0, and entering the loop with stale register state from the first-word processing would produce incorrect results. The final minu clamp ensures the result is still correct when the last loaded word extends past s + count - 1 within the same aligned word.
Where it lives
The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.
arch/riscv/lib/strnlen.S
- What this is
- RISC-V ARCHITECTUREMAINTAINERS section matched on arch/riscv/ · linux-riscv@lists.infradead.org · Supported
Show whether Debian builds this, per release
Debian builds this code. Every release with an answer below compiles the affected file into the kernels it ships. The build rule could not be established for 2 releases, so nothing is claimed about those.
- bookworm, trixie?
- forky, sidy
- ?
- not established - no Makefile entry for the affected file
- y
- built into the kernel image on every flavour - only a patch removes it
Where a release above reads "not established", no build rule for the affected file was found in that release's kernel tree. That is a gap in this lookup, not a finding that the code is absent.
From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS Debian linux-config packages
Signals
- Published
- 2026-08-26 (2 months ago)source
- CVSS
- 9.4 critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:Hsource recompute it - Attack vector
- network (AV:N)source
- EPSS
- 0.46%, higher than 38.3% of all CVEssource
- CISA KEV
- not listedthe KEV catalogue
- Debian urgency
- unimportantsource
- Subsystem
- arch/riscv
Upstream fixes
The versions the CNA records as introducing and fixing this, and the commit for each. source
| Introduced | Fixed in | Commit |
|---|---|---|
| 7.1 | 7.1.10 | e697e30f3dd2 |
| 7.1 | 7.2 | 5d588c684833 |
Why the CNA scored it this way
Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source
- AV:NAttack vector, network
- On RISC-V with ZBB, the flawed arch strnlen is reached from network-facing SMB paths such as ksmbd pre-auth SMB1 negotiate (strnlen on client DialectsArray in kvmalloc request_buf) and CIFS client parsing of malicious server replies (session setup, tree connect, DFS/reparse), without requiring a local syscall.
- AC:LAttack complexity, low
- Remote attackers control string length/count and payload bytes in SMB packets and can repeat connections with varied PDU sizes to satisfy aligned/count-multiple-of-word preconditions; no victim-specific race or rare config beyond standard RISC-V ZBB kernels is required.
- PR:NPrivileges required, none
- ksmbd SMB_COM_NEGOTIATE handling runs before authentication, so an Internet-facing ksmbd listener on RISC-V can be probed with no victim credentials; a malicious SMB server similarly needs no privileges on the CIFS client host beyond normal protocol interaction.
- UI:NUser interaction, none
- Exploitation is triggered automatically when the kernel processes inbound SMB negotiation or client response data during connection, mount, or referral/readdir handling, with no additional deliberate victim action beyond routine SMB client or server use.
- S:UScope, unchanged
- Impact is confined to kernel memory and availability on the same host running the vulnerable RISC-V kernel; it does not by itself cross VM, IOMMU, or container sandbox boundaries distinct from standard kernel compromise.
- C:HConfidentiality impact, high
- The ZBB loop performs an out-of-bounds read of a full machine word past the caller-supplied bound when alignment conditions match, exposing adjacent kernel heap/slab or other mapped memory per CVSS guidance for out-of-bounds reads.
- I:LIntegrity impact, low
- Although strnlen does not write memory directly, incorrect length results and downstream kstrndup/memcpy callers on SMB paths can propagate attacker-influenced adjacent bytes into newly allocated kernel buffers, modifying data beyond the intended bounded string scope.
- A:HAvailability impact, high
- When s+count sits on a page boundary with the next page unmapped, the stray load faults the kernel (oops/panic), and repeated remote triggering against ksmbd or CIFS clients can deny service on RISC-V servers and workstations.