<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-09T13:26:12.204943+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-w8wr-v893-vjvp</id>
    <title>GHSA-w8wr-v893-vjvp — node-tar: Process crash via PAX numeric path type confusion</title>
    <updated>2026-10-09T13:26:12.422800+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> npm: tar</p>
<p>### Summary</p>
<p>A crafted 2.5KB tar archive crashes any Node.js process that extracts it. The PAX header parser coerces all-digit path values to JavaScript numbers, which causes an uncaught TypeError when downstream code calls `.split('/')` on the numeric value. Error handlers and `strict: false` cannot intercept the crash.</p>
<p>### Details</p>
<p>In `pax.ts` line 180, `parseKV` converts PAX values matching `/^[0-9]+$/` to numbers via `+v`. This applies to all fields including `path` and `linkpath`. When a PAX header sets `path` to an all-digit string like `"12345"`, the value becomes the number `12345`.</p>
<p>This number flows through Header -&gt; ReadEntry -&gt; Unpack.CHECKPATH, where `normalizeWindowsPath(entry.path).split('/')` throws a TypeError because numbers don't have `.split()`.</p>
<p>The throw is synchronous during event emission and bypasses all error handling:
- `strict: false` does not help
- `'error'` event handlers do not catch it
- `'warn'` handlers do not catch it
- The TypeError propagates through the event emitter stack as an uncaughtException</p>
<p>Directory, SymbolicLink, and Link type entries reach CHECKPATH and crash. File type entries crash earlier in Header constructor at `this.path.slice(-1)`, but that throw is caught and emitted as a warning only.</p>
<p>### PoC</p>
<p>Create a tar archive with a PAX extended header containing an all-digit path:</p>
<p>```
PAX header body: "18 path=12345\n"
Entry type: Directory (type '5')
```</p>
<p>Extract it:
```js
const tar = require('tar');</p>
<p>// All of these crash w…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-w8wr-v893-vjvp"/>
  </entry>
</feed>
