MAL-2026-12989

See a problem?
Import Source
https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/bnpl-blocks-mobile-bnpl-floating-button/MAL-2026-12989.json
JSON Data
https://api.osv.dev/v1/vulns/MAL-2026-12989
Published
2026-08-05T14:40:31Z
Modified
2026-08-05T15:51:31Z
Summary
Malicious code in bnpl-blocks-mobile-bnpl-floating-button (npm)
Details

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

Source: amazon-inspector (be8101254611004c84932cd102d4fb71dc7e692d67696df081e66bd37ba3088b)

On require(), index.js loads support.js whose top-level main() downloads a platform-specific binary from author-controlled hosts assembled via string-array concatenation (oob-worker.cf99-9b3.workers.dev, oob-worker.cf100-416.workers.dev, oob-worker.cf103-070.workers.dev, sdk.dl.wel1.ru, ext.dl.wel1.ru, pkg.dl.wel1.ru, net.dl.wel1.ru) with a DNS-TXT base64 fallback. The fetched bytes are written to /tmp or %TEMP% under stealth names such as dotnet_diag.exe and.cache_, chmod'd 0755 on POSIX (with the API name assembled as 'chmod'+'Sync'), and executed detached via /bin/sh -c ' &' or cmd /c start /b. A second dropper is shipped in lib/telemetry.js (81KB, framed as an 'Analytics SDK') implementing the same base64-decode + chmod-via-string-concat + detached spawn pattern as an alternate loader. child_process is resolved via require('child_' + 'process') and destination hostnames are split across arrays to evade static analysis. No version pin, no hash or signature verification, and a /tmp stamp file is used for rate-limiting. The package name and metadata claim a mobile BNPL floating-button UI component, which conflicts with the shipped behavior.

Database specific
{
    "malicious-packages-origins": [
        {
            "id": "IN-MAL-2026-015395",
            "import_time": "2026-08-05T15:19:49.065756828Z",
            "modified_time": "2026-08-05T14:40:31Z",
            "sha256": "be8101254611004c84932cd102d4fb71dc7e692d67696df081e66bd37ba3088b",
            "source": "amazon-inspector",
            "versions": [
                "35.3.6"
            ]
        }
    ]
}
References
Credits

Affected packages

npm / bnpl-blocks-mobile-bnpl-floating-button

Package

Name
bnpl-blocks-mobile-bnpl-floating-button
View open source insights on deps.dev
Purl
pkg:npm/bnpl-blocks-mobile-bnpl-floating-button

Affected ranges

Affected versions

35.*
35.3.6

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": "_support.js",
            "sha256": "89712814bfe0557b8014eb01eaa871d323f67c41186a5fa881c7da28b494b6a4",
            "tlsh": "e0a1a76a05a670084bb0d7e5c707541af65bf6637280c298fb9ca5d81fb2124c3b2efc"
        },
        {
            "path": "lib/telemetry.js",
            "sha256": "405b8d861c431153894b444e9910794cebda43477e0df2b0562c0bfe3abddc16",
            "tlsh": "7a835056566a142186b2b378df234107ff3685272642429dbafc82dc1fbd72092a5ffc"
        }
    ],
    "package_integrity": [
        {
            "filename": "bnpl-blocks-mobile-bnpl-floating-button-35.3.6.tgz",
            "hashes": {
                "sha1": "320d2b4d0946c35c52108f3e8fc9fabb9f95fe6c",
                "sha512_sri": "sha512-AzaOkAOl7ddcTaHbzjuqmHXL+OTNEcQclrC6sTtHpl9kuEo2lPLhGXijvIkFIlGW/zBSLB9ejEfZ7BLsHvnQBQ=="
            }
        }
    ]
}
source
"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/bnpl-blocks-mobile-bnpl-floating-button/MAL-2026-12989.json"