MAL-2026-14299

See a problem?
Import Source
https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/gear-composer/MAL-2026-14299.json
JSON Data
https://api.osv.dev/v1/vulns/MAL-2026-14299
Published
2026-08-19T09:53:53Z
Modified
2026-08-19T10:15:12.730941145Z
Summary
Malicious code in gear-composer (npm)
Details

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

Source: amazon-inspector (f697d2d145e4ade11da0d34433b5f69b46fde8736031c5ffe63af4d2f843eaad)

The package ships multiple components consistent with an install-time credential harvest and exfiltration pipeline. scripts/postinstall-agent.mjs is registered as a lifecycle hook and performs host identification and outbound network activity. dist/secretScan/contentScanner.js and dist/secretScan/agentStartupAudit.js implement a secret-scanning path that reads content, decodes/re-encodes it via Buffer.from(..., 'base64'), and issues fetch() calls to huggingface.co endpoints (agentStartupAudit.js lines 490-563). dist/discord/discordRelayUpload.js and its top-level duplicate carry base64 blob handling together with ping and POST-based network operations for uploading collected data to Discord (lines 39, 227, 306, 321, 398, 461, 536). dist/relay/relayServer.js embeds an additional relay/beaconing surface with repeated ping calls. dist/hf/hfCredentials.js decodes base64-embedded credentials at load time (line 50). scripts/encode-deployment.mjs and dist/core/deploymentDefaults.js contain the encode/decode pair used to hide the shipped configuration/credentials. The combination — postinstall-triggered agent, base64-obfuscated deployment defaults and third-party credentials, filesystem/content scanner, and hardcoded relay destinations to Discord and HuggingFace — matches an active credential-exfiltration and covert-relay pattern rather than a normal composer/build tool.

Database specific
{
    "malicious-packages-origins": [
        {
            "import_time": "2026-08-19T10:11:38.675344143Z",
            "source": "amazon-inspector",
            "modified_time": "2026-08-19T09:53:53Z",
            "sha256": "f697d2d145e4ade11da0d34433b5f69b46fde8736031c5ffe63af4d2f843eaad",
            "id": "IN-MAL-2026-018418",
            "versions": [
                "1.0.126"
            ]
        }
    ]
}
References
Credits

Affected packages

npm / gear-composer

Package

Affected ranges

Affected versions

1.*
1.0.126

Database specific

source
"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/gear-composer/MAL-2026-14299.json"
indicators
{
    "evidence_files": [
        {
            "sha256": "cbf70b0d8654138a0b4dfcb152824c85fecab500e1a5fade53c2049da4c0dc48",
            "tlsh": "e1f16549b8e7b0100663b5f8861bc8973bdcad07260ed444b35e93956f1f831a3b76e6",
            "path": "dist/core/deploymentDefaults.js"
        },
        {
            "sha256": "cbf70b0d8654138a0b4dfcb152824c85fecab500e1a5fade53c2049da4c0dc48",
            "tlsh": "e1f16549b8e7b0100663b5f8861bc8973bdcad07260ed444b35e93956f1f831a3b76e6",
            "path": "dist/deploymentDefaults.js"
        },
        {
            "sha256": "d48dffc3294eb56409550df2f8ac2b2df71ca1a486f0d45036686bf972e5f3d1",
            "tlsh": "67e296fab5f724311162b6698b5bd0057328b147741eeca47a8ca29c9f9c025c2f7fc6",
            "path": "dist/discord/discordRelayUpload.js"
        },
        {
            "sha256": "debe8ff010dd0e4bec0af85cbd8708ba345158fc103b9fe68eb12b4d68539c19",
            "tlsh": "d4e296fab5f724311162b6698b5bd0057328b147741eeca47a8ca29c9f9c025c2f7fc6",
            "path": "dist/discordRelayUpload.js"
        },
        {
            "sha256": "73498999ff9d587684def3acd7f7852c8577ce9d4d742b373e36261d88e5334d",
            "tlsh": "6ee184066ef690200177907a912be01576b0703f6ae1d1f2f69ddec9af12c768ae3dc1",
            "path": "dist/hf/hfCredentials.js"
        },
        {
            "sha256": "bf0091702bbc62eff2319360ab7103a33fee8f5bfad4e63aa359175285de7f49",
            "path": "dist/hfCredentials.js",
            "tlsh": "cae184062ef6902001779079912be01576b0703f6ae1d5f2f69ddec9af12c768ae3dc1"
        },
        {
            "sha256": "0c3fbf5c21245202de887790adfc549d0cedfe1cabc090faf27e8fc5ae1a8e55",
            "path": "dist/relay/relayServer.js",
            "tlsh": "a093b58a69f360320763f2bd5b5b8001b339d5077558ddd4fa9c8258af8d92883f1be9"
        },
        {
            "sha256": "3cadd8c077bb28c0a5a03ddc83eb12527992d397853cad5e4a9bf82e53bfdfcc",
            "tlsh": "5e93b58a69f360324363f2bd5b5b8001b339d1077558ddd4fa9c8258af9d92883f1be9",
            "path": "dist/relayServer.js"
        },
        {
            "sha256": "a4ebea897ca7712bd57c1c1cb3ffa74c409bbce225195689f6bc63c6d212cb56",
            "tlsh": "a3e2eb9a69f32432826371be5a4f9005f660b427214ce8a47a5cc299ff454b8d3f7fd8",
            "path": "dist/secretScan/agentStartupAudit.js"
        },
        {
            "sha256": "5f983523fea613c052e726cf94f86c894e72c34261a538e6e6f3999cd76191a5",
            "path": "dist/secretScan/contentScanner.js",
            "tlsh": "7212824a6af320514d2330fe1b8b8500b97aa847351cdd28be9c83906f5597c9af7bdc"
        },
        {
            "sha256": "36c301a61abec8b3658aa278f9cdcdfa0edf6409f4eec68449724d68ef222ea8",
            "tlsh": "34b1b70368e9947041fee3d25953b90b7afdf7153302acc5766e46b90b6bc31026be0a",
            "path": "scripts/encode-deployment.mjs"
        },
        {
            "sha256": "9822fa46896aba178c533b4ed1579ec737869984dc44760dc3ad618c39614118",
            "tlsh": "3292e88ce6e71a7606a1e79d7a1f150667a0d1470648e4b4f0dd82887f2d03d83b7ebe",
            "path": "scripts/postinstall-agent.mjs"
        }
    ],
    "package_integrity": [
        {
            "filename": "gear-composer-1.0.126.tgz",
            "hashes": {
                "sha512_sri": "sha512-WS5JTF4Ti9+orj7SmgJmT4c3jn77OmkGXvHQBAdir2OhsevQMMIbrKgaqCRyXHNPN+QCw81AljKb1/AZpoKxrA==",
                "sha1": "36f7de78636829a4f944d7506adea15e6b4cdbed"
            }
        }
    ]
}
cwes
[
    {
        "name": "Embedded Malicious Code",
        "description": "The product contains code that appears to be malicious in nature.",
        "cweId": "CWE-506"
    }
]