MAL-2026-13964Malicious code in bs58-15 (npm)
| Ecosystem | Package | Version |
|---|---|---|
| npm | bs58-15 | 6.0.1 |
{"schema_version":"1.7.4","id":"MAL-2026-13964","published":"2026-08-13T00:00:00Z","modified":"2026-08-14T06:01:56.299096773Z","summary":"Malicious code in bs58-15 (npm)","details":"npm/bs58-15 is a typosquat of the popular bs58 base58 codec (cryptocoinjs). The package contains no malicious code of its own: its src/cjs/index.cjs simply does require(\"base65-15x\") and re-exports it. Its sole purpose is to pull in the malicious sink package base65-15x as a runtime dependency (declared dependency: base65-15x: ^5.0.1). base65-15x is a near-verbatim clone of base-x whose decode() exfiltrates every string passed to it by POSTing the raw input to a hardcoded bare-IP C2 (http://46.250.253.63:3000/api/log) before throwing; because base-x/bs58 are how crypto tooling base58-decodes private keys and seeds, the exfiltrated values are frequently secrets. The sink is reported separately as MAL-2026-13748. bs58-15 and its sibling wrappers (bs58-33, bs58-77) were published alongside the three base65 sinks by a single npm maintainer account (smallmantis) within a ~90-minute window on 2026-08-11, forming a matched six-package delivery-plus-exfiltration campaign. Installing bs58-15 is sufficient to introduce the key-exfiltration behavior into a dependent project.\n\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (99502d2feb4743e651628a07ca032fa0cc813ff6482cae15d9c2f1fb6fce63c4)\nPackage name 'bs58-15' impersonates the widely-used 'bs58' base58 encoding library, and its package.json metadata (repository, homepage, bugs) points at the legitimate cryptocoinjs/bs58 project despite being published by an unrelated author, presenting false provenance. The package's single runtime dependency is 'base65-15x', a lookalike of the legitimate 'base-x' package. The main entry executes `require(\"base65-15x\")` and immediately invokes the returned value as a function against an alphabet constant on module load, so any consumer that installs bs58-15 and requires it pulls attacker-named dependency code into their dependency graph and executes it at import time.\n","affected":[{"package":{"name":"bs58-15","ecosystem":"npm"},"versions":["6.0.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/cjs/index.cjs","sha256":"af91c74168160207f1c21d89892e6def9b0ef81342c383faeb3e90c1936adaf0","tlsh":"dee0615a7db7d5914664004e4325c8932efd4c7f0484345a72cf9fbad25409568a1d27"},{"path":"package.json","sha256":"2fcb29a04147a517d327d58eecbe379feef96a1b6d55c094991b87d0e58307f3","tlsh":"d5319959d8b84d6317c5a1a499795a13e6350d8b8818fc5e73ee422c8f8c17f01fd2ed"}],"package_integrity":[{"filename":"bs58-15-6.0.1.tgz","hashes":{"sha1":"6908dad51bf8bb28ed0d1b51cd758cca07dec009","sha512_sri":"sha512-owB5f6xDKn0wpyeEjd9HOXb/u9WTeBweeowfVeN25mHz+da8ARHiJ4n6NDHeVQRB1hsrTZs/q1uF6v9ecW8+Kw=="}}]}}}],"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/bs58-15/v/6.0.1"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/bs58-15"},{"type":"ADVISORY","url":"https://osv.dev/vulnerability/MAL-2026-13748"},{"type":"WEB","url":"https://pkgwarden.com/incidents/base65-npm-august-2026/"}],"database_specific":{"malicious-packages-origins":[{"id":"IN-MAL-2026-017667","import_time":"2026-08-13T20:49:27.433264424Z","modified_time":"2026-08-13T20:36:26Z","sha256":"99502d2feb4743e651628a07ca032fa0cc813ff6482cae15d9c2f1fb6fce63c4","source":"amazon-inspector","versions":["6.0.1"]}]},"credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"},{"name":"pkgwarden","contact":["https://pkgwarden.com"],"type":"FINDER"}]}数据来源:OpenSSF Malicious Packages · Apache-2.0