Researchers from Checkmarx have published an in-depth analysis of the ChainVeil campaign, which abused npm packages to deliver multi-stage JavaScript loaders. A previously unknown sample of the same family recently surfaced in a GitHub repository that an AI coding assistant recommended to a developer.
The malicious code was discovered inside the file navigation.js of the inbox-ai project. Initial inspection revealed an obfuscated one-liner appended after a large block of whitespace. The loader begins by declaring the global identifier A9-0554-3, differing from the A6-* markers documented by Checkmarx for the npm samples.
The sample employs the same three-blockchain delivery chain described in the Checkmarx report: it first queries the latest outgoing TRON transaction, falls back to Aptos if necessary, and then uses the decoded value as the transaction hash on BSC to retrieve the next-stage payload. Extracted strings and C2 addresses matched the infrastructure previously attributed to the campaign.
Git history shows the clean version of navigation.js was added in November 2025. The malicious block appeared during a merge commit on 29 March 2026. The same technique was later used to infect calendar-rail.js. The code remained in the repository for more than five months.
Blockchain analysis revealed that the campaign's payload-update cadence averaged two to three days, with occasional bursts of rapid updates. A BSC transaction from February 2025 already contained data consistent with the observed loader chain, pushing the suspected start of activity earlier than previously reported.
The final stage delivered by the loader is a remote-access trojan whose capabilities match those detailed by Checkmarx. Researchers note that the repository compromise predates the first publicly documented npm packages by nearly two months, suggesting that ChainVeil operators have used multiple distribution vectors beyond the npm ecosystem.


