Malicious code in react-paginate-v5 (npm)
--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (2c0f91fe35323a6f47033b90ebaf88498a36fd7e8e933711b2cf301dba2e4759) react-paginate-v5@99.0.0 is a dependency-confusion probe published under a name resembling the popular react-paginate package and pinned to an implausibly high version (99.0.0) to win resolution against an internal package. Its package.json declares a preinstall lifecycle script that runs `nslookup dep-confusion-poc.2chsn9exkdupkr3cxed7vp7sk.canarytokens.com`, which fires automatically on `npm install` and emits a DNS query from the installer's resolver to an attacker/researcher-controlled canary subdomain. The subdomain label (`dep-confusion-poc`) self-identifies the operation as a dependency-confusion test. The DNS lookup confirms successful installation to the operator of the canary token, identifying hosts and networks where an internal package name was shadowed by this public squat. While the beacon itself only exfiltrates the fact of installation plus resolver metadata, the same install-time execution primitive can carry any shell command, and the package has no legitimate functionality.
- Products
- react-paginate-v5
- Affected versions
- 99.0.0
- Fixed versions
- Not specified
- CVEs
- Not specified
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 30 Oct 2026, 01:56 UTC · Revision 1
Source evidence
--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (2c0f91fe35323a6f47033b90ebaf88498a36fd7e8e933711b2cf301dba2e4759) react-paginate-v5@99.0.0 is a dependency-confusion probe published under a name resembling the popular react-paginate package and pinned to an implausibly high version (99.0.0) to win resolution against an internal package. Its package.json declares a preinstall lifecycle script that runs `nslookup dep-confusion-poc.2chsn9exkdupkr3cxed7vp7sk.canarytokens.com`, which fires automatically on `npm install` and emits a DNS query from the installer's resolver to an attacker/researcher-controlled canary subdomain. The subdomain label (`dep-confusion-poc`) self-identifies the operation as a dependency-confusion test. The DNS lookup confirms successful installation to the operator of the canary token, identifying hosts and networks where an internal package name was shadowed by this public squat. While the beacon itself only exfiltrates the fact of installation plus resolver metadata, the same install-time execution primitive can carry any shell command, and the package has no legitimate functionality.
osv:MAL-2026-17777
react-paginate-v5
Fixed versions: Not specified
Complete source record
{
"id": "e87c4b06d4625510ff7d78aa50e1f0688a536d5c22fb07ac3f8ecdccc5de6235",
"url": "https://osv.dev/vulnerability/MAL-2026-17777",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Malicious code in react-paginate-v5 (npm)",
"summary": "--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (2c0f91fe35323a6f47033b90ebaf88498a36fd7e8e933711b2cf301dba2e4759) react-paginate-v5@99.0.0 is a dependency-confusion probe published under a name resembling the popular react-paginate package and pinned to an implausibly high version (99.0.0) to win resolution against an internal package. Its package.json declares a preinstall lifecycle script that runs `nslookup dep-confusion-poc.2chsn9exkdupkr3cxed7vp7sk.canarytokens.com`, which fires automatically on `npm install` and emits a DNS query from the installer's resolver to an attacker/researcher-controlled canary subdomain. The subdomain label (`dep-confusion-poc`) self-identifies the operation as a dependency-confusion test. The DNS lookup confirms successful installation to the operator of the canary token, identifying hosts and networks where an internal package name was shadowed by this public squat. While the beacon itself only exfiltrates the fact of installation plus resolver metadata, the same install-time execution primitive can carry any shell command, and the package has no legitimate functionality.",
"evidence": "osv:MAL-2026-17777",
"products": [
{
"name": {
"value": "react-paginate-v5",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "99.0.0",
"evidence": "/affected/0/versions"
}
]
}
],
"severity": "unknown",
"structured": {
"id": "MAL-2026-17777",
"aliases": [
"MAL-2026-17777"
],
"affected": [
{
"package": {
"name": "react-paginate-v5",
"purl": "pkg:npm/react-paginate-v5",
"ecosystem": "npm"
},
"versions": [
"99.0.0"
],
"database_specific": {
"cwes": [
{
"name": "Embedded Malicious Code",
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature."
}
],
"source": "https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/react-paginate-v5/MAL-2026-17777.json",
"indicators": {
"evidence_files": [
{
"path": "package.json",
"tlsh": "3ae07d34ac21583319f982f70872550716b3dc6a9019bd0ea75ba00ce5ceeb3937b148",
"sha256": "e4ddadc2953f2675846dc3eb28ff1a9f106ddb9202ab6bdef575a8ba8201b32f"
}
],
"package_integrity": [
{
"hashes": {
"sha1": "cfdcb7e56ec646f42f229f7eed0a0e3099e6180b",
"sha512_sri": "sha512-miYSw1WOeIy/dXd+24lX0KfQ1+eEqzyoEKHM+LN5YFQ0ZclyLcsQlfQNHZHePIje19XPBXGjx35Muf/vgRs17Q=="
},
"filename": "react-paginate-v5-99.0.0.tgz"
}
]
}
}
}
],
"modified": "2026-10-11T14:30:09.173125481Z",
"provider": "osv",
"references": [
"https://www.npmjs.com/package/react-paginate-v5/v/99.0.0"
],
"provider_metadata": {
"malicious-packages-origins": [
{
"id": "IN-MAL-2026-021429",
"sha256": "2c0f91fe35323a6f47033b90ebaf88498a36fd7e8e933711b2cf301dba2e4759",
"source": "amazon-inspector",
"versions": [
"99.0.0"
],
"import_time": "2026-10-11T14:18:04.861546546Z",
"modified_time": "2026-10-11T13:58:11Z"
}
]
}
},
"related_cves": [],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 286048,
"published_at": "2026-10-11T13:58:11+00:00"
}