mal-2026-15494
Vulnerability from ossf_malicious_packages
-= Per source details. Do not edit below this line.=-
Source: amazon-inspector (ab8f8efdad9084d2a7c5ae5058ffc18886d68bfe1c676239fd7e0d41342fc700)
The tarball ships a binding.gyp at the package root whose conditions field abuses GYP's Python expression evaluator to walk ().__class__.__base__.__subclasses__() to catch_warnings, retrieve __import__ via _module.__builtins__, load os, and call os.system('node 3FWCvzduYZg.js') (the command is Unicode-escape-obfuscated). Because a binding.gyp at the package root causes npm install to invoke node-gyp rebuild automatically — even with no lifecycle script declared — this executes shell on every installer during configure. The launched sibling file 3FWCvzduYZg.js is a 5.4 MB blob consisting of a single try{Function(function(a,k){...XOR...}([large int array], key))(...)} construct: an XOR-decoded string passed to Function() and invoked, a loader/dropper shape whose body cannot be inspected without evaluation. The referenced native source (dog.c) is absent from the tarball, so the binding.gyp has no legitimate build purpose. package.json declares "files": ["dist"], but binding.gyp and 3FWCvzduYZg.js sit at the tarball root and are honored regardless — an inclusion gap consistent with smuggled payload added outside the declared publish surface. The package's advertised purpose is a React Query code generator, which requires no native addon and no multi-megabyte obfuscated JS payload.
Source: ghsa-malware (4cb5796bf3e7e7370e84627781c082d359c34de6b1a32799f127df37c5418cf7)
Any computer that has this package installed or running should be considered fully compromised. All secrets and keys stored on that computer should be rotated immediately from a different computer. The package should be removed, but as full control of the computer may have been given to an outside entity, there is no guarantee that removing the package will remove all malicious software resulting from installing it.
- CWE-506 - The product contains code that appears to be malicious in nature.
- CWE-506 - The product contains code that appears to be malicious in nature.
- CWE-506 - The product contains code that appears to be malicious in nature.
- CWE-506 - The product contains code that appears to be malicious in nature.
- CWE-506 - The product contains code that appears to be malicious in nature.
- CWE-506 - The product contains code that appears to be malicious in nature.
- CWE-506 - The product contains code that appears to be malicious in nature.
- CWE-506 - The product contains code that appears to be malicious in nature.
- CWE-506 - The product contains code that appears to be malicious in nature.
- CWE-506 - The product contains code that appears to be malicious in nature.
{
"affected": [
{
"database_specific": {
"cwes": [
{
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature.",
"name": "Embedded Malicious Code"
},
{
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature.",
"name": "Embedded Malicious Code"
},
{
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature.",
"name": "Embedded Malicious Code"
},
{
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature.",
"name": "Embedded Malicious Code"
},
{
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature.",
"name": "Embedded Malicious Code"
},
{
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature.",
"name": "Embedded Malicious Code"
},
{
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature.",
"name": "Embedded Malicious Code"
},
{
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature.",
"name": "Embedded Malicious Code"
},
{
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature.",
"name": "Embedded Malicious Code"
},
{
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature.",
"name": "Embedded Malicious Code"
}
],
"indicators": {
"evidence_files": [
{
"path": "3FWCvzduYZg.js",
"sha256": "b24d121667f21f492cb9db34fbfd515d5922a8dd30b9c45215c7220abbb10ca8",
"tlsh": "8856599c4257672cfe9caf59c28cc56650f15addb2b25089ce72ed123e13ece912089f"
},
{
"path": "binding.gyp",
"sha256": "d3246926b20a8d021ed7de0ac8e9eee1dda986088f84ba18f31cb2042a121f5d",
"tlsh": "da01f470d1cf486dc2cd69640d657c56b4b03c924bc12902326fe71a570c2b72779a99"
}
],
"package_integrity": [
{
"filename": "openapi-react-query-codegen-3.0.4.tgz",
"hashes": {
"sha1": "3fc635b988db2bd647b8578dfc1a85769913b708",
"sha512_sri": "sha512-JBsGw9fTs/Gz6KWSPAQHfKz1UN5bO4BeJH9UP9vczE7siyp1w8bpTB9COaXWJEEtYEiIRYvCDnu63eIc7/gplg=="
}
}
]
}
},
"package": {
"ecosystem": "npm",
"name": "@7nohe/openapi-react-query-codegen"
},
"versions": [
"3.0.4",
"1.6.3",
"3.0.3",
"0.5.4",
"0.5.5",
"2.2.1",
"2.2.2",
"1.6.4",
"0.0.0-ec7876d6c917dad516ba69bbfafc948b834bf0ab",
"0.0.0-365d4eb738d3146583431948d3ba6e27a32556be"
]
}
],
"aliases": [
"GHSA-rg27-qr39-ch6w"
],
"credits": [
{
"contact": [
"inspector-research@amazon.com"
],
"name": "Amazon Inspector",
"type": "FINDER"
}
],
"database_specific": {
"malicious-packages-origins": [
{
"id": "IN-MAL-2026-019047",
"import_time": "2026-08-28T23:14:33.964968389Z",
"modified_time": "2026-08-28T22:59:44Z",
"sha256": "0e3110db9a7197ec471ce9bf6f382183edd5aba2cf6f18f2fd076d1816e89203",
"source": "amazon-inspector",
"versions": [
"3.0.4"
]
},
{
"id": "IN-MAL-2026-019049",
"import_time": "2026-08-28T23:14:34.13867209Z",
"modified_time": "2026-08-28T23:00:01Z",
"sha256": "4cb98e3f867912e2bcff9c3e3206042b4aecc234aeb97ca4a590712a836f8ef5",
"source": "amazon-inspector",
"versions": [
"1.6.3"
]
},
{
"id": "IN-MAL-2026-019048",
"import_time": "2026-08-28T23:14:34.057061708Z",
"modified_time": "2026-08-28T22:59:51Z",
"sha256": "56cfac5b16a98ba1835914a7a227e6545b18fb67bf1831c60bb8e7b86db8ec72",
"source": "amazon-inspector",
"versions": [
"3.0.3"
]
},
{
"id": "IN-MAL-2026-019052",
"import_time": "2026-08-28T23:14:34.400796314Z",
"modified_time": "2026-08-28T23:00:25Z",
"sha256": "87bafa608c1ea9a66f69c8c529a38f9bb345734ac1a101202b8da109e3f9069d",
"source": "amazon-inspector",
"versions": [
"0.5.4"
]
},
{
"id": "IN-MAL-2026-019045",
"import_time": "2026-08-28T23:14:33.800945012Z",
"modified_time": "2026-08-28T22:59:24Z",
"sha256": "8df4f510851dd6e063f52bd2ef767e9e12a32fed02c2fe7aff8f5a29e328748b",
"source": "amazon-inspector",
"versions": [
"0.5.5"
]
},
{
"id": "IN-MAL-2026-019051",
"import_time": "2026-08-28T23:14:34.318849236Z",
"modified_time": "2026-08-28T23:00:18Z",
"sha256": "ab8f8efdad9084d2a7c5ae5058ffc18886d68bfe1c676239fd7e0d41342fc700",
"source": "amazon-inspector",
"versions": [
"2.2.1"
]
},
{
"id": "IN-MAL-2026-019050",
"import_time": "2026-08-28T23:14:34.224465324Z",
"modified_time": "2026-08-28T23:00:08Z",
"sha256": "1a982250d21865ab78d09295c29f435c7a4989fc7ee7d25d1b8790ac0f8ef6d4",
"source": "amazon-inspector",
"versions": [
"2.2.2"
]
},
{
"id": "IN-MAL-2026-019046",
"import_time": "2026-08-28T23:14:33.877550984Z",
"modified_time": "2026-08-28T22:59:36Z",
"sha256": "24dce0d2118d3ebbf67b829dee92f2f0b2be3e7e39c16007b9dc38c972406a35",
"source": "amazon-inspector",
"versions": [
"1.6.4"
]
},
{
"id": "GHSA-rg27-qr39-ch6w",
"import_time": "2026-08-28T23:20:31.753639895Z",
"modified_time": "2026-08-28T23:11:52Z",
"sha256": "4cb5796bf3e7e7370e84627781c082d359c34de6b1a32799f127df37c5418cf7",
"source": "ghsa-malware",
"versions": [
"0.5.5",
"0.0.0-ec7876d6c917dad516ba69bbfafc948b834bf0ab",
"2.2.2",
"1.6.4",
"3.0.4",
"3.0.3",
"0.0.0-365d4eb738d3146583431948d3ba6e27a32556be",
"2.2.1",
"1.6.3",
"0.5.4"
]
},
{
"id": "IN-MAL-2026-019148",
"import_time": "2026-08-29T03:19:44.613652154Z",
"modified_time": "2026-08-29T02:57:58Z",
"sha256": "605168e13b32fc1b94c9acde4558b1add2498d478a0b0a8c02b5952a8b0087c3",
"source": "amazon-inspector",
"versions": [
"0.0.0-365d4eb738d3146583431948d3ba6e27a32556be"
]
}
]
},
"details": "\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (ab8f8efdad9084d2a7c5ae5058ffc18886d68bfe1c676239fd7e0d41342fc700)\nThe tarball ships a binding.gyp at the package root whose `conditions` field abuses GYP\u0027s Python expression evaluator to walk `().__class__.__base__.__subclasses__()` to `catch_warnings`, retrieve `__import__` via `_module.__builtins__`, load `os`, and call `os.system(\u0027node 3FWCvzduYZg.js\u0027)` (the command is Unicode-escape-obfuscated). Because a binding.gyp at the package root causes `npm install` to invoke `node-gyp rebuild` automatically \u2014 even with no lifecycle script declared \u2014 this executes shell on every installer during configure. The launched sibling file 3FWCvzduYZg.js is a 5.4 MB blob consisting of a single `try{Function(function(a,k){...XOR...}([large int array], key))(...)}` construct: an XOR-decoded string passed to `Function()` and invoked, a loader/dropper shape whose body cannot be inspected without evaluation. The referenced native source (`dog.c`) is absent from the tarball, so the binding.gyp has no legitimate build purpose. package.json declares `\"files\": [\"dist\"]`, but binding.gyp and 3FWCvzduYZg.js sit at the tarball root and are honored regardless \u2014 an inclusion gap consistent with smuggled payload added outside the declared publish surface. The package\u0027s advertised purpose is a React Query code generator, which requires no native addon and no multi-megabyte obfuscated JS payload.\n\n## Source: ghsa-malware (4cb5796bf3e7e7370e84627781c082d359c34de6b1a32799f127df37c5418cf7)\nAny computer that has this package installed or running should be considered fully compromised. All secrets and keys stored on that computer should be rotated immediately from a different computer. The package should be removed, but as full control of the computer may have been given to an outside entity, there is no guarantee that removing the package will remove all malicious software resulting from installing it.\n",
"id": "MAL-2026-15494",
"modified": "2026-08-29T03:21:41.102067862Z",
"published": "2026-08-28T22:59:24Z",
"references": [
{
"type": "PACKAGE",
"url": "https://www.npmjs.com/package/@7nohe/openapi-react-query-codegen/v/3.0.4"
},
{
"type": "PACKAGE",
"url": "https://www.npmjs.com/package/@7nohe/openapi-react-query-codegen/v/1.6.3"
},
{
"type": "PACKAGE",
"url": "https://www.npmjs.com/package/@7nohe/openapi-react-query-codegen/v/3.0.3"
},
{
"type": "PACKAGE",
"url": "https://www.npmjs.com/package/@7nohe/openapi-react-query-codegen/v/0.5.4"
},
{
"type": "PACKAGE",
"url": "https://www.npmjs.com/package/@7nohe/openapi-react-query-codegen/v/0.5.5"
},
{
"type": "PACKAGE",
"url": "https://www.npmjs.com/package/@7nohe/openapi-react-query-codegen/v/2.2.1"
},
{
"type": "PACKAGE",
"url": "https://www.npmjs.com/package/@7nohe/openapi-react-query-codegen/v/2.2.2"
},
{
"type": "PACKAGE",
"url": "https://www.npmjs.com/package/@7nohe/openapi-react-query-codegen/v/1.6.4"
},
{
"type": "ADVISORY",
"url": "https://github.com/advisories/GHSA-rg27-qr39-ch6w"
},
{
"type": "PACKAGE",
"url": "https://www.npmjs.com/package/@7nohe/openapi-react-query-codegen/v/0.0.0-365d4eb738d3146583431948d3ba6e27a32556be"
}
],
"schema_version": "1.7.4",
"summary": "Malicious code in @7nohe/openapi-react-query-codegen (npm)"
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.