CVE-2026-50029 js-toml has silent type confusion via falsy-primitive duplicate-key bypass

Medium 5.3 Published Updated

Attackers can bypass security checks in applications using js-toml by exploiting a duplicate-key parsing flaw that converts falsy values into truthy objects.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2026-50029?

CVE-2026-50029 is a medium-severity vulnerability in sunnyadn js-toml, published on 14 Aug 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.

Official description

js-toml is a TOML parser for JavaScript, Prior to version 1.1.2, the interpreter checks whether a key already exists in a parser-built container with `if (object[key])` instead of `if (key in object)`. When the prior value is a falsy primitive — `false`, `0`, `0n`, `0.0`, `-0`, or `""` — the duplicate-key branch is skipped and the value is silently overwritten by a later sub-table, dotted-key sub-table, or array-of-tables sharing the same name. Per the TOML 1.0.0 spec ("Defining a key multiple times is invalid"; "You cannot define any key or table more than once"), this should be a parse error. The result is structural type confusion of attacker-named keys in the value returned by `load()`. A boolean-typed `false` (or numeric `0`) becomes a truthy object. Host applications that gate behavior on `if (config.flag)`, `if (!user.banned)`, `if (config.allowDelete)`, or `if (config.publicMode)` will silently take the truthy branch. This is distinct from GHSA-65fc-cr5f-v7r2 (the 1.0.2 prototype-pollution fix). `Object.prototype` is not polluted. The `Object.create(null)` mitigation from 1.0.2 is intact; the bug here is in the duplicate-key state machine, not in container construction. Version 1.1.2 patches the incorrect comparison.

Weakness: CWE-697

Which versions are affected by CVE-2026-50029?

2 open source packages ship an affected version, including js-toml.

PackageAffectedFixed in
js-toml npmAll versions1.1.2
js-toml npmAll versions1.1.2

How do I fix CVE-2026-50029?

Upgrade js-toml to 1.1.2 or later.

Is CVE-2026-50029 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-50029 exists.

Sources

Also known as GHSA-m34p-749j-x6m6.

Is CVE-2026-50029 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free