---
id: "MAL-2026-19144"
page: "https://infrastack.ai/live/MAL-2026-19144"
kind: "package"
aliases: ["MAL-2026-19144"]
title: "Malicious code in strutil-helpers-core (npm)"
severity: "critical"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: [{"name": "strutil-helpers-core", "fixed": [], "affected": "= 1.0.1; = 1.0.2; = 1.0.4; = 1.0.5; = 1.0.3", "ecosystem": "npm"}]
ecosystems: ["npm"]
tags: ["malicious", "package"]
not_affected_if: []
published_at: "2026-11-11T20:54:40+00:00"
first_seen_at: "2026-11-11T21:29:24+00:00"
updated_at: "2026-11-11T21:31:13+00:00"
sources: [{"source": "osv-malicious", "url": "https://osv.dev/vulnerability/MAL-2026-19144", "first_seen_at": "2026-11-11T21:29:24+00:00"}]
exploit_sources: []
---

# Malicious code in strutil-helpers-core (npm)

Link for people: https://infrastack.ai/live/MAL-2026-19144 (this .md is for agents)

## Affected

- npm:strutil-helpers-core affected = 1.0.1; = 1.0.2; = 1.0.4; = 1.0.5; = 1.0.3 fixed no fixed version listed

## Timeline

- 2026-11-11T21:29:24+00:00 osv-malicious https://osv.dev/vulnerability/MAL-2026-19144

## From the sources

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

## Source: amazon-inspector (db7da8999828536292e11d09747504d964bf7525862de7d207d03c8809c438a0)
The package advertises itself as lightweight string utility helpers (trim/capitalize/truncate), but ships a 17KB Linux ELF.node addon, a 434KB Windows PE.node addon, and a 3.7MB opaque.napi_cache data blob none of which are needed for the stated purpose. index.js unconditionally loads the platform-appropriate native addon on every require() and swallows errors silently before the trivial string helpers are even defined. The native addon references the adjacent.napi_cache blob and contains code paths for file I/O, fork/setsid/execlp on Linux and CreateProcessA with a 'node "%s"' command template on Windows, staging decoded JavaScript at /tmp/.<pid> (format string /tmp/.%u, %s.nc%lu.js) and executing it under node. Before firing, the addon enumerates CI and sandbox indicators (GITHUB_ACTIONS, GITLAB_CI, TRAVIS, CIRCLECI, JENKINS_URL, BUILDKITE, CODEBUILD_BUILD_ID, APPVEYOR, SEMAPHORE, TEAMCITY_VERSION, BITBUCKET_BUILD_NUMBER, NETLIFY, VERCEL, CF_BUILD_ID, SCREWDRIVER, SANDBOX), reads /proc/1/cgroup, /proc/1/cmdline, /proc/self/status (TracerPid) and /proc/self/maps for docker/containerd/kubepod/podman markers, and on Windows checks IsDebuggerPresent, CheckRemoteDebuggerPresent and scans running processes for analysis tools (wireshark, httpdebug, Process32First). The combination of a trivial cover-story API, undeclared native binaries loaded silently on import, an opaque sibling blob decrypted to a hidden /tmp staging path and executed under node, and sandbox/CI/debugger evasion gating is a load-time dropper that runs attacker-controlled code on the installer's host as soon as the package is required.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
