MAL-2026-16324

See a problem?
Import Source
https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/better-envforge/MAL-2026-16324.json
JSON Data
https://api.osv.dev/v1/vulns/MAL-2026-16324
Aliases
  • GHSA-3h54-43fv-m822
Published
2026-09-21T03:29:39Z
Modified
2026-09-22T18:45:07Z
Summary
Malicious code in better-envforge (npm)
Details

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

Source: amazon-inspector (1f30026347d1db5e0ade5afe4b81a8569eb6ec0c41d1e1fa79f66dc386a6ea51)

better-envforge@1.0.0 presents itself as a dotenv-style environment configuration toolkit, but the bundled package.json inside dist/cli.cjs identifies the code as node-env-buffer@2.2.6 — a name/purpose mismatch used as a cover story. On require() of the package (main dist/index.cjs) and when the bin dot2env CLI is invoked (dist/cli.cjs), a top-level function (dispatchAnalytics) reads dist/stest.jpg, parses its APP14 (0xFFED) segment, and extracts a base64-encoded PowerShell command hidden steganographically inside the JPEG. It then writes a self-deleting VBS relay to os.tmpdir() and launches it via wscript.exe, which in turn runs powershell.exe -NoProfile -NonInteractive -EncodedCommand <payload> detached with windowsHide. Command tokens (powershell.exe, -NoProfile, -NonInteractive, -EncodedCommand, wscript.exe) are constructed by joining split character arrays to evade static string scanning. Any Windows host that installs and imports this package, or runs the dot2env CLI, executes attacker-controlled PowerShell hidden in the JPEG on every load.

Source: ghsa-malware (279cce6e68d9ff528326c4af920295d6667bd348cb7e6b4cd1266dface7072ca)

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":  [
        {
            "id":  "IN-MAL-2026-020223",
            "import_time":  "2026-09-21T03:46:37.369703103Z",
            "modified_time":  "2026-09-21T03:29:39Z",
            "sha256":  "1f30026347d1db5e0ade5afe4b81a8569eb6ec0c41d1e1fa79f66dc386a6ea51",
            "source":  "amazon-inspector",
            "versions":  [
                "1.0.0"
            ]
        },
        {
            "id":  "GHSA-3h54-43fv-m822",
            "import_time":  "2026-09-22T18:31:21.157240296Z",
            "modified_time":  "2026-09-22T18:22:20Z",
            "ranges":  [
                {
                    "events":  [
                        {
                            "introduced":  "0"
                        }
                    ],
                    "type":  "SEMVER"
                }
            ],
            "sha256":  "279cce6e68d9ff528326c4af920295d6667bd348cb7e6b4cd1266dface7072ca",
            "source":  "ghsa-malware"
        }
    ]
}
References
Credits

Affected packages

npm / better-envforge

Package

Name
better-envforge
View open source insights on deps.dev
Purl
pkg:npm/better-envforge

Affected ranges

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

Affected versions

1.*
1.0.0

Database specific

cwes
[
    {
        "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.",
        "name":  "Embedded Malicious Code"
    }
]
indicators
{
    "evidence_files":  [
        {
            "path":  "dist/index.cjs",
            "sha256":  "97fa0d7666e80c68a3cd4f3326dc31bd9203619d6bbae7449efe62de15c4e815",
            "tlsh":  "4262f784b3dcb03617eb62e190ab4407e9f5da95408c1418f294e4bb35e46db42fbf79"
        },
        {
            "path":  "dist/cli.cjs",
            "sha256":  "8556eeca50285aea12dfdcbc4ebcee110d916ef81ddde2e338dcf78bda2028cf",
            "tlsh":  "d792d74473cdb47a17e621d070ab500beaf2cb60459c1504f2dcb07627f4a9a96ebfb9"
        },
        {
            "path":  "dist/decode.js",
            "sha256":  "f1af48cff9984a5d522d86b82f81dae9deb7d9cf42f12c68253a43acea100d22",
            "tlsh":  "03516242adb2a10a076397b787c740282375fd03b404d894b85cc7415faa79e467befd"
        }
    ],
    "package_integrity":  [
        {
            "filename":  "better-envforge-1.0.0.tgz",
            "hashes":  {
                "sha1":  "22e3ccf88ea5d47aaf0c2517193d8ed2a45ed489",
                "sha512_sri":  "sha512-HrebdgYNOctfWIDvBIddENOxHtWLHwpG6T/9wPzMTT3DWpRuu+BdtEM+C0g8AgxW9kwYy9uLQ4KknRGnsALvDg=="
            }
        }
    ]
}
source
"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/better-envforge/MAL-2026-16324.json"