Lucene search
+L
Code423n4Recent

10190 matches found

Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•15 views

Possible DoS of Election Process

Lines of code Vulnerability details Impact Contract SecurityCouncilNomineeElectionGovernor allows contenders to participate in the election process as nominee over function addContender. The necessary condition for this process is that proposal was created before and has status...

6.6AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•19 views

Unsafe typecasting can lead to tokens being locked in the contract

Lines of code Vulnerability details Impact In the createLock function the amount is calculated by casting the uint256 value to int128 in an unsafe way. Specifically the locked.amount is calculated as: locked.amount += int128int256value; could result in a negative value for locked.amount. For...

6.7AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•14 views

Security council election are vulnerable to signature replay attack

Lines of code Vulnerability details Impact SecurityCouncilNomineeElectionGovernor and SecurityCouncilMemberElectionGovernor contracts both inherit castVoteWithReasonAndParamsBySig function from the base GovernorUpgradeable contract, but implement custom countVote function respectively. The...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•11 views

_removeMemberFromCohortArray FUNCTION REDUCES THE cohort ARRAY LENGTH BY ONE THUS DoS THE addMember FUNCTIONALITY

Lines of code Vulnerability details Impact The SecurityCouncilManager.removeMemberFromCohortArray function is used to remove a member from a specific cohort. The function will replace the removing member with the last element of the cohort array and will pop the last element of the array as shown...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•13 views

Governor relay() functions can be used to bypass voting an directly run critical SecurityCouncilManager functions

Lines of code https://github.com/ArbitrumFoundation/governance/blob/c18de53820c505fc459f766c1b224810eaeaabc5/src/security-council-mgmt/governors/SecurityCouncilNomineeElectionGovernor.sol...

7.4AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•15 views

replaceMember and rotateMember redundancy

Lines of code Vulnerability details Impact The replaceMember and rotateMember functions have identical functionality which may lead to redundancy and confusion. Proof of Concept Both the replaceMember and rotateMember functions essentially perform the same action: replacing a current member...

6.6AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•9 views

Delegating older lock to a newer one does not allow to undelegate it

Lines of code Vulnerability details Impact User who accidentally delegates his lock to the newer one, will get his lock stuck. User won't be able to undelegate his lock, because function delegate will always revert. Please notice, that this is the different issue than previously reported:...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•9 views

receive function allows any user to lose funds

Lines of code Vulnerability details Impact Lending ledger receive function allows for any user to send funds and lose them forever. Proof of Concept Any user that sends funds to the Lending Ledger contract through the receive function, can't withdraw their funds meaning they would be stuck in...

6.9AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•13 views

User can claim most of the rewards for a lending market by depositing cNote for just 2 blocks / epoch

Lines of code Vulnerability details Impact For a user to receive rewards for supplying cNote in a lending market LM, he only needs to have supplied the cNote at the end of an epoch. Users staking for the whole duration of an epoch get 0 benefits, compared to users who supply only at the end of th...

6.6AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•9 views

vulnerability due to the nonce rolling over and generating duplicate salts

Lines of code Vulnerability details Impact An attacker could take the transaction data from the original proposal and re-submit it to the L2 timelock with the same salt. This would get executed again since the salt matches, allowing the attacker to replay the state change. Proof of Concept The...

7.2AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•8 views

Fixed locking period of 5 years doesn't allow the delegator to withdraw funds for atleast another 5 years

Lines of code Vulnerability details Details Let's first understand how the process of delegation, withdraw and increaseAmount works 1. Rule 1: To delegate to some user A, A.lock.end needs to be longer than msg.sender.lock.end and A.Lock.end block.timestampLock mustn't be expired...

6.7AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•13 views

Anyone can change the members of Security Council

Lines of code Vulnerability details Impact Anyone can change the members of security council by calling the function perform in the contract SecurityCouncilMemberSyncAction.sol as the function is open to all. Proof of Concept uint256 updateNonce = getUpdateNoncesecurityCouncil; if nonce =...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•10 views

currentCohort FUNCTION SHOULD REVERT WHEN electionCount == 0 RATHER THAN RETURNING Cohort.FIRST

Lines of code Vulnerability details Impact In the SecurityCouncilNomineeElectionGovernor.currentCohort function is used to retrieve the current Cohort of the contract. For a cohort to be elected the election should be created with the respective proposal Id. But with in the function scope of...

6.5AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•11 views

GovernanceChainSCMgmtActivationAction : TIMELOCK_CANCELLER_ROLE is not set to the newEmergencySecurityCouncil

Lines of code Vulnerability details Impact newEmergencySecurityCouncil will not have the TIMELOCKCANCELLERROLE. Proof of Concept GovernanceChainSCMgmtActivationAction has the function perform which will be used to activate elections on Arbitrum One. while the function set and revoke the...

6.9AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•7 views

Invalid startDate check in SecurityCouncilNomineeElectionGovernorTiming contract

Lines of code Vulnerability details Summary The SecurityCouncilNomineeElectionGovernorTiming contract has an invalid startDate check in the SecurityCouncilNomineeElectionGovernorTiminginit function. The check ensures that the startDate is in the future, but it does not check that the startDate is...

6.6AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•12 views

Timelock canceller role is removed from council and transferred to upgrade executor

Lines of code Vulnerability details Impact In L1SCMgmtActivationAction the TIMELOCKCANCELLORROLE is removed from the previous EmergencySecurityCouncil and not transferred to the new EmergencySecurityCouncil but rather to the L1 UpgradeExecutor. In SecurityCouncilNomineeElectionGovernor the...

7.2AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•12 views

getPastCirculatingSupply() returns the ARB token supply instead of circulating votes supply

Lines of code Vulnerability details Bug Description In ArbitrumGovernorVotesQuorumFractionUpgradeable, the getPastCirculatingSupply function is used when calculating quorum for proposals: ArbitrumGovernorVotesQuorumFractionUpgradeable.solL31-L35 /// @notice Get "circulating" votes supply; i.e.,...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•11 views

electionToTimestamp() might return incorrect timestamps depending on the day of the first election

Lines of code Vulnerability details Bug Description For nominee elections, election dates are determined using the the electionToTimestamp function in the SecurityCouncilNomineeElectionGovernorTiming module. When SecurityCouncilNomineeElectionGovernor is initialized after deployment, the first...

6.6AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•11 views

No security council member can be proposed for removal using the propose function because it will always return MemberNotFound

Lines of code L134-L139 Vulnerability details Impact No security council member can be proposed for removal. Proof of Concept Going by the Arbitrum DAO constitution, a security council member cannot belong to first and second cohort at the same time. A security council member can either be in the...

6.7AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•12 views

Reusing other user's votes for both nominee and member elections

Lines of code Vulnerability details Impact The two elections nominee and member are sharing the same proposal id. This give an attack opportunity to a malicious user to reuse signature of other users who casted vote by signature in nominee election for casting vote in member election. In other...

7.1AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•8 views

If the length of owners in the safe array is too large, may experience out of gas revert

Lines of code Vulnerability details Proof of Concept Function requireSafesEquivalent in SecurityCouncilMgmtUpgradeLib.sol checks whether the addresses in the two safe arrays are the same and of the same length. If the arrays are too large, like there are many addresses that manages a gnosis safe,...

6.7AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•14 views

Stealing or reusing votes

Lines of code Vulnerability details Impact It is possible to reuse/steal user's votes if they are supposed to cast vote by signature. Proof of Concept Casting votes during nominee election and member election is possible by calling the functions: castVoteWithReasonAndParams...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•16 views

GaugeController.remove_gauge() may indefinitely trap user voting power

Lines of code Vulnerability details Impact Users will permanently lose voting power equal to their power used to vote in the removed gauge unless the gauge is re-added and users re-vote to remove their voting power from the gauge. Proof of Concept GaugeController.sol does not have any function fo...

6.9AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•12 views

If user has delegated someone when locktime expires his tokens will be stuck forever.

Lines of code Vulnerability details Impact tokens will be stuck forever if user's locktime expired when his delegatee someone differant than him. Because he cannot withdraw his money also he cannot delegate himself too because his lock expired.Also he cannot use increaseamount for lockexpired and...

7AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•11 views

setFullWeightDuration() can be called while a member election is ongoing

Lines of code Vulnerability details Bug Description In SecurityCouncilMemberElectionGovernorCountingUpgradeable, fullWeightDuration which is the duration where a user's votes has weight 1 can be set using setFullWeightDuration: SecurityCouncilMemberElectionGovernorCountingUpgradeable.solL77-L84...

6.7AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•9 views

Lenders can deposit at anytime during the week and still claim rewards for that week

Lines of code Vulnerability details Impact Anytime a user deposits during an epoch i.e a week he immediately is eligible to earn from the rewards for that lending market that week. This occurs because when the lending pool calls syncledger, LendingLedger adds the deposit to the users deposit for...

6.6AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•4 views

SecurityCouncilNomineeElectionGovernor might have to wait for more than 6 months to create election again

Lines of code Vulnerability details Impact SecurityCouncilNomineeElectionGovernor might have to wait for more than 6 months to create election again Proof of Concept According to the document , security council election can be create every 6 months. Contract SecurityCouncilNomineeElectionGovernor...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•8 views

the _checkpoint_market may not work as expected when it called more than twice at least

Lines of code Vulnerability details Impact the checkpointmarket function in the lendingLedger.sol contract did not work as it expected when the caller make a call to the function for the third time. the checkpointmarket would called more than once to update the market, however the function will n...

6.7AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•9 views

Claim reward can be inaccessible if msg.sender is a smart contract with no fallback/receive function

Lines of code Vulnerability details Impact When calling claim on LendingLedger, the claim reward can be inaccessible if msg.sender is a smart contract with no fallback/receive function. Indeed, msg.sender.callvalue: cantoToSend"" would fail and the claim would revert, not allowing the user to...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•10 views

The LendingLedger.sync_ledger function is susceptible to a potential reentrancy attack

Lines of code Vulnerability details Impact The primary focus is on the functions deposit/withdraw situated within the LendingMarket smart contracts, as they trigger the invocation of the LendingLedger.syncledger function. These functions carry the potential risk of containing a reentrancy issue,...

6.9AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•10 views

User is able to delegate to delegatee with shorter lock when calling increaseAmount()

Lines of code Vulnerability details Impact When a user "user A" calls increaseAmount, if he had previously delegated his lock to another user "delegatee" this would update the end of the lock for "user A" while increasing the amount of delegated for the other user aka "delegatee". This is...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•17 views

LendingLedger.sol sends ETH instead of CANTO

Lines of code Vulnerability details Impact In the documentations for the contest it is clearly stated that LendingLedger contract is expected to send CANTO to the user when they call the claim function but in reality it transfers ETH. This could be problematic if the user is a contract that expec...

6.7AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•11 views

User funds can be lost

Lines of code Vulnerability details Impact User funds sent by users can be lost forever Proof of Concept The contract LendingLedger.sol implements the function receive external payable to allow to the protocol to deposit the Canto used in the expected behaviour. But since the receive external...

6.7AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•8 views

Missing access control for whitelisted smart contract

Lines of code Vulnerability details Impact Because this contract is a copy from the curve side, the verwa side is missing the check of a whitelisted/blacklisted smart contract. If the "blacklist" check is not added or implemented within the function, then the contract would lack the necessary...

7.2AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•9 views

block.number DOES NOT PROVIDE A FAIR EVALUATION OF TIME MEASUREMENTS WITHIN FUNCTIONS

Lines of code Vulnerability details Impact The SecurityCouncilMemberElectionGovernorCountingUpgradeable.votesToWeight function is used to calculate the weight of a vote for a given proposal, block number, and number of votes. During the weight calculation the weight given for each vote depends on...

6.7AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•6 views

The Owner of SecurityCouncilMemberElectionGovernor Can Replace Cohorts And Bypass The Election Process

Lines of code Vulnerability details Impact In SecurityCouncilManager contract: the cohorts members are replaced by election via replaceCohort function; the process goes as follows: 1. an election proposal is made by anyone after 6-months of the last election via...

6.9AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•19 views

GaugeController - Vulnerability with changing gauge weight would make the contract stop working

Lines of code Vulnerability details Impact The issue is applied differently based on how changegaugeweight works. 1. When changing gauge weight is essential for every enabled gauge before any vote happens An attacker can front-run changegaugeweight transaction to manipulate slope which can result...

6.7AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•13 views

Misaligned Epoch Calculation for Reward Claims

Lines of code Vulnerability details Impact When users attempt to claim rewards, the contract calculates the claimEnd and subsequently updates the userClaimedEpoch using claimEnd + WEEK. This might result in misaligned epochs in scenarios where claimUpToTimestamp is less than or more than a week. ...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•10 views

SecurityCouncilMemberElectionGovernor Owner Can Change votingPeriod During an Active Election

Lines of code Vulnerability details Impact In SecurityCouncilMemberElectionGovernor contract : relay function enables the contract owner from making calls to any contract address. And in SecurityCouncilMemberElectionGovernorCountingUpgradeable contract: setFullWeightDuration can be accessed only ...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•19 views

Failed transfer with low level call could be overlooked

Lines of code Vulnerability details Impact In LendingLedger.sol and votingEscrow.sol, low level call made using the call, According to the Solidity docs, "The low-level functions call, delegatecall and staticcall return true as their first return value if the account called is non-existent, as pa...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•6 views

Delegate system can be used to increase voting power without resetting the lockEnd

Lines of code Vulnerability details Impact The added delegate mechanism allows increasing the voting power without resetting the lockEnd. Proof of Concept IncreaseAmount increases the locked amount of a msg.sender staked native in VotingEscrow and resets its lockEnd to block.timestamp + LOCKTIME...

6.9AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•6 views

User point history for first epoch remains empty

Lines of code Vulnerability details Impact balanceOfAt will not work correctly if the block number queried is related to user's first epoch. Proof of Concept VotingEscrow.solL142-L149 first assigns userOldPoint to userPointHistoryaddruEpoch + 1 if uEpoch==0 and then always assigns userNewPoint to...

6.9AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•9 views

PROPOSAL DEADLINE IS NOT CHECKED DURING VOTE CASTING IN _countVote FUNCTION

Lines of code Vulnerability details Impact The SecurityCouncilNomineeElectionGovernorCountingUpgradeable is an abstract contract which is inherited by the SecurityCouncilNomineeElectionGovernor contract. The SecurityCouncilNomineeElectionGovernorCountingUpgradeable.countVote function is responsib...

6.7AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•12 views

_scheduleUpdate() should be called during initialize ing the SecurityCouncilManager

Lines of code Vulnerability details Impact Updates will not be scheduled through timelocks and target upgrade executors by the scheduleUpdate call. Initial set of cohort members will not be scheduled. Proof of Concept In SecurityCouncilManager whenever a new member is added, or removed or swapped...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•12 views

Lock owner DOS and funds stuck

Lines of code Vulnerability details Impact The lock's owner will no longer have the ability to use the delegate function. Meaning the person he chose to delegate can withdraw his funds when lock expires, but won't be able to. Proof of Concept Lets imagine 3 users with a Lock each: If user 1...

6.7AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•10 views

add_gauge doesn't initialize time_weight and update time_sum

Lines of code Vulnerability details Impact In Curve's implementation, when adding gauge, timeweight of gauge type is being initialized and timesum being updated. if self.timesumgaugetype == 0: self.timesumgaugetype = nexttime self.timeweightaddr = nexttime Since timesum has been set in constructo...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•9 views

Missing __Governor_init() call in SecurityCouncilMemberRemovalGovernor's initialize() function

Lines of code Vulnerability details Bug Description The SecurityCouncilMemberRemovalGovernor contract inherits Openzeppelin's GovernorUpgradeable: SecurityCouncilMemberRemovalGovernor.solL17-L19 contract SecurityCouncilMemberRemovalGovernor is Initializable, GovernorUpgradeable, However, in its...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•33 views

Signatures can be replayed in castVoteWithReasonAndParamsBySig() to use up more votes than a user intended

Lines of code Vulnerability details Bug Description In the SecurityCouncilNomineeElectionGovernor and SecurityCouncilMemberElectionGovernor contracts, users can provide a signature to allow someone else to vote on their behalf using the castVoteWithReasonAndParamsBySig function, which is in...

6.7AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•10 views

If gov use removeGauge users who use votingPower for that gauge will lose their votingPower infinetly.

Lines of code Vulnerability details Impact When gov use removeGauge gauge's power changed to the 0, however there is no reset for user votePower which stored in voteuserpower mapping. Because of that users will lose their voting power. For example if a user give his 1000 votingPower to removedGau...

6.6AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•12 views

critical functions should emit an event when they called

Lines of code Vulnerability details Impact some critical functions should emit an even when they called because it contains important information and an event should be emitted, some functions in this contest did not emit an event and this may led to unwanted behavior in future functions like cla...

6.8AI score
SaveExploits0
Total number of security vulnerabilities10190