NIST deprecates RSA-2048 from 2030. Find every one of them before attackers do.
📦 npm
Not in CISA KEV

CVE-2026-22866 — @ensdomains/ens-contracts

Fix: ensdomains/ens-contracts@c76c5ad

CVE-2026-22866 is a CWE-347 vulnerability in @ensdomains/ens-contracts. The records list no fixed version yet; check the vendor advisory below and apply the mitigations in the meantime.

ENS DNSSEC Oracle Vulnerable to RSA Signature Forgery via Missing PKCS#1 v1.5 Padding Validation

Also known asGHSA-c6rr-7pmc-73wc
Published
Updated
Affected
1 pkg
Patched
See advisory
Exploits
None indexed
Exploitation data as of Oct 24, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

EPSS Exploitation Probability

via FIRST.org ↗
0.2%probability of exploitation in next 30 days
Lower Risk+0.02%
Lower risk than most CVEs10th percentile — riskier than 10% of all scored CVEsHighest risk
0.00%0.23%0.47%0.70%0.0%0.2%Apr 26Aug 26Oct 26

Probability of exploitation in the next 30 days, from FIRST.org EPSS.

Real-World Exposure

1 pkg affected

How broadly this vulnerability is actually deployed: weekly install volume shows current usage, and reverse-dependency count shows how many other packages break if it stays unpatched.

81other npm packages depend on this — each one inherits the vulnerability until it's patched upstream
@ensdomains/ens-contractsnpm
1Kdownloads / week

Description

Impact

The RSASHA256Algorithm and RSASHA1Algorithm contracts fail to validate PKCS#1 v1.5 padding structure when verifying RSA signatures. The contracts only check if the last 32 (or 20) bytes of the decrypted signature match the expected hash. This enables Bleichenbacher's 2006 signature forgery attack against DNS zones using RSA keys with low public exponents (e=3). Two ENS-supported TLDs (.cc and .name) use e=3 for their Key Signing Keys, allowing any domain under these TLDs to be fraudulently claimed on ENS without DNS ownership.

Affected contracts

ContractAddressStatus
RSASHA256Algorithm0x9D1B5a639597f558bC37Cf81813724076c5C1e96Vulnerable
RSASHA1Algorithm0x6ca8624Bc207F043D140125486De0f7E624e37A1Vulnerable
DNSSECImpl0x0fc3152971714E5ed7723FAFa650F86A4BaF30C5Uses vulnerable algorithms
DNSRegistrar0xB32cB5677a7C971689228EC835800432B339bA2BAttack entry point

Patches

The bug was reported via Immunefi with possible solutions. The patch was merged at https://github.com/ensdomains/ens-contracts/commit/c76c5ad0dc9de1c966443bd946fafc6351f87587

Workarounds

  • Deploy the patched contracts
  • Point DNSSECImpl.setAlgorithm to the deployed contract

Resources

https://github.com/ensdomains/ens-contracts-bug-62248-pr-509

Affected Packages

1 total
EcosystemPackageVulnerable rangeFix
📦npm@ensdomains/ens-contractsall versionsNo fix

Affected Products

1 product · 1 configurations
Application
ethereum name serviceens.domains
≤ 1.6.2
range

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for @ensdomains/ens-contracts, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Remediation status

    The records we use list no patched version of @ensdomains/ens-contracts for CVE-2026-22866. Check the maintainer's advisory, and where your build allows, override or pin the dependency away from the vulnerable range.

  3. Mitigate without a patch

    If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.

Frequently Asked Questions

### Impact The `RSASHA256Algorithm` and `RSASHA1Algorithm` contracts fail to validate PKCS#1 v1.5 padding structure when verifying RSA signatures. The contracts only check if the last 32 (or 20) bytes of the decrypted signature match the expected hash. This enables Bleichenbacher's 2006 signature forgery attack against DNS zones using RSA keys with low public exponents (e=3). Two ENS-supported TLDs (.cc and .name) use e=3 for their Key Signing Keys, allowing any domain under these TLDs to be fraudulently claimed on ENS without DNS ownership. Affected contracts Contract | Address | Status --
O3 Security · Impact-Aware SCA

Is CVE-2026-22866 in your dependencies?

Find it across npm, including transitive dependencies.

CVE-2026-22866: @ensdomains/ens-contracts