Home
EXECUTED
Ended Mar 4 at 12:48 AM UTC

[Executable] Replace DNSSEC oracle algorithms

By
Votes
1.44Mfor
0against
143.93%Quorum
Skip to Votes

Abstract

This proposal replaces three DNSSEC oracle algorithms with newly deployed contracts to address the following two issues:

Motivation

RSA Signature Forgery (Critical)

The RSASHA256Algorithm and RSASHA1Algorithm contracts fail to validate PKCS#1 v1.5 padding structure when verifying RSA signatures. The contracts only check whether the last 32 (or 20) bytes of the decrypted signature match the expected hash, ignoring the required padding format defined in RFC 3447. 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. The attack is permissionless, costs approximately 100k gas, and is difficult to detect as the forged proofs appear legitimate. Remediation requires governance intervention.

This vulnerability class has resulted in critical CVEs in other systems (CVE-2006-4339 in OpenSSL, CVE-2014-1568 in NSS, CVE-2016-1494 in python-rsa).

P-256 Precompile Upgrade (Gas Optimization)

The current P256SHA256Algorithm contract uses a Solidity-based EllipticCurve library for signature verification, consuming approximately 200,000+ gas per operation. EIP-7951 introduces a native P-256 precompile (at address 0x100) which reduces this to approximately 3,500 gas — a ~98% reduction. This upgrade takes advantage of the precompile available after the Fusaka hardfork.

Specification

Description

And newly deployed contract information is as follows

Steps overview are as follows

  • 1-3. DNSSECImpl: setAlgorithm of RSASHA1, RSASHA256 (RSA Signature Forgery patch), P256SHA256 (Using p-256 precompile) to newly deployed contracts
  • 4-5. Root: setSubnodeOwner of cc and name to 0
  • 6-7: DNSRegistrar: Call enableNode for .cc and .name to re-enable them for DNSSEC.

DNSSEC_IMPL_ADDRESS=0x0fc3152971714E5ed7723FAFa650F86A4BaF30C5 ROOT_ADDRESS=0xaB528d626EC275E3faD363fF1393A41F581c5897 DNS_REGISTRAR_ADDRESS = 0xB32cB5677a7C971689228EC835800432B339bA2B

Transactions Summary

This proposal contains 7 transaction(s) to be executed by the ENS DAO Timelock.

#ContractFunctionDescription
1DNSSECImplsetAlgorithmSet Algorithm of RSASHA1 to new address
2DNSSECImplsetAlgorithmSet Algorithm of RSASHA256 to new address
3DNSSECImplsetAlgorithmSet Algorithm of P256SHA256 to new address
4RootsetSubnodeOwnerSet owner of cc to 0
5RootsetSubnodeOwnerSet owner of name to 0
6DNSRegistrarenableNodeRe-enable cc for DNSSEC
7DNSRegistrarenableNodeRe-enable name for DNSSEC

Detailed Transaction Information

Transaction 1: Set Algorithm of RSASHA1 to new address

Target: DNSSECImpl

Address: 0x0fc3152971714E5ed7723FAFa650F86A4BaF30C5 Function: setAlgorithm

Parameters:

  • id : 5
  • algo: 0x58E0383E21f25DaB957F6664240445A514E9f5e8

Encoded Calldata: 0x020ed8d3000000000000000000000000000000000000000000000000000000000000000500000000000000000000000058e0383e21f25dab957f6664240445a514e9f5e8

Transaction 2: Set Algorithm of RSASHA256 to new address

Target: DNSSECImpl

Address: 0x0fc3152971714E5ed7723FAFa650F86A4BaF30C5

Function: setAlgorithm

Parameters:

  • id : 8
  • algo: 0xaee0E2c4d5AB2fc164C8b0Cc8D3118C1c752C95E

Encoded Calldata: 0x020ed8d30000000000000000000000000000000000000000000000000000000000000008000000000000000000000000aee0e2c4d5ab2fc164c8b0cc8d3118c1c752c95e

Transaction 3: Set Algorithm of P256SHA256 to new address

Target: DNSSECImpl

Address: 0x0fc3152971714E5ed7723FAFa650F86A4BaF30C5

Function: setAlgorithm

Parameters:

  • id : 13
  • algo: 0xB091C4F6FAc16eDDA5Ee1E0f4738f80011905878

Encoded Calldata: 0x020ed8d3000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000b091c4f6fac16edda5ee1e0f4738f80011905878

Transaction 4: setSubnodeOwner of cc to 0

Target: Root

Address: 0xaB528d626EC275E3faD363fF1393A41F581c5897

Function: setSubnodeOwner

Parameters:

  • label : 0x68ce0763ca729318b714b0cf33478e4e228e19f58aeaf12cfa1535c9d4bbcaf9
  • owner: 0x0000000000000000000000000000000000000000

Encoded Calldata: 0x8cb8ecec68ce0763ca729318b714b0cf33478e4e228e19f58aeaf12cfa1535c9d4bbcaf90000000000000000000000000000000000000000000000000000000000000000

Transaction 5: setSubnodeOwner of name back to DNS_REGISTRAR_ADDRESS

Target: Root

Address: 0xaB528d626EC275E3faD363fF1393A41F581c5897

Function: setSubnodeOwner

Parameters:

  • label : 0x2361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60
  • owner: 0x0000000000000000000000000000000000000000

Encoded Calldata: 0x8cb8ecec2361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d600000000000000000000000000000000000000000000000000000000000000000

Transaction 6: Re-enable cc for DNSSEC

Target: DNSRegistrar

Address: 0xB32cB5677a7C971689228EC835800432B339bA2B

Function: enableNode

Parameters:

  • domain : 0x02636300

Encoded Calldata: 0x6f951221000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000040263630000000000000000000000000000000000000000000000000000000000

Transaction 7: Re-enable name for DNSSEC

Target: DNSRegistrar

Address: 0xB32cB5677a7C971689228EC835800432B339bA2B

Function: enableNode

Parameters:

  • domain : 0x046e616d6500

Encoded Calldata: 0x6f95122100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006046e616d65000000000000000000000000000000000000000000000000000000

Votes
1.44Mfor
0against
143.93%Quorum
0x5bfc...83900x5bfc...8390voted for
262.49K
0xb8c2...67d50xb8c2...67d5voted for
150K
0x1d54...63590x1d54...6359voted for
112.46K
0x5346...42cf0x5346...42cfvoted for
108.49K
0x9831...67440x9831...6744voted for
97.66K
0xd5d1...cf2c0xd5d1...cf2cvoted for
90.54K
0xa786...77c60xa786...77c6voted for
85.57K
0xb352...8b1b0xb352...8b1bvoted for
60K
0x8393...07800x8393...0780voted for
53.15K
0x8787...ea520x8787...ea52voted for
50.3K
0xc027...614e0xc027...614evoted for
50K
0x2d7d...b05e0x2d7d...b05evoted for
46.35K
0xac50...c0390xac50...c039voted for
41.3K
0xa8b4...28e80xa8b4...28e8voted for
40.51K
0x7f77...1caa0x7f77...1caavoted for
33.21K
0x8b1f...feff0x8b1f...feffvoted for
32.4K
0x8b33...37420x8b33...3742voted for
20.29K
0x7ae9...0c0b0x7ae9...0c0bvoted for
10.37K
0x1f3d...05910x1f3d...0591voted for
10.15K
0x76a6...bbb80x76a6...bbb8voted for
9.87K
0x035e...17d30x035e...17d3voted for
9.16K
0x480b...9a300x480b...9a30voted for
8.75K
0x1df8...5a170x1df8...5a17voted for
7.15K
0x4dc9...865a0x4dc9...865avoted for
7.05K
0xf342...33290xf342...3329voted for
5.97K
0x1f9c...270e0x1f9c...270evoted for
5.39K
0x3335...81e10x3335...81e1voted for
4.55K
0x2e11...75010x2e11...7501voted for
4.4K
0x36f7...a5890x36f7...a589voted for
3.93K
0x711c...d0a10x711c...d0a1voted for
3.79K
0x310c...56b60x310c...56b6voted for
2.66K
0x179a...92850x179a...9285voted for
1.98K
0xe22f...94ac0xe22f...94acvoted for
1.85K
0x703a...789b0x703a...789bvoted for
1.75K
0x30c7...c7020x30c7...c702voted for
1.69K
0xb3e6...26d10xb3e6...26d1voted for
1.38K
0xb35f...b1e10xb35f...b1e1voted for
419
0xa729...de600xa729...de60voted for
394
0xbc15...e8e30xbc15...e8e3voted for
359
0x796c...38b50x796c...38b5voted for
342
0x1087...92df0x1087...92dfvoted for
251
0x0253...d11a0x0253...d11avoted for
246
0x35df...3aed0x35df...3aedvoted for
156
0x168f...74000x168f...7400voted for
131
0x51c5...58a80x51c5...58a8voted for
103
0xc554...77590xc554...7759voted for
100
0x6ee0...17450x6ee0...1745voted for
41
0x4579...ca810x4579...ca81voted for
33
0x2064...8c5e0x2064...8c5evoted for
27
0x019e...2ee30x019e...2ee3voted for
25
0xdd26...79cc0xdd26...79ccvoted for
20
0x29de...f8910x29de...f891voted for
19
0x3ddc...05b00x3ddc...05b0voted for
16
0xbcb4...8a2a0xbcb4...8a2avoted for
11
0x5fa8...0e040x5fa8...0e04voted for
10
0x1729...b8790x1729...b879voted for
10
0xd83a...5fc50xd83a...5fc5voted for
10
0x2f2f...f78a0x2f2f...f78avoted for
1
0xa8e1...f37c0xa8e1...f37cvoted for
1
0x3fb1...4c8a0x3fb1...4c8avoted for
1
0xa97c...ccc80xa97c...ccc8voted for
1
For ENS
0x4d32...bbfa0x4d32...bbfavoted for
1
0x0057...15c80x0057...15c8voted for
0
0xb929...bee20xb929...bee2voted for
0
0xc04a...9a110xc04a...9a11voted for
0
0x1c05...40940x1c05...4094voted for
0
0x90bf...2bd00x90bf...2bd0voted for
0
0x1d14...40a60x1d14...40a6voted for
0
0x7000...362b0x7000...362bvoted for
0
0x0c33...d6820x0c33...d682voted for
0
0x8b43...aa820x8b43...aa82voted for
0
0xcc58...b7d10xcc58...b7d1voted for
0
0xcda0...cb2a0xcda0...cb2avoted for
0
0xe78b...46810xe78b...4681voted for
0
0xda33...b68d0xda33...b68dvoted for
0
0x0191...9f930x0191...9f93voted for
0
0x64ba...f97e0x64ba...f97evoted for
0
0xbcbb...e0260xbcbb...e026voted for
0
0xb6f3...4a940xb6f3...4a94voted for
0
0x8292...0e380x8292...0e38voted for
0
0x3cf3...25140x3cf3...2514voted for
0
0x8cdb...1e3a0x8cdb...1e3avoted for
0
0x00c7...9a850x00c7...9a85voted for
0
0xaf70...493c0xaf70...493cvoted for
0
0xf5f8...c8a80xf5f8...c8a8voted for
0
0x6b65...95de0x6b65...95devoted for
0
0x1340...83850x1340...8385voted for
0
0x67c9...5d1c0x67c9...5d1cvoted for
0
0x76e0...2a680x76e0...2a68voted for
0
0x8edc...dbf20x8edc...dbf2voted for
0
0x3e85...e80c0x3e85...e80cvoted for
0
0x61d7...edce0x61d7...edcevoted for
0
0x111a...253c0x111a...253cvoted for
0
0xc9dd...23a50xc9dd...23a5voted for
0
0x50bf...caca0x50bf...cacavoted for
0
0x5688...46b10x5688...46b1voted for
0
0xe828...273a0xe828...273avoted for
0
0xd311...85290xd311...8529voted for
0
0xc1d3...8c880xc1d3...8c88voted for
0
0x4eaf...e0cc0x4eaf...e0ccvoted for
0
0xe236...35710xe236...3571voted for
0
0x6c21...5c4f0x6c21...5c4fvoted for
0
0x92dd...240b0x92dd...240bvoted for
0
0x3ba8...918b0x3ba8...918bvoted for
0
0xacba...43f60xacba...43f6voted for
0
0x655f...26f20x655f...26f2voted for
0
0xb375...93c20xb375...93c2voted for
0
0x6030...0b210x6030...0b21voted for
0
0x22ff...cc990x22ff...cc99voted for
0
0x80fa...8a280x80fa...8a28voted for
0
0xfb1d...50d80xfb1d...50d8voted for
0
0x2f0f...5f070x2f0f...5f07voted for
0
0x7825...38f60x7825...38f6voted for
0
0x708f...bdab0x708f...bdabvoted for
0
0x9857...e4660x9857...e466voted for
0
0x5af0...a02b0x5af0...a02bvoted for
0
0xa4fd...fe9a0xa4fd...fe9avoted for
0
0xa396...7dd40xa396...7dd4voted for
0
0x12ee...a7250x12ee...a725voted for
0
0xcb4a...9cc40xcb4a...9cc4voted for
0
0x1960...6f640x1960...6f64voted for
0
0x0e39...1b8e0x0e39...1b8evoted for
0
0xa925...09a70xa925...09a7voted for
0
0x78c9...2f250x78c9...2f25voted for
0
0xa4aa...2a390xa4aa...2a39voted for
0
0x31e1...32df0x31e1...32dfvoted for
0
0x4107...22900x4107...2290voted for
0
0x3662...ba010x3662...ba01voted for
0
0x0e9a...fb1a0x0e9a...fb1avoted for
0
0x3349...871f0x3349...871fvoted for
0
0xaa74...5b9f0xaa74...5b9fvoted for
0
0xb9a5...a47f0xb9a5...a47fvoted for
0
0x2e8d...d67a0x2e8d...d67avoted for
0
0xfa06...09270xfa06...0927voted for
0
0xe451...5b500xe451...5b50voted for
0
0x518c...5c8e0x518c...5c8evoted for
0
0xce3a...62680xce3a...6268voted for
0
0xd5ca...610c0xd5ca...610cvoted for
0
0x67c1...67570x67c1...6757voted for
0
0xc771...db680xc771...db68voted for
0
0xa591...c8bb0xa591...c8bbvoted for
0
0x7e20...1e920x7e20...1e92voted for
0
0x77af...7e200x77af...7e20voted for
0
0x7b0b...8d0b0x7b0b...8d0bvoted for
0
0xb0bc...ba860xb0bc...ba86voted for
0
0x1e0c...6f8b0x1e0c...6f8bvoted for
0
0xff71...dc380xff71...dc38voted for
0
0x1bf3...5e9b0x1bf3...5e9bvoted for
0
0x805b...d12f0x805b...d12fvoted for
0
0x9854...0e9a0x9854...0e9avoted for
0
0x5438...6c750x5438...6c75voted for
0
0x0a4f...3a6a0x0a4f...3a6avoted for
0
0x4f12...e3770x4f12...e377voted for
0
0xed1a...50320xed1a...5032voted for
0
0xda87...e2930xda87...e293voted for
0
0xc82a...ccd20xc82a...ccd2voted for
0
0x4a1e...6d130x4a1e...6d13voted for
0
0x229f...63e00x229f...63e0voted for
0
0xe13c...f7c80xe13c...f7c8voted for
0
0x19bd...9a650x19bd...9a65voted for
0
0xaf42...afcd0xaf42...afcdvoted for
0
0x9a34...460b0x9a34...460bvoted for
0
0x477e...238b0x477e...238bvoted for
0
0xc3a2...e6ee0xc3a2...e6eevoted for
0
0x475e...e10c0x475e...e10cvoted for
0
0x3cd8...edcb0x3cd8...edcbvoted for
0
0x6ae9...f5a40x6ae9...f5a4voted for
0
0x99fb...793d0x99fb...793dvoted for
0
0x2b3d...e53f0x2b3d...e53fvoted for
0
0x7c9b...ff180x7c9b...ff18voted for
0
0x466a...12860x466a...1286voted for
0
0x05b7...c9120x05b7...c912voted for
0
0x4259...a0690x4259...a069voted for
0
0x1b5b...e04f0x1b5b...e04fvoted against
0
0x2a4e...15480x2a4e...1548voted for
0
0x6798...75c90x6798...75c9voted for
0
0x43ab...47cf0x43ab...47cfvoted for
0
0xba87...76000xba87...7600voted for
0
0xd409...ff870xd409...ff87voted for
0
0x5825...c5fe0x5825...c5fevoted for
0
0x4724...021b0x4724...021bvoted for
0
0xbf11...6e310xbf11...6e31voted for
0
0xac7a...19420xac7a...1942voted for
0
0xab8b...6ed20xab8b...6ed2voted for
0
0xbd6f...4ab00xbd6f...4ab0voted for
0
0xcec2...e7280xcec2...e728voted for
0
0xb60c...55b40xb60c...55b4voted for
0
0xacf6...2b5f0xacf6...2b5fvoted for
0
0xceb9...40cd0xceb9...40cdvoted for
0
0x7223...36720x7223...3672voted for
0
0xb49f...79480xb49f...7948voted for
0
0xd6f5...d90f0xd6f5...d90fvoted for
0
0x1c64...eef10x1c64...eef1voted for
0
0x89b5...37f50x89b5...37f5voted for
0
0xd220...0e790xd220...0e79voted for
0
0xf5c0...0e180xf5c0...0e18voted for
0
0x072f...9fc50x072f...9fc5voted for
0
0xdd37...ad820xdd37...ad82voted for
0
0xc015...cdd00xc015...cdd0voted for
0
0x97f4...90ca0x97f4...90cavoted for
0
0x9359...e7d70x9359...e7d7voted for
0
0x4821...e6060x4821...e606voted for
0
0x98cd...33f60x98cd...33f6voted for
0
0xb232...15340xb232...1534voted for
0
0x7144...ec4e0x7144...ec4evoted for
0
0x2353...57850x2353...5785voted for
0
0xa7d4...319d0xa7d4...319dvoted for
0
0x3d02...364f0x3d02...364fvoted for
0
0x8b27...49a10x8b27...49a1voted for
0
0x15f4...59eb0x15f4...59ebvoted for
0
0x82f9...18c20x82f9...18c2voted for
0
0x6cd4...f9ab0x6cd4...f9abvoted for
0
0xd329...73ed0xd329...73edvoted for
0
0xd17f...45690xd17f...4569voted for
0
0x758f...77400x758f...7740voted for
0
0xdaeb...af180xdaeb...af18voted for
0
0xf787...78d00xf787...78d0voted for
0
0x810c...82490x810c...8249voted for
0
0x3b1a...12280x3b1a...1228voted for
0
0xdb0d...21660xdb0d...2166voted for
0
0xf18b...f56d0xf18b...f56dvoted against
0
0x0be7...93d30x0be7...93d3voted for
0