@immobiliarelabs/backstage-plugin-gitlab-backend@3.0.3
Malicious code in @immobiliarelabs/backstage-plugin-gitlab-backend (npm)
Analysis
This version of the package ships two files that are not part of the legitimate plugin and are not declared in the package manifest: a root index.js and a binding.gyp. The binding.gyp abuses node-gyp command substitution (sources:["<!(node index.js > /dev/null 2>&1 && echo stub.c)"]) to silently execute index.js during package installation/build, suppressing all output. index.js is a single eval() over a Caesar-shifted character-code array; once de-obfuscated it is an AES-128-GCM decryptor (createDecipheriv with authTagLength 16) that decrypts a large embedded hex-encoded ciphertext blob and runs the resulting second-stage code. The legitimate plugin code is left intact in dist/ to avoid suspicion, while the injected files run attacker-controlled, encrypted payload at install time. This is a malicious supply-chain injection / install-time dropper.
- analyzed by
- Leitwacht
- first seen
- Jun 26, 2026, 03:20 PM
- analyzed
- Jun 28, 2026, 06:24 AM
- weekly installs
- 10,854
Related advisories
- @immobiliarelabs/backstage-plugin-gitlab-backend@4.0.2 same package
- @immobiliarelabs/backstage-plugin-ldap-auth-backend@1.1.3
- @immobiliarelabs/backstage-plugin-gitlab@2.1.2
- @immobiliarelabs/backstage-plugin-gitlab@1.0.1
- theme-color-picker@2.0.28
- shadxino@1.0.7
- textify-kit@1.0.0
- solana-token-api@1.0.0
Independently detected by the Leitwacht supply-chain probe. IOCs are defanged. Published CC0. Think this is a mistake? See the dispute policy.