code-423n4 / 2023-08-arbitrum-findings

3 stars 3 forks source link

Absence of zero address checks for roles passed to the initialize function. #255

Closed code423n4 closed 1 year ago

code423n4 commented 1 year ago

Lines of code

https://github.com/ArbitrumFoundation/governance/blob/c18de53820c505fc459f766c1b224810eaeaabc5/src/security-council-mgmt/SecurityCouncilManager.sol#L103

Vulnerability details

Impact

The initialize function accepts various roles as part of the _roles parameter (SecurityCouncilManagerRoles). However, it doesn't validate whether any of these role addresses are set to the zero address (address(0)). This omission might result in inadvertently assigning critical roles to the zero address, which would render them unassignable and unusable.

Proof of Concept

Assigning roles to the zero address can introduce security risks and functional problems:

Security Risks: If a malicious actor can exploit the setup to set a role to the zero address, it can hinder critical functionalities that rely on that role.

Functionality Block: Once a role is assigned to the zero address, it becomes impossible to assign that role to a valid address or perform any operations that require that role.

Tools Used

Manual

Recommended Mitigation Steps

Introduce validation checks for each role in the _roles parameter to ensure none of them are set to the zero address

Assessed type

Invalid Validation

0xSorryNotSorry commented 1 year ago

Insufficient proof of how zero address role assignment could damage the end-user or the protocol.

c4-pre-sort commented 1 year ago

0xSorryNotSorry marked the issue as low quality report

c4-judge commented 1 year ago

0xean marked the issue as unsatisfactory: Invalid