UpgradeableProxy.sol implements the OpenZeppelin TransparentUpgradeableProxy which recommends to leave 50 total storage gaps and the implementation leaves 49 unused storage slots but the UpgradeableProxy.sol contract actually has 2 used slots, as described here - https://github.com/Cyfrin/2024-08-tadle/blob/main/src/proxy/UpgradeableProxy.sol#L17 - one for the admin and the other one for the tadleFactory leaving the free gaps to be 48.
Vulnerabilty can be found in the end of the code, in this line in the code - https://github.com/Cyfrin/2024-08-tadle/blob/main/src/proxy/UpgradeableProxy.sol#L44C4-L44C31
It has already two used storage slots, first for the admin address and the second one for the tadleFactory address which leaves 48 storage slots free and not 49
If another storage variable is added in the future, this will lead to a storage collision.
Manual review
Change the gap to:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.