Back to Blog

LI.FI 공격 불법 자금 흐름 사례 연구

MetaSleuth
October 24, 2024
4 min read

불법 자금 흐름 사례 연구: LI.FI 공격

사건 배경

2024년 7월 16일, 크로스체인 브리지 및 DEX 애그리게이터인 Li.FiLi.Fi 다이아몬드 컨트랙트를 악용한 중대한 보안 침해를 경험했습니다. 약 1,160만 달러 상당의 다양한 스테이블 토큰 및 기타 자산이 사용자로부터 탈취되었습니다. 공격자는 피해 컨트랙트에 무한 승인을 부여한 사용자들의 자금을 탈취할 수 있었습니다.

취약점은 GasZipFacet 컨트랙트의 함수 depositToGasZipERC20()에 있었습니다. GasZipFacet 컨트랙트는 브리징 트랜잭션의 가스 충전을 지원하기 위해 공격 5일 전에 LI.FI 팀이 배포했습니다. depositToGasZipERC20() 함수에는 사용자가 제어할 수 있는 인수 _swapData가 포함되어 있었으며, 이는 이후 함수 호출 LibSwap.swap()에 전달되었습니다. 불행히도 LibSwap.swap에는 공격자가 제어하는 인수 _swapData에 의해 지정된 호출 대상 및 호출 데이터로 임의의 함수를 실행할 수 있는 저수준 호출이 포함되어 있었습니다. 공격자는 이 "임의 호출 취약점"을 활용하여 Li.Fi 다이아몬드 컨트랙트에 무한 승인을 부여한 사용자로부터 무단 전송을 실행했습니다.

자금 흐름 분석

2024년 7월 16일, 공격자는 임의 호출 취약점을 악용한 거의 100건에 달하는 트랜잭션을 시작하여, 30분 이내에 약 1,100만 달러 상당의 스테이블 토큰(USDT, USDC, DAI)을 주소 0x8b3c로 전송했습니다. 탈취된 스테이블 토큰 대부분은 이후 빠르게 이더리움 네이티브 토큰인 ETH로 스왑되었습니다. 공격자가 활용한 DEX에는 Uniswap, Metamask Swap 등이 포함되었습니다. 스왑 트랜잭션 예시: 0xdf9b, 0x11d, 0xb4a4.

Metamask Swap Spender와 상호작용하는 스왑 트랜잭션 0x8e27 내 자금 흐름의 예시입니다. 공격자는 불법으로 획득한 333,258 USDT를 97.16 ETH로 스왑했습니다. 모든 풀과 프록시는 MetaSleuth를 사용하여 명확하게 표시됩니다.

공격 후 2시간 이내에, 탈취된 모든 자산은 공격자가 제어하는 하위 주소로 이전되었으며 원래 공격 주소에는 아무것도 남아 있지 않습니다. 주소 0x8b3c에 직접 연결된 하위 주소(즉, 원래 공격 주소에서 1홉 거리)는 총 32개입니다. 이 중 15개 주소는 공격 주소로부터 0.1 ETH만 수신했습니다. 2024년 10월 22일 기준으로, 이 15개 주소가 보유한 ETH는 아직 전송되지 않았습니다. 나머지 주소들은 나머지 대규모 불법 자금을 처리했습니다.

피해자 주소에서 공격자가 제어하는 하위 주소로의 자금 흐름 일부:

주소 0x8b3c에서 1홉 거리의 하위 주소로 불법 자금을 이전한 후, 공격자는 자금을 일괄적으로 추가 이동하기 시작했습니다. 이전(세탁) 과정은 거의 3개월 동안 지속되었습니다. 불법 자금의 거의 전부는 결국 Tornado Cash(99.9%)로 이동되었으며, 소액은 직접 현금화를 위해 거래소 eXch로 전송되었습니다. 공격자가 Tornado Cash 라우터와 상호작용하는 데 사용한 트랜잭션은 총 114건입니다. 불법 이익을 Tornado Cash로 이동한 트랜잭션 예시: 0x07de, 0xfe82, 0x6a47, 0x8ea6. 불법 이익을 eXch로 이동한 트랜잭션 예시: 0xaa89, 0x7e65, 0x8572, 0x625c, 0x2dd2, 0xda71.

원래 공격 주소 0x8b3c에서 2홉 거리의 레이어2 주소에서 레이어4 주소로의 자금 흐름 일부:

첫 번째 대규모 일괄 이전은 공격 후 첫 번째 주인 7월 16일부터 7월 22일 사이에 발생했습니다. 공격자는 주소 0x6a6d에서 Tornado Cash로 약 50만 달러 상당의 불법 자산을 이전했습니다. 공격자의 불법 자금 이전은 뚜렷한 특징을 보였습니다. 공격 주소(고위험 주소)에서 멀리 떨어진 하위 주소로 자금을 이동하여 점진적으로 일부를 Tornado Cash로 유도했습니다. 첫 번째 일괄 이전에서 가장 긴 이전 경로는 20홉에 달했습니다. 공격자는 불법 자금 흐름을 숨기기 위해 극도로 깊은 세탁 경로를 활용했습니다. 8월부터 10월 사이에, 나머지 불법 자금은 동일한 특징을 가진 이전 배치로 점진적으로 Tornado Cash로 이전되었습니다.

주소 0x8e85(0x8b3c에서 1홉)에서 Tornado Cash 라우터로 자금을 이동하는 이전 배치의 예시:

그림에서 볼 수 있듯이, 2024년 8월 13일부터 8월 16일 사이에 공격자는 12홉 경로를 통해 206 ETH를 점진적으로 Tornado Cash로 이전했습니다. 주소 0xe9f7에서 공격자는 204 ETH를 두 개의 트랜잭션으로 분할했습니다: 100 ETH는 Tornado Cash로 전송되었고, 104 ETH는 추가 세탁 주소로 전달되었습니다. 이러한 분할 패턴은 전체 이전 과정에서 일관되게 나타났습니다. 즉, 공격자는 Tornado Cash와 관련된 각 상호작용마다 더 깊은 새로운 주소를 사용했습니다.

대응 노력

공격 이틀 후, LI.FI는 공식적으로 사고 보고서를 발표하여 모든 체인에서 취약한 컨트랙트 패싯을 성공적으로 비활성화하고 추가적인 무단 접근을 방지했다고 주장했습니다. LI.FI는 보상 계획을 시작하고 피해를 입은 사용자에게 전액 환급했습니다. 탈취된 자산 회수를 위해, 그들은 탈취된 자금을 추적하고 회수하기 위해 법 집행 기관 및 산업 보안팀을 포함한 관련 제3자와 지속적으로 협력할 것이라고 밝혔습니다. 2024년 10월 22일 기준으로, 불법 자금의 거의 전부가 Tornado Cash로 이전되었으며 Li.Fi는 아직 추적 보고서를 발표하지 않았습니다.

관련 주소 및 트랜잭션

주소 트랜잭션 불법 자금 흐름
0x8e85eace2fa757c1d97c5ebfb8b0622e5f23c5a1 0xe237, 0x0d23 206.49 ETH
0xcb7c341dc6172b642dcf4a14015be70a27e5b31e 0x050c, 0x37d4 873,568 USDT + 36.48 ETH
0x7b93fa16c04cdcf91949d4f5f893f740992ae57e 0x57ea, 0x52ac 332.02 ETH
0x3462d2523cded523ad47c14111aa1dcbe7773675 0xc66d, 0xc0ff 120.55 ETH
0xd0be9c4c84068a9964c3781f540f703c300db268 0x0c3b, 0x1670 275.38 ETH

자금 흐름 개요:

MetaSleuth에서 더 보기: https://metasleuth.io/result/eth/0x14c1597cc833783ed8ac08ecc9b704b0a398201d?source=c8cd3609-0402-45eb-bb9e-2f710bd66554

Go Deeper with MetaSleuth Investigation

Extend your crypto compliance capabilities with Blocksec's MetaSleuth Investigation, the first platform for tracing funds, mapping transaction networks and revealing hidden on-chain relationships.

Move from detection to resolution faster with clear visual insights and evidence-ready workflows across the digital assets ecosystem.

MetaSleuth Investigation