NIST deprecates RSA-2048 from 2030. Find every one of them before attackers do.
Malicious package

ryan-pdf-jsnpm

Advisory published Updated

ryan-pdf-js is a confirmed malicious npm package (MAL-2026-6546) that typosquats a legitimate package to trick installs (malicious version 99.9.1). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in ryan-pdf-js (npm)

MAL-2026-6546
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall ryan-pdf-js

What this malware does

[email protected] is an empty stub package (index.js exports {}) whose sole purpose is to deliver an off-registry payload at install time. Its package.json declares its only dependency, ltidisafe, as a direct HTTPS tarball URL on a generic Google Cloud Storage bucket (https://ltidi.storage.googleapis.com/depenconf/ltidisafe-3.1.1.tgz) rather than a registry name, bypassing npm registry scanning. On npm install, npm fetches and unpacks that tarball, and any lifecycle scripts it contains execute on the installer's machine. The bucket path depenconf/ is consistent with dependency-confusion staging, and the package name evokes the widely-used pdf.js ecosystem while shipping no real implementation — a typosquat-shaped lure whose only effect is to route installs through the off-registry dropper.

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

1 flagged
99.9.1

Indicators of compromise (SHA-256)

c3d966501b5f533318c26b54887cd29b3cd6c9495035a0f74519ba349357e3eb
3b26acfcfb972e07369dd35f509acb9463d9fced9d49fc6872abad284bb0a75d

Detection & response playbook

Typosquat
  1. Find it

    Search your lockfiles and build artifacts for ryan-pdf-js (version 99.9.1).

  2. If you installed it — respond

    ryan-pdf-js is a typosquat — you almost certainly intended a legitimately-named package. Remove ryan-pdf-js, install the correct package, and rotate any secrets exposed during the install since post-install scripts may have already run.

  3. Did it already run?

    If ryan-pdf-js was installed, its post-install payload may already have run. Removing the package does not undo that — check outbound connections and credential use from the install window onward.

Frequently asked questions

No. ryan-pdf-js on npm has been identified as a malicious package (version 99.9.1 flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-007677GHSA-7qr7-hcw4-9826

References

Credits

  • Amazon Inspector · finder

Detect & block this

O3 blocks ryan-pdf-js-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the malicious outbound activity and severs the channel.

Explore

ryan-pdf-js (npm) malicious package — MAL-2026-6546 | O3 Security