Omniscia 0xPhase Audit
PegTokenV1 Manual Review Findings
PegTokenV1 Manual Review Findings
PTV-01M: Inexistent Validation of Allowances
| Type | Severity | Location |
|---|---|---|
| Centralization Concern | ![]() | PegTokenV1.sol:L24-L29, L33-L39 |
Description:
The PegTokenV1::burnManager and PegTokenV1::transferManager functions do not validate any allowance between the from address and the caller of the function, permitting arbitrary balances to be burned / transferred.
Example:
22/// @inheritdoc IPegToken23/// @custom:protected onlyRole(MANAGER_ROLE)24function burnManager(25 address from,26 uint256 amount27) external override onlyRole(MANAGER_ROLE) {28 _burn(from, amount);29}Recommendation:
We advise the code to ensure that there is sufficient allowance between the from address and the caller (msg.sender) and to decrease it by the amount being utilized, disallowing the same allowance from being reused.
Alternatively, if the MANAGER_ROLE is meant to be held solely by system modules we advise it to be assigned only once during the contract's PegTokenV1::constructor and no further addresses to be added to it.
Alleviation (3dd3d7bf0c2693b2f9c23bacedfa420393f7ea84):
The 0xPhase team evaluated this exhibit and has stated that only system modules as well as the timelock address will be able to access MANAGER_ROLE protected functions. While they acknowledge the potential security risk, they believe that the benefit of reduced gas costs across the board outweighs them. As such, we consider this exhibit acknowledged.
