CVE-2026-49293

js-toml is a TOML parser for JavaScript, fully compliant with the TOML 1.0.0 Spec. Versions up to and including 1.1.0 parse hexadecimal / octal / binary integer literals via a hand-written `parseBigInt` loop that multiplies a `BigInt` accumulator by the radix once per input digit. Each iteration performs a `BigInt * BigInt` operation on an accumulator that grows linearly with the number of digits already consumed, so the whole loop is O(n²) in the literal length. The lexer regex places no upper bound on the literal length, so a single TOML document containing one ~500 kB hex literal pins one CPU core for ~40 seconds on a modern laptop (Apple M-series, Node v22). Memory amplification is bounded but CPU amplification is severe and grows quadratically: doubling the literal length quadruples the work. A caller that invokes `load()` on attacker-controlled TOML (configuration upload endpoints, CI/CD systems ingesting third-party `*.toml`, IDE plugins, build tools) is exposed to a single-request CPU exhaustion DoS. Version 1.1.1 fixes the issue.
Configurations

Configuration 1 (hide)

cpe:2.3:a:sunnyadn:js-toml:*:*:*:*:*:node.js:*:*

History

25 Oct 2026, 23:10

Type Values Removed Values Added
Summary
  • (es) js-toml es un analizador TOML para JavaScript, totalmente compatible con la especificación TOML 1.0.0. Las versiones hasta la 1.1.0 inclusive analizan literales enteros hexadecimales / octales / binarios mediante un bucle parseBigInt escrito a mano que multiplica un acumulador BigInt por la base una vez por cada dígito de entrada. Cada iteración realiza una operación BigInt * BigInt en un acumulador que crece linealmente con el número de dígitos ya consumidos, por lo que todo el bucle es O(n²) en la longitud del literal. La expresión regular del analizador léxico no impone un límite superior a la longitud del literal, por lo que un único documento TOML que contenga un literal hexadecimal de ~500 kB fija un núcleo de CPU durante ~40 segundos en un portátil moderno (serie Apple M, Node v22). La amplificación de memoria está acotada, pero la amplificación de CPU es grave y crece cuadráticamente: duplicar la longitud del literal cuadruplica el trabajo. Un llamador que invoca load() en TOML controlado por un atacante (puntos finales de carga de configuración, sistemas CI/CD que ingieren *.toml de terceros, complementos de IDE, herramientas de compilación) está expuesto a un DoS por agotamiento de CPU de una sola solicitud. La versión 1.1.1 corrige el problema.

Information

Published : 2026-06-19 19:16

Updated : 2026-10-25 23:10


NVD link : CVE-2026-49293

Mitre link : CVE-2026-49293

CVE.ORG link : CVE-2026-49293


JSON object : View

Products Affected

sunnyadn

  • js-toml
CWE
CWE-400

Uncontrolled Resource Consumption

CWE-407

Inefficient Algorithmic Complexity

CWE-1333

Inefficient Regular Expression Complexity