PoolTogether - leegh's results

General Information

Platform: Code4rena

Start Date: 04/03/2024

Pot Size: $36,500 USDC

Total HM: 9

Participants: 80

Period: 7 days

Judge: hansfriese

Total Solo HM: 2

Id: 332

League: ETH

PoolTogether

Findings Distribution

Researcher Performance

Rank: 58/80

Findings: 1

Award: $1.47

🌟 Selected for report: 0

🚀 Solo Findings: 0

Awards

1.4652 USDC - $1.47

Labels

bug
3 (High Risk)
satisfactory
sufficient quality report
:robot:_10_group
duplicate-59

External Links

Lines of code

https://github.com/code-423n4/2024-03-pooltogether/blob/main/pt-v5-vault/src/PrizeVault.sol#L617

Vulnerability details

Impact

Yield fee shares are incorrectly reduced when claiming part of them, resulting that the remaining yield fee shares will not be able to be claimed again.

Proof of Concept

At line 617, the yieldFeeBalance is reduced by _yieldFeeBalance. However, the real claimed amount is _shares. It is possible that _shares < _yieldFeeBalance, in which case, part of the yield fee shares will be locked in the vault and will not be able to be claimed.

611:    function claimYieldFeeShares(uint256 _shares) external onlyYieldFeeRecipient {
612:        if (_shares == 0) revert MintZeroShares();
613:
614:        uint256 _yieldFeeBalance = yieldFeeBalance;
615:        if (_shares > _yieldFeeBalance) revert SharesExceedsYieldFeeBalance(_shares, _yieldFeeBalance);
616:
617:=>      yieldFeeBalance -= _yieldFeeBalance;
618:
619:        _mint(msg.sender, _shares);
620:
621:        emit ClaimYieldFeeShares(msg.sender, _shares);
622:    }

https://github.com/code-423n4/2024-03-pooltogether/blob/main/pt-v5-vault/src/PrizeVault.sol#L611-L622

Tools Used

VSCode

After claiming, decrease yieldFeeBalance by _shares instead of _yieldFeeBalance.

    function claimYieldFeeShares(uint256 _shares) external onlyYieldFeeRecipient {
        if (_shares == 0) revert MintZeroShares();

        uint256 _yieldFeeBalance = yieldFeeBalance;
        if (_shares > _yieldFeeBalance) revert SharesExceedsYieldFeeBalance(_shares, _yieldFeeBalance);

-        yieldFeeBalance -= _yieldFeeBalance;
+        yieldFeeBalance -= _shares;

        _mint(msg.sender, _shares);

        emit ClaimYieldFeeShares(msg.sender, _shares);
    }

Assessed type

Math

#0 - c4-pre-sort

2024-03-11T21:56:40Z

raymondfam marked the issue as sufficient quality report

#1 - c4-pre-sort

2024-03-11T21:56:45Z

raymondfam marked the issue as duplicate of #10

#2 - c4-pre-sort

2024-03-13T04:38:37Z

raymondfam marked the issue as duplicate of #59

#3 - c4-judge

2024-03-15T07:38:35Z

hansfriese marked the issue as satisfactory

AuditHub

A portfolio for auditors, a security profile for protocols, a hub for web3 security.

Built bymalatrax © 2024

Auditors

Browse

Contests

Browse

Get in touch

ContactTwitter