MAL-2026-10894

See a problem?
Import Source
https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/exodus-checkout/MAL-2026-10894.json
JSON Data
https://api.osv.dev/v1/vulns/MAL-2026-10894
Aliases
  • GHSA-mqx8-fhj5-w597
Published
2026-07-20T10:42:41Z
Modified
2026-09-01T11:30:36Z
Summary
Malicious code in exodus-checkout (npm)
Details

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

Source: amazon-inspector (b10e41b9a87dc4927d3c4bc63b25bc1fa438cfae1bcf5f1d483204a18d5765f6)

Package exodus-checkout self-identifies as a security-research dependency-confusion proof-of-concept targeting an internal Exodus payments SDK. It mimics the internal API surface (generateMnemonicSigningKeys, signCharge, signRefund, signCancelSubscription in src/index.js), but every exported function throws — there is no functional implementation. On npm install, src/canary.js runs a postinstall hook that performs a DNS lookup and HTTPS GET to a hardcoded serveo SSH-tunnel host (96e03fa6c292469a-172-245-86-254.serveousercontent.com/canary-install), passing the package's own name and version as query parameters. No installer data (env vars, filesystem, credentials) is read or transmitted — the beacon carries only the package's own identity. Installer-side impact: any build that resolves exodus-checkout from public npm (whether by typo, dependency confusion, or accidental inclusion) breaks at runtime because all exports throw, and emits a one-way network signal to a researcher-controlled tunnel domain that is not Exodus infrastructure and cannot be audited by Exodus or the installer. Routing to human review: name-impersonation of a vendor's internal namespace plus an install-time outbound beacon is the dependency-confusion shape, but the absence of any data exfiltration or remote-code-execution mechanism keeps this below the active-attack threshold.

Database specific
{
    "malicious-packages-origins":  [
        {
            "id":  "RLMA-2026-05534",
            "import_time":  "2026-07-20T13:14:46.088305809Z",
            "modified_time":  "2026-07-20T10:42:41Z",
            "sha256":  "7675bbf85d1c6736952eca830341836db29b378fbda4a9466645f2ca28a0ac6c",
            "source":  "reversing-labs",
            "versions":  [
                "99.0.0-canary.1"
            ]
        },
        {
            "id":  "IN-MAL-2026-012911",
            "import_time":  "2026-08-05T06:00:18.969147625Z",
            "modified_time":  "2026-08-05T05:06:51Z",
            "sha256":  "b10e41b9a87dc4927d3c4bc63b25bc1fa438cfae1bcf5f1d483204a18d5765f6",
            "source":  "amazon-inspector",
            "versions":  [
                "99.0.0-canary.1"
            ]
        },
        {
            "id":  "RLUA-2026-06228",
            "import_time":  "2026-09-01T11:18:05.239135089Z",
            "modified_time":  "2026-08-24T16:50:58Z",
            "sha256":  "6711b73c156f43b51ac8272c2a4aec48ffc535e413f443a5f8777d6c9260d6ec",
            "source":  "reversing-labs"
        }
    ]
}
References
Credits

Affected packages

npm / exodus-checkout

Package

Name
exodus-checkout
View open source insights on deps.dev
Purl
pkg:npm/exodus-checkout

Affected ranges

Affected versions

99.*
99.0.0-canary.1

Database specific

cwes
[
    {
        "cweId":  "CWE-506",
        "description":  "The product contains code that appears to be malicious in nature.",
        "name":  "Embedded Malicious Code"
    }
]
indicators
{
    "evidence_files":  [
        {
            "path":  "src/index.js",
            "sha256":  "8df05b04ab1173592b08d71dea34f5998519f445526493f61ab3dd9dc0145a5a",
            "tlsh":  "63e07d5f0961337a1d8bd441d49794213fa2560ad0fd89a60c8d521f75035348eff0c5"
        },
        {
            "path":  "src/canary.js",
            "sha256":  "16502b9065d4976ebb34fd49d0fb75f3cd0e64cf8d35872b419a6b6752485d51",
            "tlsh":  "37e06ffe4fd0a33a56701bc9f080a54fe707e3283085a2c1d69822a249c28f0ae218f0"
        },
        {
            "path":  "README.md",
            "sha256":  "cacfc22dac62ab18a95edb6dff59d47e191b0b0dc4dc5365bf18782da02f5ac6",
            "tlsh":  "e8e0c04495e1032256f56cf966d709d06b7cf07061169da9bfcb560f6308a9ac30368e"
        }
    ],
    "package_integrity":  [
        {
            "filename":  "exodus-checkout-99.0.0-canary.1.tgz",
            "hashes":  {
                "sha1":  "95da3c4d9d5bd33667fdc643618bfc92f4b2dd01",
                "sha512_sri":  "sha512-sNpAjNExfERmXr5vgaTMV3Y2AllVKWv0CTOZ+HEIXV/OEkrTDfCEhSaVM9Q5SxSx2z7H4r2zY2AssMZYTcL5+w=="
            }
        }
    ]
}
source
"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/exodus-checkout/MAL-2026-10894.json"