<?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>Thu, 08 Oct 2026 13:12:06 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-106448</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-106448</link>
      <description>&lt;p&gt;StableLib is a stable library of useful TypeScript and JavaScript code. Prior to 2.0.4, the @stablelib/cbor CBOR map decoding path creates ordinary JavaScript objects and assigns attacker-controlled keys with bracket assignment. A map key named __proto__ invokes the inherited prototype setter instead of creating an ordinary own property, allowing the decoded object&amp;#39;s prototype to contain attacker-controlled authorization or feature-flag values. Downstream code that trusts normal property lookup or merges the decoded object can therefore make security-sensitive decisions using inherited attacker data. This issue is fixed in version 2.0.4.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;StableLib is a stable library of useful TypeScript and JavaScript code. Prior to 2.0.4, the @stablelib/cbor CBOR map decoding path creates ordinary JavaScript objects and assigns attacker-controlled keys with bracket assignment. A map key named __proto__ invokes the inherited prototype setter instead of creating an ordinary own property, allowing the decoded object&amp;#39;s prototype to contain attacker-controlled authorization or feature-flag values. Downstream code that trusts normal property lookup or merges the decoded object can therefore make security-sensitive decisions using inherited attacker data. This issue is fixed in version 2.0.4.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-106448</guid>
    </item>
    <item>
      <title>GHSA-w48f-fwg7-ww6p — @stablelib/cbor: Prototype poisoning via `__proto__` map keys in CBOR decoding</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-w48f-fwg7-ww6p</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: @stablelib/cbor&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;`@stablelib/cbor` decodes CBOR maps into ordinary JavaScript objects and assigns attacker-controlled keys directly onto those objects. A CBOR map key named `__proto__` therefore changes the prototype of the decoded object instead of becoming an ordinary data property.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The decoder builds map results with a plain `{}` and then stores attacker-controlled keys using bracket assignment.&lt;/p&gt;
&lt;p&gt;That is unsafe for special property names. In JavaScript, assigning to `obj[&amp;#34;__proto__&amp;#34;]` on a normal object does not create a plain own property. It invokes the built-in `__proto__` setter and replaces the object’s prototype if the supplied value is an object or `null`.&lt;/p&gt;
&lt;p&gt;As a result, a CBOR payload containing a map entry like:&lt;/p&gt;
&lt;p&gt;* key: `&amp;#34;__proto__&amp;#34;`
* value: `{ isAdmin: true }`&lt;/p&gt;
&lt;p&gt;does not decode to an object with an own property called `__proto__`. It decodes to an object whose prototype is now attacker-controlled. Any code that later reads properties through normal lookup will see inherited attacker-supplied values.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;```js
import { decode } from &amp;#34;@stablelib/cbor&amp;#34;;&lt;/p&gt;
&lt;p&gt;// CBOR:
// {
//   &amp;#34;__proto__&amp;#34;: { &amp;#34;isAdmin&amp;#34;: true }
// }
//
// a1                    map(1)
//   69                  text(9)
//     &amp;#34;__proto__&amp;#34;
//   a1                  map(1)
//     67                text(7)
//       &amp;#34;isAdmin&amp;#34;
//     f5                true&lt;/p&gt;
&lt;p&gt;const payload = new Uint8Array([
  0xa1,
  0x69, 0x5f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x5f,
  0xa1,
  0x67, 0x69, 0x73, 0x41, 0x64, 0…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: @stablelib/cbor&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;`@stablelib/cbor` decodes CBOR maps into ordinary JavaScript objects and assigns attacker-controlled keys directly onto those objects. A CBOR map key named `__proto__` therefore changes the prototype of the decoded object instead of becoming an ordinary data property.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The decoder builds map results with a plain `{}` and then stores attacker-controlled keys using bracket assignment.&lt;/p&gt;
&lt;p&gt;That is unsafe for special property names. In JavaScript, assigning to `obj[&amp;#34;__proto__&amp;#34;]` on a normal object does not create a plain own property. It invokes the built-in `__proto__` setter and replaces the object’s prototype if the supplied value is an object or `null`.&lt;/p&gt;
&lt;p&gt;As a result, a CBOR payload containing a map entry like:&lt;/p&gt;
&lt;p&gt;* key: `&amp;#34;__proto__&amp;#34;`
* value: `{ isAdmin: true }`&lt;/p&gt;
&lt;p&gt;does not decode to an object with an own property called `__proto__`. It decodes to an object whose prototype is now attacker-controlled. Any code that later reads properties through normal lookup will see inherited attacker-supplied values.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;```js
import { decode } from &amp;#34;@stablelib/cbor&amp;#34;;&lt;/p&gt;
&lt;p&gt;// CBOR:
// {
//   &amp;#34;__proto__&amp;#34;: { &amp;#34;isAdmin&amp;#34;: true }
// }
//
// a1                    map(1)
//   69                  text(9)
//     &amp;#34;__proto__&amp;#34;
//   a1                  map(1)
//     67                text(7)
//       &amp;#34;isAdmin&amp;#34;
//     f5                true&lt;/p&gt;
&lt;p&gt;const payload = new Uint8Array([
  0xa1,
  0x69, 0x5f, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x5f,
  0xa1,
  0x67, 0x69, 0x73, 0x41, 0x64, 0…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-w48f-fwg7-ww6p</guid>
    </item>
  </channel>
</rss>
