data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-74751 in the interactive tracker

CVE-2026-74751

riscv: lib: Fix ZBB strnlen reading past count boundary

9.4 EPSS 0.5% AV:N

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

ReleaseStatus VersionWhat this means
Debian 12bookwormnot affected6.1.190-1Nothing to do. bookworm never shipped the vulnerable code.
Debian 13trixienot affected6.12.113-1Nothing to do. trixie never shipped the vulnerable code.
Debian 14forkyfixed7.1.10-1Update the kernel and reboot. Fixed in 7.1.10-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.1.10-1Update 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

IntroducedFixed inCommit
7.17.1.10e697e30f3dd2
7.17.25d588c684833

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.