supply-chaindeveloper-securityci-cdsoc

A poisoned eslint-config-prettier package turns developer convenience into supply-chain exposure

CISA listed this issue as known exploited. The useful SOC question is where the affected system sits, what it can reach, and whether logs can prove if it was touched.

S6 Security Labs3 min read
A poisoned eslint-config-prettier package turns developer convenience into supply-chain exposure

A poisoned eslint-config-prettier package turns developer convenience into supply-chain exposure

CVE-2025-54313 is now in CISA's Known Exploited Vulnerabilities catalogue as of 2026-01-22. The advisory deserves operational attention, not a sleepy calendar reminder.

The affected product is Prettier eslint-config-prettier. CISA describes the issue as Prettier eslint-config-prettier Embedded Malicious Code Vulnerability. In plainer terms: Prettier eslint-config-prettier contains an embedded malicious code vulnerability. Installing an affected package executes an install.js file that launches the node-gyp.dll malware on Windows.

The affected path is close to developers and build systems, so the blast radius can include secrets and release integrity, not only one workstation.

Why it matters

The awkward part is the execution path. Developer and security tools run in CI workers, on laptops, and inside trusted build networks. If the package or scanner is poisoned, the attacker starts where many controls are weakest.

This is where vulnerability management often falls over. Teams record the CVE, ask for a patch date, and move on. That works for low-value software. It does not work for systems that manage identity, remote access, endpoints, build pipelines, network policy, backups, observability, or customer-facing applications.

The better question is what an attacker gets after exploiting it. Shell access is bad. Access to a management console, token store, CI runner, or edge controller is worse because it can turn one bug into a path through the estate.

First checks

Pin versions, check lockfiles, review CI secret exposure, and look for install scripts, new binaries, unexpected outbound traffic, or changes to build runners after the affected version appeared.

Ask four questions before closing the ticket:

  • Is it deployed anywhere, including old lab, DR, MSP, and vendor-managed environments?
  • Is any instance reachable from the internet or a broad internal network?
  • Which accounts, tokens, certificates, or integrations does it hold?
  • Can the logs show exploitation attempts, successful use, and post-exploitation changes?

If one of those answers is missing, record that as a gap. Do not bury it in the patch ticket. Future incident responders will not appreciate the archaeological dig.

Hunt notes

Start with the boring evidence:

  • new or rare administrator logins
  • access from unusual ASNs, VPN pools, jump hosts, or user subnets
  • new users, API keys, service accounts, scheduled tasks, webhooks, connectors, or tunnels
  • configuration exports, backup downloads, disabled logging, or policy edits
  • unexpected child processes, shell commands, archive creation, or outbound callbacks
  • user agents and API calls that do not match normal admin tooling

For internet-facing systems, keep the hunt window wider than the patch window. Public exploit activity often starts before the internal meeting invite appears. A shocking development, I know.

S6 view

This belongs in the same 2026 pattern as the other KEV additions: attackers keep aiming at control points. Firewalls, SD-WAN managers, endpoint consoles, remote access platforms, developer tools, and AI gateways all share the same problem. Other systems trust them.

This is the work that makes security feel boring. Good. Boring is usually what attackers hate most.

Sources