Back to Blog

#8: 스시스왑 사건: 어설픈 구조 시도가 연쇄 모방 공격으로 이어지다

Code Auditing
February 18, 2024
5 min read

2023년 4월 9일, SushiSwap은 검증되지 않은 외부 파라미터로 인한 익스플로잇의 표적이 되었습니다. 총 손실액은 약 330만 달러입니다.

상당한 사용자 기반을 보유한 이더리움의 선도적인 프로토콜로서, 이러한 최상위 프로토콜조차도 컨트랙트 업그레이드 중에 심각한 새로운 문제가 발생할 수 있습니다. 이는 보안이 항상 최우선 순위여야 한다는 것을 DeFi 커뮤니티에 상기시켜 줍니다. 더욱이, 이 보안 사고는 화이트햇 보안 연구자의 구조 시도로 인해 촉발되어 커뮤니티 내에서 상당한 논쟁을 불러일으켰으며, 우리는 이 사고를 2023년 10대 보안 사고 중 하나로 선정하여 간략하게 소개합니다.

배경

SushiSwap

저명한 DEX인 SushiSwap은 Uniswap을 대상으로 뱀파이어 공격을 감행하여 엄청난 성공을 거두었습니다. 최고조에 달했을 때 TVL은 80억 달러에 달했으며, 현재도 약 4억 달러를 유지하고 있습니다.

승인(Approval)

요약하자면: 특정 토큰을 지갑에서 접근하고 전송할 수 있도록 컨트랙트에 권한을 부여하는 것입니다.

편의를 위해 많은 컨트랙트는 기본적으로 무제한 승인을 요청합니다. 보안 위험을 우려하는 많은 사용자들은 다양한 프로토콜에 소액만 예치합니다. 그러나 이러한 사용자들은 프로토콜에 무제한 자금 승인을 부여하며, 프로토콜이 침해될 경우 계정에서 승인된 모든 토큰이 손실될 수 있습니다.

취약점

검증되지 않은 외부 파라미터

RouteProcessor2 컨트랙트의 processRoute()는 사용자가 호출 흐름(파라미터 route)을 완전히 제어할 수 있도록 허용합니다. 그리고 uniswapV3SwapCallback()에서 safeTransferFrom()의 파라미터 from은 사용자가 제공한 route에서 디코딩됩니다. 결과적으로, RouteProcessor2 컨트랙트를 승인한 사용자들은 자산을 잃었습니다.

공격 과정

이 사고에는 여러 공격 트랜잭션이 포함되었지만, 첫 번째 공격 트랜잭션을 예시로 사용하겠습니다. 트랜잭션: 0x43ff7e01423044cfb501b4fe9ef1386725c0ddc117dadd6e6620cb68bdeaf4f9

  1. 공격자는 신중하게 구성된 긴 인수 route를 사용하여 취약한 RouteProcessor2 컨트랙트의 processRoute()를 호출했습니다.
  2. processRouteInternal()은 사용자가 제공한 route를 기반으로 InputStream을 생성합니다.
  3. 트랜잭션은 공격자의 route를 따라 swapUniV3()에 도달했습니다. poolstream에서 디코딩된다는 점에 주목하세요. 이는 공격자가 swap()pool을 제어하여 이를 lastCalledPool로 설정했음을 의미합니다.
  4. 이로 인해 공격자가 배포한 악성 컨트랙트가 호출되었으며, 공격자는 단순히 악성 calldata를 전달하여 RouteProcessor2의 uniswapV3SwapCallback()을 콜백했습니다.
  5. uniswapV3SwapCallback()은 msg.sender 검사를 요구하지만, lastCalledPool이 이미 악성 컨트랙트로 설정되어 있었기 때문에 해커는 이 검사를 우회했습니다. 중요한 것은, safeTransferFrom()의 파라미터 from이 공격자가 구성한 calldata에서 디코딩되었다는 점입니다.
  6. 피해자의 자산이 공격자가 배포한 악성 컨트랙트로 전송됩니다.

논란이 된 화이트햇 구조 시도

@trust__90이라는 사용자명의 화이트햇이 이 문제를 발견하고 자금 구조를 시도했지만, 이 구조 시도는 오히려 재앙을 초래했다는 점을 언급할 필요가 있습니다.

  • 비공개 RPC 대신 멤풀을 통해 트랜잭션을 브로드캐스트했습니다.
  • 위험에 처한 모든 자금 대신 100 이더만 구조하려 했습니다.

이로 인해 MEV 봇과 다른 공격자들이 여러 모방 트랜잭션을 실행할 수 있는 문이 열렸으며, 결과적으로 대부분의 자금이 유출되었습니다. 이러한 사건 이후, @trust__90은 비난을 받았으며 자신의 행동을 변호하려 했습니다.

BlockSec의 구조

이 공격에서 우리도 100 이더를 구조하여 피해자인 0xsifu에게 자금을 반환했습니다.

현재까지 우리는 실제 해킹 시도 20건 이상을 성공적으로 저지하고 1,400만 달러 이상의 자산을 구조했습니다.

보안 권고사항

업그레이드는 항상 감사를 받아야 합니다

이는 DeFi 커뮤니티에 보안이 항상 최우선 순위여야 한다는 것을 상기시켜 줍니다. 감사가 보안을 보장하지는 않지만, 감사의 부재는 분명히 안전을 보장하지 않습니다.

승인 문제에 대한 완화 방법

2023년에는 승인 공격과 관련된 수많은 사고가 발생했으며, 우리는 이 기회를 통해 승인 관리의 중요성을 다시 한번 강조합니다. 보안적 실천 방법은 필요한 금액만 승인하거나, 편의성이 우선시된다면 필요한 금액보다 약간 더 많은 금액을 승인하는 것입니다.

BlockSec의 MetaSuites는 편리한 승인 진단 기능을 제공합니다. 또한 Revoke Cash와 같은 도구를 사용하여 정기적으로 승인 상태를 확인할 수 있습니다.

모니터링 및 자동 대응 메커니즘 도입

이더리움은 어두운 숲이며, DeFi 커뮤니티의 모든 구성원은 보안 전문가조차도 다양한 위험과 도전에 직면합니다. 2023년에 우리는 공격을 모니터링하는 것뿐만 아니라 실시간으로 위협을 적극적으로 차단하도록 설계된 업계 최초의 자동화 대응 시스템인 Phalcon Security를 출시했습니다. Phalcon의 실전에서 검증된 역량은 실제 해킹 시도 20건 이상을 성공적으로 저지하고 1,400만 달러 이상의 자산을 구조함으로써 그 효과를 입증했습니다. 이 혁신은 모든 이해관계자들이 자신의 투자를 보호하기 위한 사전 예방 조치가 마련되어 있다는 것을 알고 더욱 안심하고 밤을 보낼 수 있도록 보장합니다.

이 시리즈의 다른 글 읽기:

Sign up for the latest updates
~$160만 손실: Moke 토큰, LpdFi 익스플로잇 | BlockSec 위클리
Security Insights

~$160만 손실: Moke 토큰, LpdFi 익스플로잇 | BlockSec 위클리

2026년 8월 3~9일, BNB 체인에서 2건의 보안 사고가 발생해 총 약 160만 달러의 손실이 발생했으며, 모두 가격 조작이 원인이었습니다. LpdFi(약 69.7만 달러)는 PancakeSwap 유동성 풀을 주문 평가와 이자 정산에 동시 사용해 공격자가 원금을 부풀리고 과도한 이자를 탈취했습니다. Moke Token(약 90.6만 달러)은 조작 가능한 현물 가격과 중복 LP 배당 회계를 결합해 MOKE를 부풀려 BNB 배당을 반복 수령했습니다.

COLDCARD 사건: 지갑의 "무작위" 시드가 무작위가 아니었을 때
Security Insights

COLDCARD 사건: 지갑의 "무작위" 시드가 무작위가 아니었을 때

COLDCARD 펌웨어의 빌드 통합 버그로 비트코인 시드 생성이 취약한 소프트웨어 RNG로 라우팅되어 지갑 시드가 오프라인 복구 가능해졌습니다. 시드 자체의 취약점이므로 펌웨어 업데이트로 해결 불가하며, 2026년 8월 7일 기준 확인된 피해는 1,405 BTC(~9,100만 달러), 비공개 추정치는 최대 2,055 BTC입니다.

~$88M 손실: COLDCARD 및 LULA 익스플로잇 | BlockSec 위클리
Security Insights

~$88M 손실: COLDCARD 및 LULA 익스플로잇 | BlockSec 위클리

2026년 7월 27일~8월 2일, 비트코인과 BNB 체인에서 약 8,800만 달러 손실을 유발한 두 건의 보안 사고가 발생했습니다. COLDCARD 사고는 하드웨어 지갑 펌웨어의 엔트로피 오류로, RNG 매크로 활성화 여부 미확인으로 결정론적 폴백이 실행되어 약 1,370 BTC(~8,800만 달러)가 탈취됐습니다. BNB 체인의 LULA 토큰은 비즈니스 로직 취약점으로 `recycle()` 함수가 악용되어 PancakeSwap V2 유동성에서 약 57만 8천 달러가 유출됐습니다.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit