|
| 1 | +--- |
| 2 | +title: "Axios Supply Chain Attack: DevRail Is Not Affected" |
| 3 | +date: 2026-04-01 |
| 4 | +description: "The axios npm package was compromised on March 31. DevRail containers do not ship axios and are not affected. Here is our full assessment." |
| 5 | +--- |
| 6 | + |
| 7 | +On March 31, 2026, attackers compromised a maintainer account for the [axios](https://www.npmjs.com/package/axios) npm package and published malicious versions containing a cross-platform remote access trojan. This post covers our assessment and why DevRail users are not affected. |
| 8 | + |
| 9 | +## What Happened |
| 10 | + |
| 11 | +The attacker published two compromised versions of axios -- `1.14.1` and `0.30.4` -- via the official npm registry. The malicious versions injected a hidden dependency (`plain-crypto-js@4.2.1`) whose postinstall script deployed a platform-specific RAT targeting macOS, Windows, and Linux. The malware performed system fingerprinting, beaconed to a command-and-control server every 60 seconds, and accepted arbitrary commands. |
| 12 | + |
| 13 | +The compromised versions were live for approximately three hours before npm removed them. |
| 14 | + |
| 15 | +Full details are available in [Snyk's advisory](https://snyk.io/blog/axios-npm-package-compromised-supply-chain-attack-delivers-cross-platform/). |
| 16 | + |
| 17 | +## Impact on DevRail |
| 18 | + |
| 19 | +**DevRail is not affected. No action is required for DevRail-managed projects.** |
| 20 | + |
| 21 | +The dev-toolchain container installs JavaScript tooling via `npm install -g`: ESLint, Prettier, TypeScript, and Vitest. None of these packages depend on axios. Axios is an HTTP client library used in application code, not a development tool dependency. |
| 22 | + |
| 23 | +We verified this by inspecting the published container image: |
| 24 | + |
| 25 | +```bash |
| 26 | +# Check for axios in global npm packages |
| 27 | +docker run --rm ghcr.io/devrail-dev/dev-toolchain:v1 \ |
| 28 | + npm list -g --all 2>/dev/null | grep -i axios |
| 29 | +# No results |
| 30 | + |
| 31 | +# Check for the malicious package |
| 32 | +docker run --rm ghcr.io/devrail-dev/dev-toolchain:v1 \ |
| 33 | + npm list -g --all 2>/dev/null | grep -i plain-crypto |
| 34 | +# No results |
| 35 | +``` |
| 36 | + |
| 37 | +Additionally, the current published container image (`v1`) was built on March 16, 2026 -- 15 days before the attack. Even if axios were a transitive dependency, the compromised versions did not exist at build time. |
| 38 | + |
| 39 | +| Check | Result | |
| 40 | +|---|---| |
| 41 | +| axios in container npm packages | Not present | |
| 42 | +| `plain-crypto-js` in container | Not present | |
| 43 | +| Container build date | March 16 (15 days before attack) | |
| 44 | +| CI runs during attack window | None | |
| 45 | + |
| 46 | +## What About User Projects? |
| 47 | + |
| 48 | +If your project uses axios as an application dependency, DevRail's security scanning will help: |
| 49 | + |
| 50 | +- **`npm audit`** runs as part of `make security` for JavaScript projects. Once the npm advisory propagates, it will flag the compromised versions in your `package-lock.json`. |
| 51 | + |
| 52 | +- **trivy** scans `node_modules/` for known vulnerabilities as part of `make scan`. It will detect compromised packages in your project's filesystem. |
| 53 | + |
| 54 | +To check your project immediately: |
| 55 | + |
| 56 | +```bash |
| 57 | +# Check if your project uses affected versions |
| 58 | +grep -A 2 '"axios"' package-lock.json | grep '"version"' |
| 59 | + |
| 60 | +# Run DevRail security checks |
| 61 | +make security |
| 62 | +make scan |
| 63 | +``` |
| 64 | + |
| 65 | +If you find axios `1.14.1` or `0.30.4` in your lockfile, update immediately and rotate any credentials that may have been exposed on affected machines. |
| 66 | + |
| 67 | +## Lessons |
| 68 | + |
| 69 | +**Dev tools and application dependencies have different risk profiles.** DevRail's container ships linters, formatters, and test runners -- not HTTP clients, ORMs, or other application libraries. This architectural separation means application-level supply chain attacks do not compromise the development toolchain. |
| 70 | + |
| 71 | +**Postinstall scripts remain a significant attack vector.** The axios attack used npm's postinstall mechanism to execute arbitrary code during `npm install`. Consider adding `--ignore-scripts` to CI install commands for application dependencies, and audit any packages that declare postinstall scripts. |
| 72 | + |
| 73 | +**Lock files are your audit trail.** The fastest way to determine exposure is to check `package-lock.json` for the affected version numbers. Projects without lock files cannot be audited reliably -- this is one reason DevRail requires lock files for `npm audit` to run. |
0 commit comments