PoolTogether - Daniel526'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: 53/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
upgraded by judge
:robot:_10_group
duplicate-59

External Links

Lines of code

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

Vulnerability details

Impact

The incorrect subtraction of _yieldFeeBalance instead of _shares in the claimYieldFeeShares function can lead to an incorrect calculation of the available yield fee balance. As a result, the yield fee shares distributed to the yield fee recipient may not accurately reflect the actual available balance, potentially causing financial discrepancies and loss of funds.

Proof of Concept

The claimYieldFeeShares function in the PrizeVault contract subtracts the wrong variable when updating the yieldFeeBalance. The current implementation subtracts _yieldFeeBalance instead of _shares, which leads to an incorrect calculation of the available yield fee balance. This flaw can result in an inaccurate distribution of yield fee shares and potential loss of funds.

/// @notice Transfers yield fee shares to the yield fee recipient
/// @param _shares The shares to mint to the yield fee recipient
/// @dev Emits a `ClaimYieldFeeShares` event
/// @dev Will revert if the caller is not the yield fee recipient or if zero shares are withdrawn
function claimYieldFeeShares(uint256 _shares) external onlyYieldFeeRecipient {
    if (_shares == 0) revert MintZeroShares();
    uint256 _yieldFeeBalance = yieldFeeBalance;
    if (_shares > _yieldFeeBalance) revert SharesExceedsYieldFeeBalance(_shares, _yieldFeeBalance);
    yieldFeeBalance -= _yieldFeeBalance;
    _mint(msg.sender, _shares);
    emit ClaimYieldFeeShares(msg.sender, _shares);
}

Tools Used

Manual

The claimYieldFeeShares function should be updated to subtract _shares from yieldFeeBalance instead of _yieldFeeBalance.

Assessed type

Context

#0 - c4-pre-sort

2024-03-11T21:39:25Z

raymondfam marked the issue as sufficient quality report

#1 - c4-pre-sort

2024-03-11T21:39:30Z

raymondfam marked the issue as duplicate of #10

#2 - c4-pre-sort

2024-03-13T04:38:10Z

raymondfam marked the issue as duplicate of #59

#3 - c4-judge

2024-03-15T07:37:31Z

hansfriese changed the severity to 3 (High Risk)

#4 - c4-judge

2024-03-15T07:40:37Z

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