<?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-09-29T05:42:37.804016+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-737v-mqg7-c878</id>
    <title>GHSA-737v-mqg7-c878 — defu: Prototype pollution via `__proto__` key in defaults argument</title>
    <updated>2026-09-29T05:42:37.822148+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> npm: defu</p>
<p>### Impact</p>
<p>Applications that pass unsanitized user input (e.g. parsed JSON request bodies, database records, or config files from untrusted sources) as the first argument to `defu()` are vulnerable to prototype pollution.</p>
<p>A crafted payload containing a `__proto__` key can override intended default values in the merged result:</p>
<p>```js
import { defu } from 'defu'</p>
<p>const userInput = JSON.parse('{"__proto__":{"isAdmin":true}}')
const config = defu(userInput, { isAdmin: false })</p>
<p>config.isAdmin // true — attacker overrides the server default
```</p>
<p>### Root Cause</p>
<p>The internal `_defu` function used `Object.assign({}, defaults)` to copy the defaults object. `Object.assign` invokes the `__proto__` setter, which replaces the resulting object's `[[Prototype]]` with attacker-controlled values. Properties inherited from the polluted prototype then bypass the existing `__proto__` key guard in the `for...in` loop and land in the final result.</p>
<p>### Fix</p>
<p>Replace `Object.assign({}, defaults)` with object spread (`{ ...defaults }`), which uses `[[DefineOwnProperty]]` and does not invoke the `__proto__` setter.</p>
<p>### Affected Versions</p>
<p>&lt;= 6.1.4</p>
<p>### Credits</p>
<p>Reported by [@BlackHatExploitation](https://github.com/BlackHatExploitation)</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-737v-mqg7-c878"/>
  </entry>
</feed>
