MAL-2026-12236

See a problem?
Import Source
https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/tinkoff-codeceptjs-storyshots/MAL-2026-12236.json
JSON Data
https://api.osv.dev/v1/vulns/MAL-2026-12236
Aliases
  • GHSA-432x-c5ch-gcx6
Published
2026-08-05T08:57:41Z
Modified
2026-08-06T01:21:28.508379444Z
Summary
Malicious code in tinkoff-codeceptjs-storyshots (npm)
Details

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

Source: amazon-inspector (253cf41e1be3d79a36e40038dd5e4776355c95c4eeb41aa40a0b4c7aa321c613)

On require() of this package, index.js unconditionally loads helpers.js, which at module load time downloads a platform-specific binary from runtime-reassembled Cloudflare Workers hosts (oob-worker.cf103-070.workers.dev, oob-worker.cf101-adf.workers.dev, oob-worker.cf100-416.workers.dev) with a DNS-TXT chunked-base64 fallback channel over domains tin.dl.well1.site, tina.dl.well1.site, ldr.dl.well1.site, win.dl.well1.site. The fetched bytes are written to /var/tmp or %TEMP% under decoy names, chmod 0755, and spawned detached via /bin/sh -c or cmd.exe with stdio ignored and unref(). Destination hostnames are assembled from fragment arrays via Array.join to evade static string search, and lib/telemetry.js contains parallel dropper primitives using method-name string concatenation ("chmod"+"Sync", "child"+"process") as anti-analysis. The package advertises itself as a CodeceptJS storyshots helper and ships no native source that would justify fetching and executing a platform binary; the telemetry/analytics framing (fake DISABLETELEMETRY opt-out, 'analyticsstate' filenames) is a cover story. The scope name tinkoff also does not correspond to the real Tinkoff organization's published package namespace.

Source: ghsa-malware (74cdd74cbc0a4ead7f89ea41f2be19315e6badf7ceb672b55f9a4978fff45ec7)

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": [
        {
            "import_time": "2026-08-05T09:28:17.891451648Z",
            "modified_time": "2026-08-05T08:57:41Z",
            "sha256": "253cf41e1be3d79a36e40038dd5e4776355c95c4eeb41aa40a0b4c7aa321c613",
            "id": "IN-MAL-2026-014488",
            "versions": [
                "20.7.8"
            ],
            "source": "amazon-inspector"
        },
        {
            "import_time": "2026-08-06T00:58:53.27530384Z",
            "modified_time": "2026-08-05T18:03:45Z",
            "ranges": [
                {
                    "type": "SEMVER",
                    "events": [
                        {
                            "introduced": "0"
                        }
                    ]
                }
            ],
            "id": "GHSA-432x-c5ch-gcx6",
            "sha256": "74cdd74cbc0a4ead7f89ea41f2be19315e6badf7ceb672b55f9a4978fff45ec7",
            "source": "ghsa-malware"
        }
    ]
}
References
Credits

Affected packages

npm / tinkoff-codeceptjs-storyshots

Package

Name
tinkoff-codeceptjs-storyshots
View open source insights on deps.dev
Purl
pkg:npm/tinkoff-codeceptjs-storyshots

Affected ranges

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

Affected versions

20.*
20.7.8

Database specific

cwes
[
    {
        "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."
    }
]
indicators
{
    "package_integrity": [
        {
            "hashes": {
                "sha512_sri": "sha512-vZEkHoZn2NK36Wboom2oxy+eToJcYC9d3il/BXqBC4lyRQalQzeZ6/dn3A3Pdj6VtiRM7szUFji4FV9lOJ2nUA==",
                "sha1": "7a8eafbd7a2645191ccbac87a55dbd95952f795f"
            },
            "filename": "tinkoff-codeceptjs-storyshots-20.7.8.tgz"
        }
    ],
    "evidence_files": [
        {
            "path": "_helpers.js",
            "sha256": "136f71cc925e4cb2482b3acf9585ae92c59759b254c05950f8120b7adfb57dba",
            "tlsh": "f0a1b7aa06aa30198b70dbe487174415f65ae2633780c194f7ac99885f73234c3b2efc"
        },
        {
            "path": "lib/telemetry.js",
            "sha256": "5780cb840c96765b1f9641fe53746286bf06ae28429d31a05be0f6f85706f945",
            "tlsh": "ab835056566a502186b2b368df234107ff3685272643429dbafc82dc1fbd72092a5ffc"
        }
    ]
}
source
"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/tinkoff-codeceptjs-storyshots/MAL-2026-12236.json"