Skip to content

Conversation

F4ever
Copy link
Member

@F4ever F4ever commented Oct 14, 2025

Close transferToVault function with a revert to properly address the security issue.

Context

Anyone could transfer funds to the trusted wallet from the NOR contract before rewards were distributed to NOs.
Returning those funds to the NOs required additional operational work.

Problem

This change closes a previously mitigated security issue:
https://research.lido.fi/t/post-mortem-nor-curated-module-sdvt-recovery-lever-weakness/10282

@F4ever F4ever requested a review from a team as a code owner October 14, 2025 19:58
@F4ever F4ever changed the title feat: unify recovery approach with lido contract Feat: revoke possibility to revoke funds from NOR contract Oct 14, 2025
Copy link

badge

Hardhat Unit Tests Coverage Summary

Filename                                                        Stmts    Miss  Cover    Missing
------------------------------------------------------------  -------  ------  -------  ---------
contracts/0.4.24/Lido.sol                                         212       0  100.00%
contracts/0.4.24/StETH.sol                                         72       0  100.00%
contracts/0.4.24/StETHPermit.sol                                   15       0  100.00%
contracts/0.4.24/lib/Packed64x4.sol                                 5       0  100.00%
contracts/0.4.24/lib/SigningKeys.sol                               36       0  100.00%
contracts/0.4.24/lib/StakeLimitUtils.sol                           37       0  100.00%
contracts/0.4.24/nos/NodeOperatorsRegistry.sol                    436       0  100.00%
contracts/0.4.24/oracle/LegacyOracle.sol                           72       0  100.00%
contracts/0.4.24/utils/Pausable.sol                                 9       0  100.00%
contracts/0.4.24/utils/Versioned.sol                                5       0  100.00%
contracts/0.6.12/WstETH.sol                                        17       0  100.00%
contracts/0.8.25/ValidatorExitDelayVerifier.sol                    75       0  100.00%
contracts/0.8.4/WithdrawalsManagerProxy.sol                        61       0  100.00%
contracts/0.8.9/BeaconChainDepositor.sol                           21       2  90.48%   48, 51
contracts/0.8.9/Burner.sol                                         71       0  100.00%
contracts/0.8.9/DepositSecurityModule.sol                         128       0  100.00%
contracts/0.8.9/EIP712StETH.sol                                    16       0  100.00%
contracts/0.8.9/LidoExecutionLayerRewardsVault.sol                 16       0  100.00%
contracts/0.8.9/LidoLocator.sol                                    20       0  100.00%
contracts/0.8.9/OracleDaemonConfig.sol                             28       0  100.00%
contracts/0.8.9/StakingRouter.sol                                 305       0  100.00%
contracts/0.8.9/TriggerableWithdrawalsGateway.sol                  54       1  98.15%   271
contracts/0.8.9/WithdrawalQueue.sol                                88       0  100.00%
contracts/0.8.9/WithdrawalQueueBase.sol                           146       0  100.00%
contracts/0.8.9/WithdrawalQueueERC721.sol                          89       0  100.00%
contracts/0.8.9/WithdrawalVault.sol                                32       0  100.00%
contracts/0.8.9/WithdrawalVaultEIP7002.sol                         21       0  100.00%
contracts/0.8.9/lib/ExitLimitUtils.sol                             35       0  100.00%
contracts/0.8.9/lib/Math.sol                                        4       0  100.00%
contracts/0.8.9/lib/PositiveTokenRebaseLimiter.sol                 22       0  100.00%
contracts/0.8.9/lib/UnstructuredRefStorage.sol                      2       0  100.00%
contracts/0.8.9/oracle/AccountingOracle.sol                       193       0  100.00%
contracts/0.8.9/oracle/BaseOracle.sol                              89       1  98.88%   401
contracts/0.8.9/oracle/HashConsensus.sol                          263       1  99.62%   1005
contracts/0.8.9/oracle/ValidatorsExitBus.sol                      138       1  99.28%   541
contracts/0.8.9/oracle/ValidatorsExitBusOracle.sol                 52       1  98.08%   217
contracts/0.8.9/proxy/OssifiableProxy.sol                          17       0  100.00%
contracts/0.8.9/sanity_checks/OracleReportSanityChecker.sol       232       0  100.00%
contracts/0.8.9/utils/DummyEmptyContract.sol                        0       0  100.00%
contracts/0.8.9/utils/PausableUntil.sol                            31       0  100.00%
contracts/0.8.9/utils/Versioned.sol                                11       0  100.00%
contracts/0.8.9/utils/access/AccessControl.sol                     23       0  100.00%
contracts/0.8.9/utils/access/AccessControlEnumerable.sol            9       0  100.00%
contracts/testnets/sepolia/SepoliaDepositAdapter.sol               21      21  0.00%    49-100
contracts/upgrade/TWVoteScript.sol                                 34      34  0.00%    88-364
contracts/upgrade/interfaces/IDualGovernance.sol                    0       0  100.00%
contracts/upgrade/interfaces/IEmergencyProtectedTimelock.sol        0       0  100.00%
contracts/upgrade/interfaces/IForwarder.sol                         0       0  100.00%
contracts/upgrade/interfaces/IVoting.sol                            0       0  100.00%
contracts/upgrade/utils/CallScriptBuilder.sol                       5       5  0.00%    25-38
contracts/upgrade/utils/OmnibusBase.sol                            21      21  0.00%    52-133
TOTAL                                                            3289      88  97.32%

Diff against master

Filename                                          Stmts    Miss  Cover
----------------------------------------------  -------  ------  --------
contracts/0.4.24/nos/NodeOperatorsRegistry.sol       +1       0  +100.00%
TOTAL                                                +1       0  +100.00%

Results for commit: 023678e

Minimum allowed coverage is 95%

♻️ This comment has been updated with latest results

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants