Transfers may partially succeed/fail in unexpected ways, and balance updates may not reflect the intended transfer outcomes in ERC4626 Vault Implementation. #113
Labels
invalid
This doesn't seem right
Github username: @0xbrett8571
Twitter username: 0xbrett8571
Submission hash (on-chain): 0x23fa0b8694b08ab97bcec4e87c488557deb55b5e170f8032c5e53171d81aa2ff
Severity: high
Description:
Description
The InvestToken vault implementation contains a vulnerability in its share price calculation mechanism. The interaction between YieldOracle price updates and vault operations allows manipulation of the share-to-asset ratio, potentially leading to significant value extraction.
The issue manifests in the
_update
function implementation across the token contracts.USDE.sol#L81-L91
InvestToken.sol#L104-L114
The validator checks are not atomic - between two transfers in the same block, the validator status could change, causing the second transfer to fail while the first succeeds. This breaks the atomicity assumption. Validators could be manipulated by MEV bots to extract value
Validator.sol#L129-L144
The protocol's transfer validation mechanism lacks atomic guarantees when multiple transfers occur within the same block. This creates a race condition where validator status changes can occur between transfers, leading to inconsistent validation results.
This vulnerability directly affects the core transfer functionality of both USDE and InvestToken, impacting all protocol users and integrated systems.
Attack Scenario
Explanation of the two attack scenarios demonstrated:
Vulnerabilities:
Attachments
This file demonstrates the transfer atomicity and Price Manipulation vulnerability.
Logs:
I. Transfer Atomicity.
II. Price Manipulation.
maxPriceIncrease
limitThe text was updated successfully, but these errors were encountered: