RToken::transferFrom
Uses Cached Liquidity Index Instead of Fetching Fresh ValueThe RToken::transferFrom
function uses the cached _liquidityIndex
value instead of fetching the latest normalized income from the lending pool. If _liquidityIndex
is outdated, transfers may be processed using an incorrect scale factor, leading to inaccurate token transfers.
In the implementation below, transferFrom
uses the cached _liquidityIndex
instead of calling ILendingPool(_reservePool).getNormalizedIncome()
like transfer
does:
Stale Index Leads to Incorrect Transfers: _liquidityIndex
is not updated dynamically, meaning if interest accrues and _liquidityIndex
has not been refreshed, the scaled amount may be inaccurate.
Transfers May Be Less or More Than Expected: If _liquidityIndex
is lower than the actual normalized income, users may transfer more tokens than required. If it's higher, transfers will be too low.
Inconsistency Between transfer
and transferFrom
: transfer
fetches the correct value from getNormalizedIncome()
, but transferFrom
does not, leading to unpredictable behavior.
Users May Lose or Gain Tokens Unexpectedly: If _liquidityIndex
is outdated, transfers will be incorrectly scaled, affecting user balances.
Potential Exploit Vector: Attackers could front-run transactions when _liquidityIndex
is stale to take advantage of incorrect transfer amounts.
Accounting Issues: A mismatch between expected and actual balances could cause issues in protocols relying on accurate token tracking.
Modify the should allow transfers between users
test case to include a case where _liquidityIndex
is outdated:
Modify transferFrom
to fetch the latest liquidity index from the lending pool instead of using the cached _liquidityIndex
:
By ensuring that both transfer
and transferFrom
use the latest liquidity index, transfers remain accurate, preventing incorrect balance calculations.
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.