MAL-2026-10089

See a problem?
Import Source
https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/neon-poly-utls/MAL-2026-10089.json
JSON Data
https://api.osv.dev/v1/vulns/MAL-2026-10089
Aliases
  • GHSA-3fwc-79pq-r47c
Published
2026-07-09T17:02:47Z
Modified
2026-07-31T01:38:43Z
Summary
Malicious code in neon-poly-utls (npm)
Details

-= Per source details. Do not edit below this line.=-

Source: amazon-inspector (0d32a00f9baf3245d9fb2850131a024274a409ca0eb90ac9db6e3e7dc37d379f)

The package's postinstall script reads a URL from package.json.homepage pointing to polymarket-clob-service.vercel.app/config/clob-math.json, fetches that JSON to resolve a peer-bundle URL, downloads a.tgz to disk, extracts it via tar -xzf, runs npm install inside the extracted directory, then require()s peer-math.js from the extracted bundle and invokes syncSession() — all during npm install. The fetched artifact is unpinned, has no hash or signature verification, and is served from a Vercel app that is not the Polymarket publisher's domain. The published package is named neon-poly-utls but its README markets it as clob-math-v2 and instructs users to npm install clob-math-v2 / require('clob-math-v2'), impersonating a Polymarket CLOB math SDK. Log strings frame the fetch as a benign 'peer sync' / 'install check' and errors are swallowed to warnings so the install completes silently regardless of payload behavior. The mutable remote URL controls arbitrary Node code execution on every installer machine at install time.

Source: ghsa-malware (9610ff428360411d064dbe059844e034ffd117045e1048446e3c8e328b7ac50e)

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.

Database specific
{
    "malicious-packages-origins": [
        {
            "id": "IN-MAL-2026-009373",
            "import_time": "2026-07-09T17:19:30.554826171Z",
            "modified_time": "2026-07-09T17:02:47Z",
            "sha256": "0d32a00f9baf3245d9fb2850131a024274a409ca0eb90ac9db6e3e7dc37d379f",
            "source": "amazon-inspector",
            "versions": [
                "1.3.1"
            ]
        },
        {
            "id": "GHSA-3fwc-79pq-r47c",
            "import_time": "2026-07-31T01:10:09.556461885Z",
            "modified_time": "2026-07-30T16:08:17Z",
            "ranges": [
                {
                    "events": [
                        {
                            "introduced": "0"
                        }
                    ],
                    "type": "SEMVER"
                }
            ],
            "sha256": "9610ff428360411d064dbe059844e034ffd117045e1048446e3c8e328b7ac50e",
            "source": "ghsa-malware"
        }
    ]
}
References
Credits

Affected packages

npm / neon-poly-utls

Package

Name
neon-poly-utls
View open source insights on deps.dev
Purl
pkg:npm/neon-poly-utls

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected

Affected versions

1.*
1.3.1

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"
    }
]
indicators
{
    "evidence_files": [
        {
            "path": "scripts/install-check.cjs",
            "sha256": "6802db59168709186a085f1bf6c162288ae0482d66a35816bda9f0704d0b709b",
            "tlsh": "59a1459519a2727746b1ebb8c722901dfe2340233521c350f6de96952fb72a4c352dec"
        },
        {
            "path": "README.md",
            "sha256": "39e79ec3c81d0328631b6febb482d441cd363d74b38ac14d2242e63e0b884906",
            "tlsh": "f7f0e1049857e33de1b90ba7527f06e15d29d14ca609e70f35b64abe5031aa4930ec1e"
        }
    ],
    "package_integrity": [
        {
            "filename": "neon-poly-utls-1.3.1.tgz",
            "hashes": {
                "sha1": "ffc6bc49bc66156569c74e9aaa467d75f8151699",
                "sha512_sri": "sha512-uY1b4Rw46UXrXGIx8Cmx+M7J0Y0YbmIeVpc/IGpAZZ/r+ySDVpnB6kKDnMAOTiGr2UTjjJM/6Tw0K9B5jSOfmQ=="
            }
        }
    ]
}
source
"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/neon-poly-utls/MAL-2026-10089.json"