Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lack of storage gap in upgradeable contracts #329

Closed
code423n4 opened this issue Dec 31, 2022 · 5 comments
Closed

Lack of storage gap in upgradeable contracts #329

code423n4 opened this issue Dec 31, 2022 · 5 comments
Labels
bug Something isn't working downgraded by judge Judge downgraded the risk level of this issue edited-by-warden grade-c QA (Quality Assurance) Assets are not at risk. State handling, function incorrect as to spec, issues with clarity, syntax unsatisfactory does not satisfy C4 submission criteria; not eligible for awards

Comments

@code423n4
Copy link
Contributor

code423n4 commented Dec 31, 2022

Lines of code

https://github.com/code-423n4/2022-12-gogopool/blob/aec9928d8bdce8a5a4efe45f54c39d4fc7313731/contracts/contract/BaseUpgradeable.sol#L9-L13

Vulnerability details

Impact

Storage of TokenggAVAX might be corrupted on upgrade.

Proof of Concept

The TokenggAVAX contract is meant to be upgradeable . However , the contracts it inherits are not upgrade safe.

Storage gaps are a convention for reserving storage slots in base contracts. This allows future versions of the child contracts to be safe during upgradation.

Below is the contract inheritance chart of TokenggAVAX .

tokenggAVAX inherits 4 contracts. The contracts with yellow colour have defined a storage gap , but contracts with purple have not defined any .

tokenggAVAX

Adding any new storage in BaseUpgradeable , will corrupt the storage slots of tokenggAVAX.

Tools Used

Manual , Surya

Recommended Mitigation Steps

Add a storage gap in BaseUpgradeable

uint256[50] __gap; 

Ref:

@code423n4 code423n4 added 2 (Med Risk) Assets not at direct risk, but function/availability of the protocol could be impacted or leak value bug Something isn't working labels Dec 31, 2022
code423n4 added a commit that referenced this issue Dec 31, 2022
C4-Staff added a commit that referenced this issue Jan 6, 2023
@c4-judge
Copy link
Contributor

c4-judge commented Jan 8, 2023

GalloDaSballo marked the issue as duplicate of #300

@c4-judge
Copy link
Contributor

c4-judge commented Feb 2, 2023

GalloDaSballo marked the issue as not a duplicate

@c4-judge c4-judge added downgraded by judge Judge downgraded the risk level of this issue QA (Quality Assurance) Assets are not at risk. State handling, function incorrect as to spec, issues with clarity, syntax and removed 2 (Med Risk) Assets not at direct risk, but function/availability of the protocol could be impacted or leak value labels Feb 2, 2023
@c4-judge
Copy link
Contributor

c4-judge commented Feb 2, 2023

GalloDaSballo changed the severity to QA (Quality Assurance)

@GalloDaSballo
Copy link

L

@c4-judge c4-judge closed this as completed Feb 8, 2023
@c4-judge c4-judge added grade-c unsatisfactory does not satisfy C4 submission criteria; not eligible for awards labels Feb 8, 2023
@c4-judge
Copy link
Contributor

c4-judge commented Feb 8, 2023

GalloDaSballo marked the issue as grade-c

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working downgraded by judge Judge downgraded the risk level of this issue edited-by-warden grade-c QA (Quality Assurance) Assets are not at risk. State handling, function incorrect as to spec, issues with clarity, syntax unsatisfactory does not satisfy C4 submission criteria; not eligible for awards
Projects
None yet
Development

No branches or pull requests

3 participants