Omniscia Nexera Audit
FractionERC20PausableDataManager Manual Review Findings
FractionERC20PausableDataManager Manual Review Findings
FEP-01M: Inexistent Override of Burn / Mint Capabilities
| Type | Severity | Location |
|---|---|---|
| Logical Fault | ![]() | FractionERC20PausableDataManager.sol:L21 |
Description:
The FractionERC20PausableDataManager contract implementation does not override the relevant OmnichainERC20Burnable and OmnichainERC20Mintable burn and mint capabilities, permitting sensitive functionality such as FractionERC20DataManager::partiallyUnlockWrappedAssets to remain accessible in a paused state.
Impact:
We consider this issue to be of medium severity as an attempted recovery from a malicious account (i.e. after an exploit and consequent pause of the system) can be sabotaged by the malicious party burning all their funds.
Example:
41/// @inheritdoc OmnichainERC20Transfers42function transfer(address to, uint256 amount) public virtual override(IERC20, OmnichainERC20Transfers) onlyNotPausedTransfers(to) returns (bool) {43 return super.transfer(to, amount);44}45
46/// @inheritdoc OmnichainERC20Transfers47function transferFrom(48 address from,49 address to,50 uint256 amount51) public virtual override(IERC20, OmnichainERC20Transfers) onlyNotPausedTransfers(to) returns (bool) {52 return super.transferFrom(from, to, amount);53}54
55/// @inheritdoc OmnichainERC20Transfers56function transfer(57 OmnichainAddress to,58 uint256 amount59) public payable virtual override(OmnichainERC20Transfers) onlyNotPausedOmnichainTransfers(to) returns (bool) {60 return super.transfer(to, amount);61}62
63/// @inheritdoc OmnichainERC20Transfers64function transferFrom(65 address from,66 OmnichainAddress to,67 uint256 amount68) public payable virtual override(OmnichainERC20Transfers) onlyNotPausedOmnichainTransfers(to) returns (bool) {69 return super.transferFrom(from, to, amount);70}Recommendation:
As the system indicates that the pausability feature is meant to be utilized in tandem with a recovery mechanism (i.e. FractionERC20PausableRecoveryDataManager), we advise the relevant burn and mint capabilities to be overridden.
Alleviation:
The relevant mint and burn capabilities have been overridden as advised, alleviating this exhibit.
FEP-02M: Insufficient Override of Omnichain Transfer Capabilities
| Type | Severity | Location |
|---|---|---|
| Logical Fault | ![]() | FractionERC20PausableDataManager.sol: • I-1: L56-L61 • I-2: L64-L70 |
Description:
The FractionERC20PausableDataManager contract fails to override the OmnichainERC20Transfers::transfer(OmnichainAddress,uint256,address) and OmnichainERC20Transfers::transferFrom(address,OmnichainAddress,uint256,address) function signatures, thereby failing to prevent transfers when they are invoked.
Impact:
Transfers through the OmnichainERC20Transfers functions that contain an explicit refund address bypass pausability restrictions, permitting the pause security feature of the system to be circumvented.
Example:
55/// @inheritdoc OmnichainERC20Transfers56function transfer(57 OmnichainAddress to,58 uint256 amount59) public payable virtual override(OmnichainERC20Transfers) onlyNotPausedOmnichainTransfers(to) returns (bool) {60 return super.transfer(to, amount);61}62
63/// @inheritdoc OmnichainERC20Transfers64function transferFrom(65 address from,66 OmnichainAddress to,67 uint256 amount68) public payable virtual override(OmnichainERC20Transfers) onlyNotPausedOmnichainTransfers(to) returns (bool) {69 return super.transferFrom(from, to, amount);70}Recommendation:
We advise them to be properly overridden similarly to the FractionERC1155PausableDataManager contract implementation.
Alleviation:
All omnichain transfer variants are properly overridden in the updated implementation, alleviating this exhibit.

