Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
Malicious package

class-synthnpm

class-synth is a confirmed malicious npm package (MAL-2026-5730) that opens a backdoor for remote access (malicious versions 1.0.0, 1.0.1, 1.0.2…). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in class-synth (npm)

MAL-2026-5730
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall class-synth

What this malware does

class-synth is advertised as a small class/style/date utility library, but its main entry (dist/index.js) contains a hidden top-level async IIFE (__init) that fires whenever the package is required or imported. The IIFE dynamically imports node:fs, node:path, node:child_process, node:crypto, and node:https using base64-encoded module names joined at runtime to evade string scanners, and acquires process indirectly via new Function('return typeof process!== "undefined"? process: null;'). It then recursively walks process.cwd() looking for any .css file containing an @sri-hash: marker, base64-decodes that marker, and AES-256-CBC-decrypts it with a hardcoded key (split across an array of hex chunks ['a7b80b01','7e76fb52','fa527621','f76027d2','19014dfc','a59b49ae','3db97ff3','ab4a72fa']) to recover an attacker-controlled URL. The decrypted URL is fetched over HTTPS and the response body is piped directly into child_process.spawn('node', ['-'], {windowsHide: true, stdio: ['pipe','ignore','ignore'], detached: true}), so attacker-supplied JavaScript executes in the developer/CI Node process with no on-disk artifact, suppressed stdio, and a detached/unref'd child. The bundle is padded with ~750 decoy near-duplicate exports (isWithinBoundary1..200, applyPreset1..150, createSequenceStep1..250, mapOperation1..250, checkConstraint1..250) to bury the dropper near the end of the file. The C2 URL is delivered out-of-band via a planted.css file, which defeats URL-based scanning of the package itself. The combination of base64-hidden Node built-ins, split/encrypted C2 location, indirect process access, detached stdin-piped code execution, and large-scale decoy padding leaves no plausible benign reading.

Any computer that has this package installed or running should be considered fully compromised. All secrets and keys stored on that computer should be rotated immediately from a different computer. The package should be removed, but as full control of the computer may have been given to an outside entity, there is no guarantee that removing the package will remove all malicious software resulting from installing it.

Malicious versions

10 flagged
1.0.01.0.11.0.21.0.31.0.41.0.51.0.61.0.71.0.81.0.9

Indicators of compromise (SHA-256)

1aa63407d7400b4819d0739dedad0a32d9ae29b18509693c2e8763cf30275271
cddea7ee0ae2ce582b944e02750fe4ef3628ffb98035f2c09f55add30b22c127
d3739061aa7c97593fe816a49960580ab7029e83063d6d64039c1e5a8e8184af
3fe05a486e4cce2e9eb36558714ff75d3a7ff7db300c46095087db274451ed7d
5208740230d7c6e9e8e5f32d1ebab45afc0154359e84d4942ecdb6e46f0f9288
6ea0e042a314a56ca71b97cf1c7a89d077248da659a89d33f4bc8799eda73b06
64df17fa107b8703f469a612dfdc6c03dbdea562847569034c97ae29ed4f636e
92df67dd5d501d62afce26625625d6b62f34cf568f40ae0d8f0c3bd070cfe7e5
211ba697cc519cd1336ef57b17fddf0406cb1f574f96f9bde936b0a49c789aa7
d5cff2f39d67bd1b289dd662764985194331c02ac680a57a69df36343fd6cc1a
db93faf02c8e1d82ad4e6016c8bdff19e3d6373e2dea7b121f0475783fccbbf8
efebe9567f48ade64190acee35e050f62a1c604c4077861d248ed214bf723d02
4aba4e1c5927ad7b034a6fefab706397fd40df248bffb3fe43c2f4f3421bd89b
60238ce3fd8e5b43c795ab1c8305423e42c8e382d1a20bd470b34525034362de
9fabcad393dcfe529708719bf7be0104fe2060900d55055eac9d2e676c1f6a40
abb17afb17a74e6749e7e40905ad4963813c98bd5d4badf0a5f42ab44367f7a4
a96165b209ffb2f4e6ad68ae6bcf380d9c70900d080adafcce9110d4ff5c9b71
2178b003efc508a3407750c19f74ebc92181c24ad04f1d8194110e910cfe69fb
ebc2b3a72cb1d4f615e957401c61e3035796bac239ee59d6bec1d86827573b0c

Detection & response playbook

Backdoor / remote access
  1. Find it

    Scan your lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock, etc.) and build artifacts for class-synth (10 malicious versions). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging class-synth across your stack and pipelines.

  2. If you installed it — respond

    class-synth establishes remote access, so treat any host that installed it as fully compromised. Isolate the machine, remove the package, rotate all credentials it could reach, and rebuild from a trusted image rather than cleaning in place — a backdoor may have planted additional persistence.

  3. Did it already run?

    If class-synth was ever installed, its post-install/runtime payload may have already executed. O3's L7 egress monitoring and runtime eBPF sensors detect the credential exfiltration or command-and-control callback after install and block the malicious outbound channel, so you catch and contain the actual compromise — not just the presence of the package.

  4. How O3 protects you

    O3 blocks class-synth before install through its supply-chain scanner, and if it has already run, detects and severs the exfiltration or C2 callback at runtime through L7 egress monitoring and eBPF.

Frequently asked questions

No. class-synth on npm has been identified as a malicious package (versions 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6, 1.0.7, and 2 more flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-006325IN-MAL-2026-006335IN-MAL-2026-006324IN-MAL-2026-006333IN-MAL-2026-006337IN-MAL-2026-006338IN-MAL-2026-006328IN-MAL-2026-006336IN-MAL-2026-006332IN-MAL-2026-006334IN-MAL-2026-006323IN-MAL-2026-006329IN-MAL-2026-006330IN-MAL-2026-006327IN-MAL-2026-006331IN-MAL-2026-006326GHSA-c6cg-h94m-mv67IN-MAL-2026-010582IN-MAL-2026-010585

References

Credits

  • Amazon Inspector · finder

Detect & block this

O3 blocks class-synth-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the C2 callback and severs the channel.

Explore

class-synth (npm) malicious package — MAL-2026-5730 | O3 Security