CVE-2016-10539 Regular Expression Denial of Service in negotiator

High 7.5 Published Updated

Attackers can cause denial of service in Node.js applications using the negotiator library by sending specially crafted Accept-Language headers.

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

What is CVE-2016-10539?

CVE-2016-10539 is a high-severity denial of service vulnerability in HackerOne negotiator node module, published on 31 May 2018. An attacker can exploit it over the internet without logging in, with no action from the victim.

Official description

negotiator is an HTTP content negotiator for Node.js and is used by many modules and frameworks including Express and Koa. The header for "Accept-Language", when parsed by negotiator 0.6.0 and earlier is vulnerable to Regular Expression Denial of Service via a specially crafted string.

Weakness: CWE-20, CWE-400

Which versions are affected by CVE-2016-10539?

2 open source packages ship an affected version, including negotiator. It affects 1 product.

PackageAffectedFixed in
negotiator npmAll versions0.6.1
negotiator npmAll versions0.6.1

Products include Negotiator Project Negotiator.

How do I fix CVE-2016-10539?

Upgrade negotiator to 0.6.1 or later.

Upgrade, then put limits on request size, rate and nesting depth so one client cannot exhaust the service. More about Denial of service.

Is CVE-2016-10539 being exploited?

There is no known exploitation of CVE-2016-10539 in the wild and no public exploit code.

Sources

Also known as AZL-44826, CLSA-2026-1774830279, CLSA-2026-1784682762, CLSA-2026-1792489812, CVE-2016-1000022, DEBIAN-CVE-2016-10539 and 2 more.

Is CVE-2016-10539 in your software?

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

Check your SBOMs for free