CVE-2025-9287 is a Critical (CVSS 9.1) improper input validation flaw in the npm package cipher-base, through version 1.0.4. The maintainers' advisory says a release later than 1.0.4 is patched; the advisory does not name the exact number. Upgrade, then check your lockfile for older copies pulled in by other packages, since this library usually arrives as a dependency.
What's affected
The record says the issue affects cipher-base through 1.0.4. The GitHub advisory for the project states the affected range as 1.0.4 and earlier, and describes the fix this way: a release later than 1.0.4 is patched; the advisory does not name the exact number.
Scores deserve a note. The record gives CVSS 3.1 score 9.1 with the vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H. The GitHub advisory rates it Critical with a CVSS 4.0 base score of 9.1 and a different vector. The numbers agree, the scoring versions do not, so quote the version alongside the number when you report it.
The advisory says related polyfill packages that depend on this code are affected too, naming create-hash and crypto-browserify. Anything that bundles Node crypto polyfills for the browser is a candidate, which includes many front end builds that you may not think of as using hashing libraries at all.
How to check if you're exposed
- In a project, run
npm ls cipher-baseto print every installed copy and the packages that pull it in. Add--allif your npm version hides deeper levels. - Run
npm explain cipher-baseto see the dependency path for each copy. - For Yarn or pnpm, use
yarn why cipher-baseorpnpm why cipher-base. - Search lockfiles directly across repositories with
grep -rn "cipher-base" --include=package-lock.json --include=yarn.lock --include=pnpm-lock.yaml . - Check build output and bundled assets too.
npm lsonly reads installed node_modules, so a deployed bundle can still contain an old copy.
The free in-browser dependency scan reads your manifest and lockfile in the browser and flags affected versions, and the Gold directory shows other known issues in the same package.
What to do now
- Upgrade cipher-base to the fixed release named in the advisory, and confirm the version your lockfile resolves after install. A release later than 1.0.4 is patched; the advisory does not name the exact number.
- If a parent package pins an old copy, update the parent first, or use your package manager's override mechanism (npm overrides, Yarn resolutions) to force the patched version while you wait for the parent to move.
- Rebuild and redeploy front end bundles. A fixed lockfile does not change an already built bundle.
- Look for code of your own that passes unusual values to hash functions, such as objects instead of strings or buffers. Validating types at your boundary is cheap and removes a class of surprises.
- Where hashes protect something important, such as signatures, integrity checks or key derivation, review whether any value could have been miscomputed while you ran the old version.
Why it matters
The weakness class is CWE-20 (improper input validation). The advisory describes missing input type checks: values that are not a well formed Buffer or string can pass through, which can produce wrong hash values, hang execution or rewind hash state, among other undefined behavior. A hash function that returns the wrong answer for crafted input undermines anything that trusts it, and the advisory links this to downstream effects such as matching hashes for different values.
It is not in CISA's Known Exploited Vulnerabilities catalog according to the record, and the advisory does not report attacks. The reason to move quickly is reach. Small utility packages sit under thousands of builds, and the exposure shows up in transitive dependencies that nobody chose directly.
Try it yourself
Click through it at your own pace, or open it full screen.
Quick check
What version of cipher-base fixes CVE-2025-9287?
A release later than 1.0.4 is patched; the advisory does not name the exact number. Confirm the exact release on the package page and in the advisory before you pin it.
Why do the record and the advisory show different scoring?
The record uses CVSS 3.1 with a 9.1 score. The advisory uses CVSS 4.0, also 9.1. They are separate scoring systems that happen to land on the same number.
Sources
Last reviewed: 18 October 2026.