피드로 돌아가기
The CrossCurve $3M Bridge Exploit: How One Missing Check Let Attackers Forge Cross-Chain Messages
Dev.toDev.to
Security

CrossCurve 브릿지가 expressExecute() 함수에서 단일 접근 제어 검증만 수행해 공격자가 $3M을 횡령

The CrossCurve $3M Bridge Exploit: How One Missing Check Let Attackers Forge Cross-Chain Messages

ohmygod2026년 3월 28일6intermediate

Context

CrossCurve 브릿지는 Axelar의 GMP(General Message Passing)를 통해 크로스체인 메시지를 릴레이했으나, ReceiverAxelar 계약의 expressExecute() 함수가 공개적으로 호출 가능하고 메시지 출처 검증이 부재했다. 공격자는 이를 악용해 Arbitrum, Ethereum 등 여러 체인에서 위조된 크로스체인 메시지를 직접 생성하여 토큰 언락을 트리거할 수 있었다.

Technical Solution

  • 레이어 1 - 출처 인증 추가: msg.sender가 axelarGateway 주소와 일치함을 require 문으로 검증
  • 레이어 1 - 게이트웨이 명령 검증 추가: IAxelarGateway의 validateContractCall() 메서드를 호출하여 commandId, sourceChain, sourceAddress, payload가 실제로 Axelar 검증자에 의해 승인되었는지 암호학적으로 확인
  • 레이어 2 - 화이트리스트 검증 추가: sourceAddress를 신뢰할 수 있는 Portal 주소 화이트리스트와 비교하여 스푸핑된 출처 주소 차단
  • 레이어 3 - 다중 보호자 확인 추가: 토큰 해제 승인 시 단일 보호자(또는 공개 함수) 대신 N개 보호자 중 M개 이상의 서명 요구
  • 레이어 4 - 방어 심화 추가: 레이트 리밋, 시간 지연, 실시간 모니터링을 구현하여 검증 우회 시에도 손실을 수천 달러 수준으로 제한

Impact

아티클은 CrossCurve의 손실액 약 $3M을 언급했으며, 제안된 4계층 방어 모델 도입 시 유사한 공격의 손해를 "수천 달러 수준"으로 제한 가능하다고 제시했으나, 구체적 성능 수치(지연 시간, 처리량 등)는 제공하지 않았다.

Key Takeaway

크로스체인 브릿지는 "누가 이 메시지를 보냈는가"를 암호학적으로 증명할 수 없으면 전체 TVL이 바운티가 된다. 빠른 경로(fast-path) 함수일수록 검증을 생략해서는 안 되며, 단일 보호자 확인(confirmation threshold = 1)은 확인 없음과 동일하므로 다층 방어를 필수로 구현해야 한다.


크로스체인 브릿지를 구축하는 팀은 모든 공개 실행 함수(특히 expressExecute() 같은 고속 경로)에 대해 (1) 메시지 발신자가 권한있는 게이트웨이인지 검증, (2) 게이트웨이의 validateContractCall()로 메시지 진위 확인, (3) sourceAddress를 출처 화이트리스트와 대조, (4) 다중 보호자 서명 요구 등 4계층 검증을 의무적으로 구현하면 메시지 위조 공격으로 인한 $M 규모 손실을 방지할 수 있다.

원문 읽기
The CrossCurve $3M Bridge Exploit: How One Missing Check Let Attackers Forge Cross-Chain Messages | Devpick