<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://db.gcve.eu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Fri, 02 Oct 2026 21:45:33 +0000</lastBuildDate>
    <item>
      <title>GHSA-w5hq-g745-h8pq — uuid: Missing buffer bounds check in v3/v5/v6 when buf is provided</title>
      <link>https://db.gcve.eu/vuln/ghsa-w5hq-g745-h8pq</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: uuid&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The `v3()`, `v5()`, and `v6()` [API methods](https://github.com/uuidjs/uuid#api-summary) (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.&lt;/p&gt;
&lt;p&gt;This inconsistency allows **silent partial writes** into caller-provided buffers.&lt;/p&gt;
&lt;p&gt;### Affected code&lt;/p&gt;
&lt;p&gt;- `src/v35.ts` (`v3()`/`v5()` path) writes `buf[offset + i]` without bounds validation.
- `src/v6.ts` writes `buf[offset + i]` without bounds validation.&lt;/p&gt;
&lt;p&gt;### Reproducible PoC&lt;/p&gt;
&lt;p&gt;```bash
cd /home/StrawHat/uuid
npm ci
npm run build&lt;/p&gt;
&lt;p&gt;node --input-type=module -e &amp;#34;
import {v4,v5,v6} from &amp;#39;./dist-node/index.js&amp;#39;;
const ns=&amp;#39;6ba7b810-9dad-11d1-80b4-00c04fd430c8&amp;#39;;
for (const [name,fn] of [
  [&amp;#39;v4()&amp;#39;,()=&amp;gt;v4({},new Uint8Array(8),4)],
  [&amp;#39;v5()&amp;#39;,()=&amp;gt;v5(&amp;#39;x&amp;#39;,ns,new Uint8Array(8),4)],
  [&amp;#39;v6()&amp;#39;,()=&amp;gt;v6({},new Uint8Array(8),4)],
]) {
  try { fn(); console.log(name,&amp;#39;NO_THROW&amp;#39;); }
  catch(e){ console.log(name,&amp;#39;THREW&amp;#39;,e.name); }
}&amp;#34;
```&lt;/p&gt;
&lt;p&gt;Observed:&lt;/p&gt;
&lt;p&gt;- `v4() THREW RangeError`
- `v5() NO_THROW`
- `v6() NO_THROW`&lt;/p&gt;
&lt;p&gt;Example partial overwrite evidence captured during audit:&lt;/p&gt;
&lt;p&gt;```text
same true buf [
  170, 170, 170, 170,
   75, 224, 100,  63
]
v6 [
  187, 187, 187, 187,
   31,  19, 185,  64
]
```&lt;/p&gt;
&lt;p&gt;### Security impact&lt;/p&gt;
&lt;p&gt;- **Primary**: integrity/robustness issue (silent partial output).
- If an application assumes full UUID writes into preallocated buffers, this can produce ma…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: uuid&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The `v3()`, `v5()`, and `v6()` [API methods](https://github.com/uuidjs/uuid#api-summary) (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.&lt;/p&gt;
&lt;p&gt;This inconsistency allows **silent partial writes** into caller-provided buffers.&lt;/p&gt;
&lt;p&gt;### Affected code&lt;/p&gt;
&lt;p&gt;- `src/v35.ts` (`v3()`/`v5()` path) writes `buf[offset + i]` without bounds validation.
- `src/v6.ts` writes `buf[offset + i]` without bounds validation.&lt;/p&gt;
&lt;p&gt;### Reproducible PoC&lt;/p&gt;
&lt;p&gt;```bash
cd /home/StrawHat/uuid
npm ci
npm run build&lt;/p&gt;
&lt;p&gt;node --input-type=module -e &amp;#34;
import {v4,v5,v6} from &amp;#39;./dist-node/index.js&amp;#39;;
const ns=&amp;#39;6ba7b810-9dad-11d1-80b4-00c04fd430c8&amp;#39;;
for (const [name,fn] of [
  [&amp;#39;v4()&amp;#39;,()=&amp;gt;v4({},new Uint8Array(8),4)],
  [&amp;#39;v5()&amp;#39;,()=&amp;gt;v5(&amp;#39;x&amp;#39;,ns,new Uint8Array(8),4)],
  [&amp;#39;v6()&amp;#39;,()=&amp;gt;v6({},new Uint8Array(8),4)],
]) {
  try { fn(); console.log(name,&amp;#39;NO_THROW&amp;#39;); }
  catch(e){ console.log(name,&amp;#39;THREW&amp;#39;,e.name); }
}&amp;#34;
```&lt;/p&gt;
&lt;p&gt;Observed:&lt;/p&gt;
&lt;p&gt;- `v4() THREW RangeError`
- `v5() NO_THROW`
- `v6() NO_THROW`&lt;/p&gt;
&lt;p&gt;Example partial overwrite evidence captured during audit:&lt;/p&gt;
&lt;p&gt;```text
same true buf [
  170, 170, 170, 170,
   75, 224, 100,  63
]
v6 [
  187, 187, 187, 187,
   31,  19, 185,  64
]
```&lt;/p&gt;
&lt;p&gt;### Security impact&lt;/p&gt;
&lt;p&gt;- **Primary**: integrity/robustness issue (silent partial output).
- If an application assumes full UUID writes into preallocated buffers, this can produce ma…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-w5hq-g745-h8pq</guid>
    </item>
  </channel>
</rss>
