Back to Blog

Bybit 15억 달러 해킹: 악성 Safe 월렛 업그레이드 공격에 대한 심층 분석

Phalcon
February 25, 2025
5 min read

Bybit 거래소는 2025년 2월 21일 UTC 기준 오후 14:00경 해킹을 당했으며, 그 피해액은 15억 달러에 육박합니다 – 이는 현재까지 암호화폐 역사상 가장 큰 보안 사고입니다. 이전의 보안 침해 사례들과 달리, 이번 탈취는 스마트 컨트랙트 권한 문제로 인한 것이 아니라, Bybit이 사용하던 Safe 멀티시그 지갑의 악의적인 업그레이드로 인해 발생했습니다. 공격자는 여러 Safe 지갑 운영자들을 속여 지갑 업그레이드 트랜잭션에 서명하게 함으로써 Safe 지갑의 제어권을 성공적으로 탈취했습니다. 제어권을 장악한 후, 공격자는 자금을 모두 빼돌렸습니다.

저희는 이번 공격이 Bybit을 표적으로 삼아 치밀하게 계획된 작전이었음을 발견했으며, 공격자는 최종 공격을 감행하기 이틀 전에 이미 온체인에 공격 컨트랙트를 배포하고 테스트했습니다. 이 블로그 포스트에서는 Safe 지갑에 대한 소개를 시작으로, 전체 공격 과정을 분석하고, 마지막으로 몇 가지 보안 권고사항을 제시하겠습니다.

Safe 멀티시그 지갑이란 무엇인가

Safe 멀티시그 지갑은 스마트 컨트랙트 지갑의 일종으로, 핵심 기능은 여러 개의 키를 사용하여 트랜잭션을 승인하는 것입니다. 이 지갑은 송금이나 기타 작업을 실행하기 전에 여러 사용자(일반적으로 사전에 지정된 키 보유자들)가 트랜잭션에 서명해야 하므로, 보안성이 강화되고 단일 장애점이나 단일 키 노출의 위험을 방지합니다.

지갑이 생성될 때 여러 개의 키가 설정됩니다(일반적으로 "n-of-m" 모델 사용). 이는 여러 키 보유자 중 일정 수 이상의 서명이 있어야 트랜잭션이 실행될 수 있음을 의미합니다. 예를 들어, "3-of-5" 멀티시그 지갑은 다섯 명의 키 보유자 중 최소 세 명의 서명이 있어야 트랜잭션이 유효하다는 것을 의미합니다.

공식 Safe 웹사이트에 의존하지 않고 트랜잭션을 구성하는 방법도 있지만, 사용자 경험 측면에서 대부분의 사용자는 Safe 웹사이트를 통해 트랜잭션을 구성하고 서명하는 방식을 선택합니다. 일반적으로 사용자는 https://app.safe.global을 방문하여 트랜잭션을 구성합니다. Safe 지갑을 사용하여 트랜잭션을 구성하고 서명할 때, 사용자는 먼저 트랜잭션을 시뮬레이션하여 온체인 실행 후의 잠재적 결과를 파악하고, 이것이 자신의 기대와 일치하는지 확인합니다. 결과가 예상대로인 경우에만 운영자는 서명 프로세스를 완료하게 됩니다.

아래는 Safe 지갑의 트랜잭션 구성 인터페이스 스크린샷입니다. Safe 웹사이트가 현재 일시적으로 사용 불가 상태이므로, 다음 스크린샷은 인터넷에서 가져온 것입니다(출처: https://milkroad.com/reviews/safe-wallet/).

실제로 Safe 지갑을 사용할 때 다음과 같은 보안 위험이 존재합니다:

  • 긴 보안 체인: 사용자는 Safe 공식 웹사이트, 앱 및 백엔드 서비스를 신뢰해야 할 뿐만 아니라, 자신의 컴퓨터와 브라우저, 그리고 최종적으로 서명에 사용되는 지갑(브라우저 확장 프로그램이든 하드웨어 지갑이든)도 신뢰해야 합니다. 이 중 어느 하나라도 공격자에게 침해될 경우, 운영자는 잘못된 정보를 받을 수 있습니다(예를 들어, 인터페이스에는 일반 송금 트랜잭션으로 표시되지만 실제로는 업그레이드 트랜잭션에 서명하는 상황이 발생할 수 있습니다).

  • 하드웨어 지갑의 트랜잭션 파싱 부재: 하드웨어 지갑은 일반적으로 Safe 트랜잭션을 파싱하는 기능이 없습니다. 이는 사용자가 Safe 인터페이스에 의해 오도될 경우, 최종 서명 단계에서 교차 검증할 수단이 없어 이른바 "블라인드 서명"으로 이어진다는 것을 의미합니다.

공격 과정

최종 공격을 감행하기 전, 공격자는 이미 온체인에 공격 컨트랙트를 배포하고 테스트했습니다. 전체 공격 과정에는 여러 개의 서로 다른 주소가 관여되었습니다.

1단계: 자금 확보

공격자는 먼저 공격에 필요한 초기 자금을 확보해야 했습니다. 일반적으로 공격자들은 자신의 흔적을 숨기기 위해 믹싱 플랫폼(예: Tornado Cash)을 통해 자금을 조달합니다. 그러나 이번 경우, 공격자의 자금은 바이낸스에서 조달되었습니다. 저희는 이것이 공격자가 신원을 숨기기 위한 방법일 수 있다고 판단합니다. 믹싱 서비스의 자금 및 주소는 일반적으로 보안 기업들의 면밀한 모니터링 대상이 되는 반면, 거래소에서 나온 자금은 감시가 덜 엄격하기 때문입니다. 또한 자금이 거래소에서 나왔다 하더라도, 해당 거래소 계정이 KYC를 거치지 않았거나 KYC 정보가 위조되었을 가능성도 있습니다.

https://metasleuth.io/result/eth/0x3b48fa59c2bBdF8D00D70aC40B2CdA576fC519E3?source=5d9ab32c-e958-4a8d-864f-f1f4e79d0d0c

2단계: 컨트랙트 배포 및 테스트

실제 공격을 감행하기 전, 공격자는 일련의 테스트를 진행했습니다. 이 테스트에는 Safe 지갑 배포, 공격 컨트랙트 배포, 자체 배포한 Safe 지갑을 이용한 업그레이드 작업 수행, 그리고 업그레이드된 Safe 지갑에서 자금 추출이 포함되었습니다. 또한 테스트 중에 공격자는 제한된 범위의 자산만 실험했는데, 이는 최종적으로 Bybit에서 탈취된 지갑의 자산과 일치하는 것이었습니다. 이는 공격자가 Bybit의 Safe 지갑을 특정하여 표적으로 삼았음을 나타냅니다.

공격자는 테스트 목적으로 Safe 지갑을 생성했으며, 테스트 Safe 지갑 주소 중 하나는 다음과 같습니다:
0x509b1eDa8e9FFed34287ccE11f6dE70BFf5fEF55

공격자는 Safe 컨트랙트 업그레이드를 테스트했습니다. 다음 링크의 Phalcon Explorer에서 관련 정보를 확인할 수 있습니다:

https://app.blocksec.com/explorer/tx/eth/0x50a51f781567a003662b933fc1224a35d824ba695edce7687473800299c7d1ef

업그레이드 테스트 후, 공격자는 출금 프로세스 테스트를 진행했습니다. 다음 주소의 업그레이드된 Safe 컨트랙트에서 stEth 자산을 직접 추출했습니다:

0x509b1eda8e9ffed34287cce11f6de70bff5fef55

https://app.blocksec.com/explorer/tx/eth/0xa284658ddbe5af54bf056ea32147f0842990555510c5b752e3814dbfe0210e0c

3단계: 사용자를 속여 업그레이드 트랜잭션 구성 및 서명 유도

테스트를 완료한 후, 공격자는 사용자들을 속여 Safe 컨트랙트 업그레이드 트랜잭션을 구성하고 서명하게 만들어야 했습니다. 테스트가 이틀 전에 수행되었으므로, 기만 행위는 테스트 이후 이틀 이내에 이루어진 것으로 보입니다. 이것이 Safe 서버를 공격함으로써 달성된 것인지, 아니면 지갑 운영자들의 컴퓨터를 공격함으로써 달성된 것인지는 아직 공개적으로 확인되지 않았습니다.

4단계: 공격 실행

공격자가 충분한 수의 서명을 확보하자, 트랜잭션을 온체인에 제출하여 컨트랙트 업그레이드를 성공적으로 실행했습니다. 업그레이드 후 공격자는 자금을 빼돌렸습니다. 저희는 악의적인 업그레이드 트랜잭션이 이전 테스트 트랜잭션과 동일했음을 발견했습니다.

https://app.blocksec.com/explorer/tx/eth/0x46deef0f52e3a983b67abf4714448a41dd7ffd6d32d32da69d62081c68ad7882

교훈 및 시사점

실제로 작년에도 유사한 공격이 두 차례 발생했습니다 – Radiant 탈취 사건과 인도 거래소 WazirX 사건(피해액 2억 달러 초과)이 그것으로 – 모두 Safe 지갑을 사용하여 서명된 악의적인 트랜잭션으로 인해 발생했습니다. 이번 사건의 차이점은 이번에 서명된 트랜잭션이 컨트랙트 업그레이드 트랜잭션이었다는 점입니다. 따라서 이러한 보안 사고에서 교훈을 얻고 미래의 공격을 예방하는 것은 대량의 디지털 자산을 보유한 거래소와 프로젝트 팀이 반드시 해결해야 할 과제로 남아 있습니다. 이는 일상적인 운영, 내부 프로세스 관리, 민감한 작업에 대한 보안 프로토콜, 그리고 공격 위험을 줄이기 위한 탈중앙화 설정을 개선함으로써 달성할 수 있습니다.

둘째로, 트랜잭션 서명 과정에서 지갑이 보안 프로세스에 더 잘 참여할 수 있는 방법에 대한 문제는 아직 해결되지 않은 과제입니다. 현재, 특히 하드웨어 지갑은 일반적으로 복잡한 트랜잭션을 파싱하는 능력이 부족합니다. 더욱이 하드웨어 지갑은 인터넷에 직접 연결되지 않기 때문에, 블라인드 서명을 방지하기 위해 트랜잭션 시뮬레이션을 수행하고(그 결과를 사용자가 이해하기 쉬운 방식으로 제시하는 것)은 여전히 해결해야 할 과제입니다.

또한 BlockSec Phalcon과 같은 보안 모니터링 플랫폼을 활용하여 Safe 지갑을 모니터링하는 등 다층적인 보안 조치를 구현하여 비정상적인 동작이 즉시 감지되고 처리될 수 있도록 하는 것이 필요합니다. 실제로 Phalcon은 이미 Safe 지갑을 모니터링할 수 있는 기능을 갖추고 있으며, 저희는 향후 이러한 모니터링이 자동으로 구성될 수 있도록 제품을 지속적으로 업그레이드하여 사용자들이 Safe를 이용하여 대량의 자산을 관리할 때 위험을 피할 수 있도록 도울 것입니다. 이번 사건이 Safe 지갑 사용으로 인해 발생했지만, "Safe"를 두려워할 필요는 없습니다. Safe는 여전히 멀티시그 지갑의 사실상 표준으로, 그 컨트랙트 보안성은 시간이 지남에 따라 검증되어 왔습니다.

마지막으로, 보안 방어는 결코 단일 지점의 돌파구를 위한 전장이 아니며, 한 번 적용하면 영원히 효과를 발휘하는 만능 해결책도 존재하지 않는다는 점을 강조해야 합니다. 운영 및 비즈니스 보안을 보장하면서, 업계 참여자들은 BlockSec Phalcon을 자산 보호를 위한 최후의 방어선으로 활용할 수 있습니다.