CVE-2026-41907
ADVISORY - githubSummary
Summary
The v3(), v5(), and v6() API methods (not uuid release versions) accept external output buffers but do not reject out-of-range writes (small buf or large offset).
By contrast, v4(), v1(), and v7() API methods explicitly throw RangeError on invalid bounds.
This inconsistency allows silent partial writes into caller-provided buffers.
Affected code
src/v35.ts(v3()/v5()path) writesbuf[offset + i]without bounds validation.src/v6.tswritesbuf[offset + i]without bounds validation.
Reproducible PoC
cd /home/StrawHat/uuid
npm ci
npm run build
node --input-type=module -e "
import {v4,v5,v6} from './dist-node/index.js';
const ns='6ba7b810-9dad-11d1-80b4-00c04fd430c8';
for (const [name,fn] of [
['v4()',()=>v4({},new Uint8Array(8),4)],
['v5()',()=>v5('x',ns,new Uint8Array(8),4)],
['v6()',()=>v6({},new Uint8Array(8),4)],
]) {
try { fn(); console.log(name,'NO_THROW'); }
catch(e){ console.log(name,'THREW',e.name); }
}"
Observed:
v4() THREW RangeErrorv5() NO_THROWv6() NO_THROW
Example partial overwrite evidence captured during audit:
same true buf [
170, 170, 170, 170,
75, 224, 100, 63
]
v6 [
187, 187, 187, 187,
31, 19, 185, 64
]
Security impact
- Primary: integrity/robustness issue (silent partial output).
- If an application assumes full UUID writes into preallocated buffers, this can produce malformed/truncated/partially stale identifiers without error.
- In systems where caller-controlled offsets/buffer sizes are exposed indirectly, this may become a security-relevant logic flaw.
Suggested fix
Add the same guard used by v4()/v1()/v7():
if (offset < 0 || offset + 16 > buf.length) {
throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
}
Apply to:
src/v35.ts(coversv3()andv5())src/v6.ts
Common Weakness Enumeration (CWE)
NIST
CVSS SCORE
8.1highGitHub
CVSS SCORE
6.3mediumDebian
-
Ubuntu
3.9
CVSS SCORE
7.5mediumChainguard
CGA-cfw7-cq6w-m5hj
-
Chainguard
CGA-wrmw-5p46-6jx3
-
minimos
MINI-3vwj-wq86-95r4
-
minimos
MINI-4jq9-qgpv-j92r
-
minimos
MINI-8r6q-c4rr-8qv6
-
minimos
MINI-9qx9-w5wm-j3hr
-
minimos
MINI-c25j-5j8g-jwvc
-
minimos
MINI-fv6p-hwhc-hr5v
-
minimos
MINI-h44v-6jcq-p62g
-
minimos
MINI-j4f3-qchh-6chh
-
minimos
MINI-jjwf-jxc6-cgxm
-
minimos
MINI-jp3r-gr53-p7c6
-
minimos
MINI-m376-x253-hr5m
-
minimos
MINI-r392-5gcw-6x26
-
minimos
MINI-r3v6-rgf7-cw2f
-
minimos
MINI-r72q-2r27-5799
-
minimos
MINI-vc4m-rpph-p5m9
-
minimos
MINI-vqh9-f63f-2v24
-
minimos
MINI-w6fp-p6qm-p33j
-
minimos
MINI-x7wm-wx22-9w36
-
minimos
MINI-xq7c-q25r-76rm
-