Skip to content

Fix missing blacklist checks in NativeFiatTokenV2_2 authorization functions - #655

Open
Kewe63 wants to merge 4 commits into
circlefin:masterfrom
Kewe63:fix/native-fiat-token-blacklist-bypass
Open

Fix missing blacklist checks in NativeFiatTokenV2_2 authorization functions#655
Kewe63 wants to merge 4 commits into
circlefin:masterfrom
Kewe63:fix/native-fiat-token-blacklist-bypass

Conversation

@Kewe63

@Kewe63 Kewe63 commented Apr 10, 2026

Copy link
Copy Markdown

Summary

NativeFiatTokenV2_2 was missing notBlacklisted(from) and notBlacklisted(to) modifiers on all four EIP-3009 authorization functions. This allowed blacklisted addresses to bypass compliance controls via authorized transfers.

Problem

The parent contract FiatTokenV2_2 correctly enforces blacklist checks on these functions. However, NativeFiatTokenV2_2 dropped these modifiers when overriding, creating a security vulnerability.

Affected functions:

  • transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,bytes)
  • transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)
  • receiveWithAuthorization(address,address,uint256,uint256,uint256,bytes32,bytes)
  • receiveWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)

Fix

Added notBlacklisted(from) and notBlacklisted(to) modifiers to all four functions, restoring parity with the parent contract FiatTokenV2_2.

Impact

Without this fix, blacklisted accounts could transfer tokens through EIP-3009 authorized transfers, completely bypassing the AML/compliance blacklist mechanism.

Kewe63 added 4 commits April 10, 2026 10:15
- Update @typechain/ethers-v6 from 0.4.3 to 0.5.1
- Update typechain from 8.3.1 to 8.3.2
- Resolves peer dependency conflicts that break project setup
…ctions

Add notBlacklisted(from) and notBlacklisted(to) modifiers to all four
EIP-3009 authorization functions in NativeFiatTokenV2_2 that were
missing them: transferWithAuthorization (bytes signature overload),
transferWithAuthorization (v,r,s overload), receiveWithAuthorization
(bytes signature overload), and receiveWithAuthorization (v,r,s overload).

The parent contract FiatTokenV2_2 correctly enforces blacklist checks on
these functions, but NativeFiatTokenV2_2 dropped them when overriding,
allowing blacklisted addresses to bypass compliance controls via
EIP-3009 authorized transfers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant