MAL-2026-5634 Malicious code in react-photo-views (npm)
- Package
- react-photo-views
- Registry
- npm
What is MAL-2026-5634?
MAL-2026-5634 is a malicious package in react-photo-views, published on 11 Jun 2026.
Official description
Package name 'react-photo-views' (plural) impersonates the popular 'react-photo-view' (singular) component — README badges, downloads URLs, and documentation links in this package all point to the legitimate singular-name package and its docs at react-photo-view.vercel.app. The dist builds (dist/react-photo-view.js and the esm/modern variants) append a top-level IIFE that descrambles two large opaque string literals using a deterministic Fisher-Yates-style PRNG seeded with 2540575, looks up an 11-character property on the descrambler function (length of 'constructor', i.e. the Function constructor), and invokes the resulting function on further descrambled data with argument 7942. Before the call, require and module are stashed on the global object (global.r=require, global._V="A6-253-331"), which hands the runtime-constructed code full module-loader access. Any consumer who require()s or imports this package immediately executes attacker-supplied code that was never visible to static review. The same payload is duplicated across cjs, esm and modern builds and is appended after legitimate photo-viewer code, consistent with a dropper injected into a copy of the real package's source.
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.
What should I do about MAL-2026-5634?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.
Sources
Also known as GHSA-f2m2-w8gp-rjgq.