Skip to content

Commit 8bce681

Browse files
docs(blog): add axios supply chain attack response post
DevRail is not affected: container ships dev tools (ESLint, Prettier, etc.), not application libraries like axios. Post covers assessment, user project guidance, and lessons learned. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 0dcfddf commit 8bce681

1 file changed

Lines changed: 73 additions & 0 deletions

File tree

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
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

Comments
 (0)