FEI and TRIBE Redemption contest - V_B's results

A new DeFi primitive that allows any token to become productive and provide FEI liquidity at no cost to the markets that need it most.

General Information

Platform: Code4rena

Start Date: 09/09/2022

Pot Size: $42,000 USDC

Total HM: 2

Participants: 101

Period: 3 days

Judge: hickuphh3

Total Solo HM: 2

Id: 161

League: ETH

Tribe

Findings Distribution

Researcher Performance

Rank: 24/101

Findings: 1

Award: $34.50

🌟 Selected for report: 0

🚀 Solo Findings: 0

1. MESSAGE constant

There is sign function in RariMerkleRedeemer. It accepts signature as a parameter and checks it is validity. Specifically, the function performs such checks.

require(ECDSA.recover(MESSAGE_HASH, _signature) == msg.sender, "Signature not valid");

According to the code,

/// @notice The message to be signed by any users claiming on cTokens string public constant MESSAGE = "Sample message, please update."; /// @notice The hash of the message to be signed by any users claiming on cTokens bytes32 public MESSAGE_HASH = ECDSA.toEthSignedMessageHash(bytes(MESSAGE));

So, the message that the user signs is Sample message, please update., seems like it should be changed to another message with useful information.

2. Redeem and Mint events

There is Redeem and Mint events in SimpleFeiDaiPSM.

/// @notice event emitted upon a redemption event Redeem(address to, uint256 amountFeiIn, uint256 amountAssetOut); /// @notice event emitted when fei gets minted event Mint(address to, uint256 amountIn, uint256 amountFeiOut);

It reasonable to make to parameter as indexed.

Also, in TribeRedeemer there is an event with analogical indexed variable:

/// @notice event to track redemptions event Redeemed(address indexed owner, address indexed receiver, uint256 amount, uint256 base);

3. Redundant hasSigned and hasNotSigned

The logic corresponding to hasSigned and hasNotSigned modifiers from RariMerkleRedeemer contract is redundant. hasSigned check that msg.sender already signed message but actally this msg.sender calls such a function, so he is always agree to call such logic. hasNotSigned also redundant it is used only before calling _sign function and makes no practical sense.

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