LWA-2026-6082 MAL-2026-6526 ↗ confirmed malware

@immobiliarelabs/backstage-plugin-gitlab@2.1.2

Malicious code in @immobiliarelabs/backstage-plugin-gitlab (npm)

T1140 · Deobfuscate/Decode Files or InformationT1027 · Obfuscated Files or Information

Analysis

A compromised release of this Backstage GitLab plugin ships two files that are not part of the genuine package: a root-level binding.gyp and an index.js dropper. The genuine package is a pure React/TypeScript frontend plugin and publishes only its dist/ output. The injected binding.gyp uses GYP command-expansion syntax ("<!(node index.js ...)") in its sources field; because npm automatically runs node-gyp whenever a binding.gyp exists at the package root, this causes `node index.js` to execute on every install of the package — with no install or postinstall script declared, and regardless of the package main entry. index.js is a layered, obfuscated dropper: an outer eval() runs a Caesar-cipher-decoded wrapper that imports node:crypto, AES-128-GCM-decrypts an embedded encrypted blob, and eval()s the decrypted second-stage code. The use of a native-build manifest to trigger silent install-time execution in a frontend-only plugin, combined with multi-layer (Caesar + AES-GCM) self-decrypting eval, is characteristic of a supply-chain attack rather than legitimate functionality.

analyzed by
Leitwacht
first seen
Jun 26, 2026, 03:18 PM
analyzed
Jun 28, 2026, 06:25 AM
weekly installs
9,457

Related advisories

browse all confirmed advisories →

Independently detected by the Leitwacht supply-chain probe. IOCs are defanged. Published CC0. Think this is a mistake? See the dispute policy.