---
id: "MAL-2026-18185"
kind: "package"
aliases: ["MAL-2026-18185"]
title: "Malicious code in log-rotate-testmetest (npm)"
severity: "critical"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: [{"name": "log-rotate-testmetest", "fixed": [], "affected": "= 1.0.1", "ecosystem": "npm"}]
ecosystems: ["npm"]
tags: ["malicious", "package"]
not_affected_if: []
published_at: "2026-10-22T06:11:42+00:00"
first_seen_at: "2026-10-26T20:51:49+00:00"
updated_at: "2026-10-26T21:05:48+00:00"
sources: [{"source": "osv-malicious", "url": "https://osv.dev/vulnerability/MAL-2026-18185", "first_seen_at": "2026-10-26T20:51:49+00:00"}]
---

# Malicious code in log-rotate-testmetest (npm)

## Affected

- npm:log-rotate-testmetest affected = 1.0.1 fixed ?

## Timeline

- 2026-10-26T20:51:49+00:00 osv-malicious https://osv.dev/vulnerability/MAL-2026-18185

## From the sources

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

## Source: amazon-inspector (8608133ab1a2f106c095f84116cd25fa141208dbf81ea6fe2331e38a88551a4b)
The package ships a binding.gyp whose `sources` field uses GYP command-expansion (`<!(env node index.js...)`) with no native source files, causing npm's implicit `node-gyp rebuild` to execute index.js at install time. index.js is a Caesar+10 (ROT) obfuscated eval blob that, once decoded, AES-128-GCM-decrypts a hardcoded hex ciphertext and the sibling `data.bin`, brotli-decompresses the result, writes it to a mkdtemp'd temporary file, and spawns it under Bun (`Bun.spawn([execPath,'run',tmp])` / `spawn(getBunPath(),['run',tmp])`). package.json declares `bun` as a runtime dependency, deliberately routing execution through an alternate runtime rather than Node. The executed payload is fully opaque and attacker-controlled. The combination of a no-source binding.gyp used solely as a lifecycle trigger, multi-layer obfuscation (ROT + AES-GCM + brotli), and alternate-runtime dispatch has no legitimate native-build justification.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
