<?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://db.gcve.eu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-06T22:17:56.515601+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@gcve.eu</email>
  </author>
  <link href="https://db.gcve.eu" 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://db.gcve.eu/vuln/bdu:2026-15879</id>
    <title>bdu:2026-15879</title>
    <updated>2026-10-06T22:17:56.518296+00:00</updated>
    <content>bdu:2026-15879</content>
    <link href="https://db.gcve.eu/vuln/bdu:2026-15879"/>
  </entry>
  <entry>
    <id>https://db.gcve.eu/vuln/fkie_cve-2026-102282</id>
    <title>fkie_cve-2026-102282</title>
    <updated>2026-10-06T22:17:56.518372+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>adm-zip is a JavaScript library for creating and extracting ZIP archives in Node.js. Prior to 0.6.1, adm-zip applies the Unix permission bits stored in a zip entry directly to the extracted file via `fs.chmodSync()` when `keepOriginalPermission=true` is passed to `extractAllTo()`/`extractEntryTo()` — and it never filters the setuid/setgid/sticky bits out of those bits. A zip crafted by an attacker can therefore produce an extracted binary with mode `04755`. When extraction runs as root (the default posture in Docker builds, CI runners, and privileged install steps — the exact environments where this flag is used), the resulting root-owned setuid file is executed later by a lesser-privileged user, turning the attacker's code into a root execution. Version 0.6.1 fixes the issue.</p>
      </div>
    </content>
    <link href="https://db.gcve.eu/vuln/fkie_cve-2026-102282"/>
  </entry>
  <entry>
    <id>https://db.gcve.eu/vuln/ghsa-j5f4-cc29-5x44</id>
    <title>GHSA-j5f4-cc29-5x44 — adm-zip extraction preserves SUID/SGID bits from untrusted ZIPs -&gt; local privilege escalation</title>
    <updated>2026-10-06T22:17:56.518422+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> npm: adm-zip</p>
<p>## Summary</p>
<p>adm-zip applies the Unix permission bits stored in a zip entry directly to the extracted file via `fs.chmodSync()` when `keepOriginalPermission=true` is passed to `extractAllTo()`/`extractEntryTo()` — and it never filters the setuid/setgid/sticky bits out of those bits. A zip crafted by an attacker can therefore produce an extracted binary with mode `04755`. When extraction runs as root (the default posture in Docker builds, CI runners, and privileged install steps — the exact environments where this flag is used), the resulting root-owned setuid file is executed later by a lesser-privileged user, turning the attacker's code into a root execution.</p>
<p>## Details</p>
<p>The mode a zip entry wants is read back from the external file attributes in the header, and the mask used keeps every special bit:</p>
<p>```js
// headers/entryHeader.js:187
get fileAttr() {
    return (_attr || 0) &gt;&gt; 16 &amp; 0xfff;
}
```</p>
<p>`0xfff` is `0o7777` — it preserves setuid (`0o4000`), setgid (`0o2000`) and the sticky bit (`0o1000`) along with the rwx bits. Shifting by 16 is the standard Unix convention for where zip stores the mode; the mask is the problem.</p>
<p>When the flag is on, that value goes straight to the write:</p>
<p>```js
// adm-zip.js:726-727 (extractEntryTo, and identically in extractAllTo)
const fileAttr = keepOriginalPermission ? entry.header.fileAttr : undefined;
filetools.writeFileTo(target, content, overwrite, fileAttr);
```</p>
<p>```js
// util/utils.js:94
self.fs.chmodSync(path, attr || 0o666);
```</p>
<p>No…</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/ghsa-j5f4-cc29-5x44"/>
  </entry>
</feed>
