Lucene search
+L
Code423n4Recent

10190 matches found

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.•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.•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.•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.•14 views

Proposals will not be submitted in SecurityCouncilMemberElectionGovernor.sol and SecurityCouncilNomineeElectionGovernor.sol

Lines of code Vulnerability details Impact SecurityCouncilNomineeElectionGovernor::execute and SecurityCouncilNomineeElectionGovernor::createElection will always revert, since the form of description at the proposal is not compliant to the format required at GovernorUpgradable of Openzeppelin...

6.7AI 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.•13 views

User don't have to deposit for a week into the market to get his weekly reward from the LendingLedger

Lines of code Vulnerability details Impact In the LendingLedger contract, a user is rewarded with CANTO tokens depending on how long he has his deposit in the market. Rewards are distributed for each week during which the deposit was inside the market. However, the user can cheat this condition...

6.7AI 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.•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.•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

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.•8 views

newEmergencySecurityCouncil in GovernanceChainSCMgmtActivationAction.sol is not given the TIMELOCK_CANCELLER_ROLE

Lines of code Vulnerability details Proof of Concept GovernanceChainSCMgmtActivationAction.sol checks that the prevEmergencySecurityCouncil has the TIMELOCKCANCELLERROLE first. Then, the role is revoked from the prevEmergencySecurityCouncil. In the last few lines, the function makes sure that the...

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

receive() in LendingLedger should be replaced by an appropriate function to prevent users from sending native by mistake

Lines of code Vulnerability details Impact Users lose funds by transferring them by mistake to LendingLedger. Proof of Concept Since the LendingLedger contract has a receive external payable function which receives native without any validation, which means that anyone can transfer native to it b...

6.8AI 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.•13 views

otherCohort() is not returning different value when the Election has ended.

Lines of code Vulnerability details Impact In SecurityCouncilNomineeElectionGovernor.sol when the otherCohort function is called, it should return the otherCohort. But it is not the case because it returns the cohort at electionIndexToCohort at electionCount - 2 which is only updated when another...

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

replaceMember&rotateMember; has no voting process

Lines of code Vulnerability details Impact The execution of the two methods replaceMember&rotateMember does not implement the voting process, which will violate the provisions of the following articles Address rotation: As a practical matter, a council member can rotate one of their own keys. Thi...

7AI 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.•8 views

Sencond hand Delegatee can Withdraw before owner undelegates

Lines of code Vulnerability details Impact When an original depositor delegates to another address, the new address can call withdraw before the delegator undelegates. Proof of Concept requirelocked.amount 0, "No lock"; requirelocked.end Attack Scenerio: 1. When an original depositor creates a...

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.•10 views

SecurityCouncilMemberElectionGovernor propose() function is not properly restricted

Lines of code Vulnerability details summary The propose function in the SecurityCouncilMemberElectionGovernor contract is not properly restricted. This means that any user can call it, including attackers. Description The propose function in the SecurityCouncilMemberElectionGovernor contract is...

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

Users can abuse VotingEscrow.delegate() to avoid voting power decay. Additionally, users can delegate expired locks to regain full voting power.

Lines of code Vulnerability details Impact Voting power will not decay over the course of the lock. Proof of Concept The VotingEscrow.delegate function allows users to delegate to locks with a longer expiry time. See the below code snippet and inline comments: requiretoLocked.end = fromLocked.end...

6.8AI 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.•7 views

Missing validation to ensure that the _l2CoreGovTimelock parameter is not the zero address in the initialize function

Lines of code Vulnerability details Impact The initialize function accepts a parameter l2CoreGovTimelock and does check if it's a contract address using Address.isContract. However, there's no explicit check to ensure that l2CoreGovTimelock is not the zero address...

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.•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.•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.•10 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.•22 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.•12 views

Anyone can call perform in SecurityCouncilMemberSyncAction to update members of security council multisig

Lines of code Vulnerability details Impact Anyone can update members of security council multisig Proof of Concept SecurityCouncilMemberSyncAction contract has a perform function which is used to update members of security council multisig. File: SecurityCouncilMemberSyncAction.sol /// @notice...

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

LendingLedger Lack of method to rescue accidentally sent Canto

Lines of code Vulnerability details Impact There is no function to rescue Canto accidentally sent to LendingLedger so if governance fat-finger those Canto could be lost forever. Proof of Concept There is no function to transfer native token out of LendingLedger Tools Used Manual inspection...

6.9AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•11 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.•17 views

Double voting in GaugeController

Lines of code Vulnerability details Impact Voting with the same collateral multiple times by delegating and undelegating, a process that could manipulatively influenceincrease the weight of a particular lending market where the malicious actor is the major Liquidity provider. Proof of Concept The...

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

[M-01] SecurityCouncilNomineeElectionGovernor.includeNominee(): Missing check adhering to constitution when nominee vetter include nominee

Lines of code Vulnerability details Impact SecurityCouncilNomineeElectionGovernor.solL290-L317 function includeNomineeuint256 proposalId, address account external onlyNomineeVetter ProposalState state = stateproposalId; if state != ProposalState.Succeeded revert ProposalNotSucceededStatestate; if...

6.8AI score
SaveExploits0
Code423n4
Code423n4
•added 2023/08/10 12:0 a.m.•25 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.•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.•17 views

GaugeController.sol isn't updated when voting power is delegated, enabling users to arbitrarily increase gauge weight

Lines of code Vulnerability details Impact A malicious user can arbitrarily increase any gauge's weight, resulting in loss of rewards for lenders of other gauges. Proof of Concept Note that the below code snippet from GaugeController.voteforgaugeweights called by users to cast and change votes...

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

A user can make sybil attack for manipulate gaugeController dao

Lines of code Vulnerability details Impact When voteforgaugeweights used contract just take info of users slope of exact time. And there is no extra check mechanism in protocol for control is user's delegate amount so slope too until user use voteforgaugeweights. So a user can use...

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.•7 views

New election can be created when another election is running.

Lines of code Vulnerability details Impact In the SecurityCouncilNomineeElectionGovernor.sol When calling createElection function, there is this check called requireLastMemberElectionHasExecuted which checks if the last election has executed. But this is wrong, the check is done by checking if th...

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

GaugeController allows for quick vote and withdraw voting strategy

Lines of code Vulnerability details Summary The GaugeController voting can be abused to apply all of the user's weight in every gauge's vote. GaugeController's voting changes the weight of the gauge. Each user can split their voting weight power between the gauges function...

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

Anyone can call the perform function because there is no access control

Lines of code L31-L75 Vulnerability details Impact Anyone can call the perform function. It can lead to unauthorized changes in the security council. Proof of Concept There is no access control in the perform function and it is marked "external". function performaddress securityCouncil, address...

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

createLock, increaseAmount int128(int256(_value)) unsafe downcast can lead to asset loss

Lines of code Vulnerability details Impact Suppose users deposit more than typeint128.max value through createLock and increaseAmount, they may get less voting power and can't get the assets back. Proof of Concept The VotingEscrow.sol is forked from FIATDAO, but it seems don't consider a MEDIUM...

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

Malicious user can drastically boost their voting power by increase a dust amount in lock

Lines of code Vulnerability details Impact A user's weight on a gauge weight voting by design decay with time. However, a user can simply bypass the decay by increasing a dust amount in their lock in VotingEscrow.sol. I think this is high severity due to easy and cheap manipulation. Proof of...

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

SecurityCouncilMemberSyncAction.perform is not exclusively can be scheduled from SecurityCouncilManager's operations

Lines of code Vulnerability details Impact SecurityCouncilMemberSyncAction.perform is a crucial function that will be triggered by upgrade executor via delegate call after the whole election process or after current members do some update add/remove/replace/rotate to update security council...

6.8AI score
SaveExploits0
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.•10 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.•8 views

Users can vote infinitely via delegation

Lines of code Vulnerability details Summary GaugeControllervoteforgaugeweights is designed to allow users to vote for gauge rewards based on the amount of $CANTO they have locked in the VotingEscrow contract. VotingEscrow includes functionality for users to delegate their voting power to another...

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

SecurityCouncilManager : removeMember does not make sure that the member is removed sucessfully.

Lines of code Vulnerability details Impact Incorrect information emitted as removed address. Remover would be thinking that they have successfully removed the harm causing cohort members, but still they are sitting inside the council. This is not good given the nature of the harmed action that...

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

Decayed voting power can be restored by delegating to newer lock

Lines of code Vulnerability details Impact Delegation to newer lock updates slope and bias of delegatee according to new delegated amount and lengthier lock time which leads to decayed voting power from delegator older lock to be restored // @audit - slope and bias being updated according to...

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

Delegation empowers more voting weight than expected

Lines of code Vulnerability details Description and Impact The user's voting power decreases linearly from the moment of the lock. To prevent this decrease, users can delegate their voting power to a new wallet. Here is an example scenario illustrating this: 1. The user owns two wallets, Wallet A...

6.7AI score
SaveExploits0
Total number of security vulnerabilities10190