{"id":"CVE-2026-97058","kind":"vulnerability","aliases":["CVE-2026-97058","GHSA-hp3w-g68c-fv3c"],"related":[],"title":"Withdrawn Advisory: sprintf-js vulnerable to denial of service through unbounded precision specifiers","description":"### Withdrawn Advisory\nThis advisory has been withdrawn because it is the responsibility of an application to handle exceptions appropriately. This link is maintained to preserve external references.\n\n### Original Description\nsprintf-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.","summary":"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.","severity":"medium","cvss":5.300000190734863,"epss":0.003980000037699938,"exploited":false,"exploited_at":null,"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"],"how_to_check":"Run npm ls sprintf-js to see whether sprintf-js 1.1.3 or lower is in the dependency tree.\nCheck whether any code passes user-controlled strings as sprintf format strings.","fix":null,"status":"withdrawn","published_at":"2026-09-24T14:18:21+00:00","first_seen_at":"2026-10-23T19:11:31+00:00","triaged_at":"2026-10-23T20:03:10+00:00","updated_at":"2026-10-23T23:44:52+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-23T20:03:10Z","model":"claude-haiku-5-5","output":{"fix":"unknown","summary":"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.","category":"package","who_cares":["npm","node","sprintf-js"],"confidence":0.7,"analyst_note":"","how_to_check":"Run npm ls sprintf-js to see whether sprintf-js 1.1.3 or lower is in the dependency tree.\nCheck whether any code passes user-controlled strings as sprintf format strings.\nunknown","needs_analyst":false,"not_affected_if":["withdrawn-advisory","no-user-controlled-format-strings","default-config"],"severity_if_unknown":"unknown"},"cost_usd":0.000366,"input_tokens":2155,"output_tokens":302,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-1284':30B '-2026':16A,24A '-97058':17A,25A '1.1.3':48B,115C 'abort':145C 'advisori':2A,38B,83C,85C 'applic':77B,96C 'appropri':100C 'attack':59B,132C 'call':68B,146C 'caus':128C 'control':61B,134C 'cve':15A,23A 'cwe':29B 'denial':8A 'descript':110C 'ecmascript':142C 'exceed':141C 'except':99C,131C 'extern':107C 'format':63B,135C 'fv3c':22A 'g68c':21A 'ghsa':19A 'ghsa-hp3w-g68c-fv3c':18A 'handl':81B,98C 'hp3w':20A 'inject':138C 'job':79B 'js':5A,28A,36B,44B,113C 'limit':143C 'link':102C 'maintain':73B,104C 'make':66B 'method':125C 'minim':149C 'node':31B 'npm':32B,45B 'oper':69B,147C 'origin':109C 'packag':33B,46B 'pass':49B,116C 'payload':150C 'precis':13A,51B,118C,139C 'preserv':106C 'rangeerror':57B,130C 'refer':108C 'respons':93C 'say':74B 'servic':10A 'specifi':14A,119C 'sprintf':4A,27A,35B,43B,112C 'sprintf-j':3A,34B,42B,111C 'sprintf-js':26A 'string':64B,136C 'throw':56B,70B 'toexponenti':122C 'tofix':121C 'tofixed/toexponential/toprecision':54B 'toprecis':124C 'unbound':12A,117C 'uncaught':129C 'unvalid':50B 'valid':127C 'valu':52B,140C 'vulner':6A 'withdrawn':1A,40B,82C,88C 'without':126C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-09-24T14:18:21+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-hp3w-g68c-fv3c","url":"https://github.com/advisories/GHSA-hp3w-g68c-fv3c","severity":"medium","published_at":"2026-09-24T15:31:31+00:00","modified_at":"2026-10-22T19:21:09+00:00","first_seen_at":"2026-10-23T19:11:31+00:00","fetched_at":"2026-10-23T19:11:31+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-97058","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-97058","severity":null,"published_at":"2026-09-24T14:18:21+00:00","modified_at":"2026-10-16T15:10:00+00:00","first_seen_at":"2026-10-23T23:44:52+00:00","fetched_at":"2026-10-23T23:44:52+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}