@eforms/forms-api@2.99.0
Malicious code in @eforms/forms-api (npm)
Analysis
@eforms/forms-api@2.99.0 is a dependency-confusion package: a near-empty tarball (4 files, ~4KB, index.js is `module.exports = {}`) published at a sentinel version 2.99.0 for the scoped name @eforms/forms-api, whose preinstall hook (`node preinstall.js`) beacons the installing host's identity to attacker-controlled callback domains. The hook collects os.hostname(), os.userInfo().username, process.cwd(), platform/arch, Node version, a CI-presence flag and uid, then sends them two ways: a DNS lookup of a runtime-built label `depconf-<hostname>-<random>.<callback-domain>` (DNS-tunnel style, survives egress filtering that blocks HTTP) and an HTTPS GET to `hxxps://depconf-<hostname>-<random>.<callback-domain>/?pkg=@eforms/forms-api&ver=2.99.0&host=...&who=...&pwd=...`. Callback domains: rpkfvtsptfrhcgbe62qg11ywjnpij6ma1cfpke[.]oastify[.]com and f6mk7lyjsuk3u1t49ypp9q2jbah15rtg[.]oastify[.]com. The hook reads no files, downloads nothing, spawns nothing, and calls process.exit(0) so the install appears to succeed. The package describes itself as an authorized bug-bounty canary for the @eforms scope; the observed behaviour is host-identity collection and beaconing at install time.
- analyzed by
- Leitwacht
- first seen
- Oct 25, 2026, 11:20 PM
- analyzed
- Oct 25, 2026, 11:26 PM
Related advisories
- @eforms/forms-api@1.99.0 same package
- @eforms/forms-api@99.0.0 same package
- @capsense/core-ui@99.99.100
- @capsense/ccx-welcome-page@99.99.100
- @coopeuch/components@1.999.999
- @galicia-toolkit-nestjs/paas@999.0.3
- @galicia-toolkit-nestjs/archetype@999.0.1
- @galicia-toolkit-nestjs/commons@999.0.1
Independently detected by the Leitwacht supply-chain probe. IOCs are defanged. Published CC0. Think this is a mistake? See the dispute policy.