---
id: "CVE-2026-97058"
kind: "vulnerability"
aliases: ["CVE-2026-97058", "GHSA-hp3w-g68c-fv3c"]
title: "Withdrawn Advisory: sprintf-js vulnerable to denial of service through unbounded precision specifiers"
severity: "medium"
cvss: 5.300000190734863
epss: 0.003980000037699938
exploited: false
status: "withdrawn"
category: "package"
products: [{"name": "sprintf-js", "fixed": [], "affected": "<= 1.1.3", "ecosystem": "npm"}]
ecosystems: ["npm"]
tags: ["cwe-1284", "node", "npm", "package", "sprintf-js"]
not_affected_if: ["default-config", "no-user-controlled-format-strings", "withdrawn-advisory"]
published_at: "2026-09-24T14:18:21+00:00"
first_seen_at: "2026-10-23T19:11:31+00:00"
updated_at: "2026-10-23T23:44:52+00:00"
sources: [{"source": "ghsa", "url": "https://github.com/advisories/GHSA-hp3w-g68c-fv3c", "first_seen_at": "2026-10-23T19:11:31+00:00"}, {"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-97058", "first_seen_at": "2026-10-23T23:44:52+00:00"}]
---

# Withdrawn Advisory: sprintf-js vulnerable to denial of service through unbounded precision specifiers

This advisory is withdrawn: the sprintf-js npm package (through 1.1.3) passes unvalidated precision values to toFixed/toExponential/toPrecision, which throw RangeError. An attacker who controls a format string can make the calling operation throw, which the maintainers say is the application's job to handle.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- npm:sprintf-js affected <= 1.1.3 fixed ?

## How to check

Run npm ls sprintf-js to see whether sprintf-js 1.1.3 or lower is in the dependency tree.
Check whether any code passes user-controlled strings as sprintf format strings.

## Timeline

- 2026-10-23T19:11:31+00:00 ghsa https://github.com/advisories/GHSA-hp3w-g68c-fv3c
- 2026-10-23T23:44:52+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-97058

## From the sources

### Withdrawn Advisory
This advisory has been withdrawn because it is the responsibility of an application to handle exceptions appropriately. This link is maintained to preserve external references.

### Original Description
sprintf-js through 1.1.3 passes unbounded precision specifiers to toFixed, toExponential, and toPrecision methods without validation, causing uncaught RangeError exceptions. Attackers who control format strings can inject precision values exceeding ECMAScript limits to abort calling operations with minimal payload.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
