Missing access control in the bridge contract.
The KittyBridge.sol::bridgeNftWithData()
function lacks proper access control, allowing unauthorized users to call it.
Arbitrary users can call this function and transfer tokens bypassing the intended functionality of KittyConnect.sol::bridgeNftToAnotherChain()
as long as the sender address and source chain are in the destination allow list. This will allow minting new NFTs in other chains just paying the fees associated to the bridging process.
Add the following to the current test suite:
Then run the command: forge test --mt test_maliciousUserCanBridgeNFT --fork-url $(grep -w SEPOLIA_RPC_URL .env | cut -d '=' -f2)
Manual review.
Implement access control at the beginning of the function. For example:
Note: The error KittyBridgeBase.sol::KittyBridge__NotKittyConnect()
is declared but not utilized.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.