This repository has been archived by the owner on Jul 14, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Krace - Users can still redeem their assets even after the collateral has been disabled. #29
Labels
Non-Reward
This issue will not receive a payout
Comments
github-actions
bot
added
Excluded
Excluded by the judge without consulting the protocol or the senior
Duplicate
A valid issue that is a duplicate of an issue with `Has Duplicates` label
and removed
Excluded
Excluded by the judge without consulting the protocol or the senior
labels
Jan 14, 2024
13 tasks
sherlock-admin
changed the title
Genuine Carbon Snake - Users can still redeem their assets even after the collateral has been disabled.
Krace - Users can still redeem their assets even after the collateral has been disabled.
Jan 24, 2024
sherlock-admin
added
Non-Reward
This issue will not receive a payout
and removed
Duplicate
A valid issue that is a duplicate of an issue with `Has Duplicates` label
labels
Jan 24, 2024
gitcoindev
added a commit
to gitcoindev/ubiquity-dollar
that referenced
this issue
Feb 6, 2024
Also add a unit test that verifies the check. Resolves: sherlock-audit/2023-12-ubiquity-judging#29
molecula451
pushed a commit
to ubiquity/ubiquity-dollar
that referenced
this issue
Feb 6, 2024
Also add a unit test that verifies the check. Resolves: sherlock-audit/2023-12-ubiquity-judging#29
molecula451
added a commit
to ubiquity/ubiquity-dollar
that referenced
this issue
Mar 1, 2024
* fix: deprecate incentive on dollar token * chore: update * chore: update * Fix set role admin (#880) * feat: add setRoleAdmin to AccessControlFacet The setRoleAdmin can be only accessed by the admin. * feat: add setRoleAdmin to AccessControl interface * test: add testSetRoleAdmin_ShouldSetAdminRoleForGivenRole test * feat: update access control for setRoleAdmin * test: fix ShouldSetAdminRoleForGivenRole and add test for revert * feat: add getRedeemCollateralBalance() method * fix: remove balanced reserves check (#883) * fix: limit AMO minter borrow amount (#882) * fix: limit AMO minter borrow amount * test: assert free collateral amount * fix: do not allow to mint dollar with zero collateral Resolves: sherlock-audit/2023-12-ubiquity-judging#207 * test: add testMintDollar_ShouldRevert_IfZeroCollateralAvailable * test: update comment in zero collateral mint test * Update block count in a week (#891) * feat: implement BlocksInWeek script task The BlocksInWeek task provides a very close approximate of number of blocks mined during one week. Supported networks: mainnnet, sepolia. Example usage: npx tsx scripts/task/task.ts BlocksInWeek --network=mainnet npx tsx scripts/task/task.ts BlocksInWeek --network=sepolia Resolves: sherlock-audit/2023-12-ubiquity-judging#230 * feat: update weekly block count to 49930 Set weekly block count to 49930 as measured in February 2024 npx tsx scripts/task/task.ts BlocksInWeek --network=mainnet ... Calculating number of blocks in the last week... Recent average block time: 12 seconds Estimated blocks in a week best case 50400 Produced 49930 blocks, 470 worst than the best case Resolves: sherlock-audit/2023-12-ubiquity-judging#230 * feat: rename task function to funcBlocksInAWeek As proposed during pull request review. * feat: use CurveStableSwapMetaNG contract * refactor: update migrations to use latest metapool * refactor: deprecate IMetaPool * refactor: remove MockTWAPOracleDollar3pool * refactor: remove TWAPOracleDollar3poolFacet * refactor: remove MockMetaPool * refactor: remove LibTWAPOracle * fix(dapp): remove TWAP oracle ABI import * refactor(frontend): use ICurveStableSwapMetaNG for TWAP * feat: check if collateral is enabled in collectRedemption (#894) Also add a unit test that verifies the check. Resolves: sherlock-audit/2023-12-ubiquity-judging#29 --------- Co-authored-by: molecula451 <[email protected]> Co-authored-by: korrrba <[email protected]> Co-authored-by: Korrrba <[email protected]>
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Krace
high
Users can still redeem their assets even after the collateral has been disabled.
Summary
The
collectRedemption
function, responsible for collecting collateral tokens after redeeming Ubiquity Dollars, currently lacks a check to verify whether the collateral has been disabled. This omission could allow users to redeem disabled collateral from the contract.Vulnerability Detail
Redeem process is split in two steps:
redeemDollar()
will burn users' Ubiquity Dollar and record the amounts of collateral users could receive.collectRedemption()
send the collateral to the users.However, only the first function,
redeemDollar
, checks if the collateral is enabled. This means that if a collateral is disabled afterredeemDollar
, users could still obtain the collateral through thecollectRedemption
function.Impact
Users might have the ability to redeem disabled collateral from the contract.
Code Snippet
https://github.com/sherlock-audit/2023-12-ubiquity/blob/d9c39e8dfd5601e7e8db2e4b3390e7d8dff42a8e/ubiquity-dollar/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol#L399-L406
https://github.com/sherlock-audit/2023-12-ubiquity/blob/d9c39e8dfd5601e7e8db2e4b3390e7d8dff42a8e/ubiquity-dollar/packages/contracts/src/dollar/libraries/LibUbiquityPool.sol#L476-L478
Tool used
Manual Review
Recommendation
It's recommended to add a check in the function
collectRedemption
.Duplicate of #23
The text was updated successfully, but these errors were encountered: