Back to Blog

#2 Bybit 사건: Web2 침해로 인한 역사상 최대 규모의 암호화폐 해킹

Code Auditing
February 9, 2026
4 min read

2025년 2월 21일, Bybit은 공격자가 소셜 엔지니어링을 통해 Safe{Wallet} 개발자의 머신을 침해한 후 약 15억 달러를 탈취당했습니다. 공격자는 Bybit의 트랜잭션을 특정적으로 겨냥하여 Safe{Wallet}의 AWS S3 버킷에 악성 JavaScript를 주입했습니다. 주입된 코드는 서명 과정에서 트랜잭션 내용을 변조했으며, Safe{Wallet} UI는 정상적인 트랜잭션을 표시하는 동안 실제로 서명자의 Ledger 장치에 전송된 페이로드는 Bybit의 Safe 컨트랙트를 악성 구현체로 업그레이드하여 공격자에게 완전한 제어권을 부여했습니다. 서명 및 실행이 완료되자 공격자는 컨트랙트에서 모든 자산을 탈취했습니다. 자세한 기술적 분석은 이전 보고서 [1]에서 확인할 수 있습니다.

배경

Safe{Wallet}(GnosisSafe라고도 함)은 n-of-m 모델을 사용하는 멀티시그 지갑 인프라로, 트랜잭션을 실행하려면 m명의 전체 서명자 중 최소 n개의 서명이 필요합니다.

각 Safe 지갑은 프록시 컨트랙트로 배포됩니다. 이 사건에서 핵심이 되는 두 가지 스토리지 변수가 있습니다:

  • masterCopy (슬롯 0): 구현 컨트랙트의 주소입니다. 이 컨트랙트에는 서명 검증 및 업그레이드 메커니즘을 포함한 모든 실행 로직이 포함되어 있습니다. 프록시는 delegatecall을 통해 모든 호출을 masterCopy에 위임합니다.
  • threshold (슬롯 4): 필요한 최소 서명 수(n)입니다. Bybit의 Safe의 경우 이 값은 3이었습니다.

프록시가 delegatecall을 사용하기 때문에 masterCopy에서 호출된 모든 함수는 프록시의 스토리지 컨텍스트에서 실행됩니다. 이는 delegatecall 대상이 슬롯 0의 masterCopy를 직접 덮어쓸 수 있으며, 단일 트랜잭션으로 전체 구현체를 교체할 수 있음을 의미합니다.

취약점 분석

공격 경로는 시스템의 세 가지 계층을 통과했으며, 각 계층에는 공격자가 활용한 구조적 조건이 존재했습니다:

프론트엔드 서빙 모델. Safe{Wallet} 프론트엔드 JavaScript는 AWS S3 버킷에서 제공되었습니다. 이 아키텍처에서는 버킷에 대한 쓰기 권한을 가진 누구든 서명자를 위한 트랜잭션을 구성하는 코드를 수정할 수 있습니다. 서브리소스 무결성(SRI) 해시나 코드 서명과 같은 무결성 검증 메커니즘이 이러한 위험을 완화할 수 있지만, 대부분의 dApp 프론트엔드에서는 아직 표준 관행으로 자리잡지 못했습니다. 공격자는 침해된 개발자 머신을 통해 쓰기 권한을 획득하고 제공되는 JavaScript를 은밀하게 수정했습니다.

UI 표시와 서명 페이로드 간의 괴리. 주입된 JavaScript는 Safe{Wallet} UI에 정상적으로 보이는 트랜잭션을 표시하면서 Ledger 하드웨어 지갑에는 다른 페이로드를 전송했습니다. Ledger 화면에 표시된 트랜잭션 세부 정보는 UI와 달랐겠지만, 하드웨어 지갑 화면에서 원시 트랜잭션 데이터를 해석하는 것은 특히 복잡한 멀티시그 작업의 경우 쉽지 않습니다. 이 괴리로 인해 공격자는 악성 페이로드에 대한 세 개의 유효한 서명을 수집할 수 있었습니다.

프록시 업그레이드 모델. 배경 섹션에서 설명한 바와 같이, delegatecall은 대상의 코드를 프록시의 스토리지 컨텍스트에서 실행합니다. Safe 프록시 아키텍처는 슬롯 0의 단일 masterCopy 포인터를 통해 모든 호출을 라우팅합니다. 이 포인터를 덮어쓰면 단일 트랜잭션으로 서명 검증 로직을 포함한 완전히 다른 구현체로 프록시를 리다이렉트할 수 있습니다. n-of-m 모델은 트랜잭션을 시작할 수 있는 주체를 제어하지만, 트랜잭션이 승인되고 실행된 후에는 구현체 자체를 변경할 수 있습니다. 새 구현체가 서명 검증을 제거하면, 이후의 모든 트랜잭션에서 멀티시그 보호가 사실상 무력화됩니다.

공격 분석

공격은 악성 코드 주입, 구현체 교체, 자산 탈취의 세 단계로 진행되었습니다.

1단계: 악성 코드 주입

공격자는 Safe{Wallet} 개발자의 머신을 침해하고 프론트엔드를 제공하는 AWS S3 버킷에 악성 JavaScript를 주입했습니다. 주입된 코드는 Bybit의 Safe 주소에서 발생하는 트랜잭션을 특정적으로 겨냥했습니다. Bybit CEO Ben Zhou [2]에 따르면, Safe{Wallet} UI는 정상적인 트랜잭션을 표시했지만, 서명자의 Ledger 장치에는 다른 페이로드가 전송되었습니다. 서명자들은 UI에 표시된 트랜잭션을 승인했고, 이로써 공격자는 악성 페이로드에 대한 세 개의 유효한 서명을 획득했습니다.

2단계: 구현체 교체

공격자는 수집된 세 개의 서명과 함께 악성 트랜잭션을 제출했습니다. Safe 프록시는 호출을 masterCopy에 위임했고, masterCopyexecTransaction() 함수는 서명을 검증한 후 트랜잭션 페이로드를 실행했습니다: 공격자의 컨트랙트(0x962214...5c7242)로의 delegatecall이었습니다. 이 delegatecall은 프록시의 스토리지 컨텍스트에서 실행되므로, 공격자의 transfer() 함수는 슬롯 0의 masterCopy 값을 악성 구현체 주소(0xbDd077...9516)로 덮어썼습니다. 이 시점부터 Safe 컨트랙트에 대한 모든 호출은 공격자의 코드로 위임되었습니다.

3단계: 자산 탈취

masterCopy가 이제 공격자의 구현체를 가리키게 되면서 멀티시그 요건이 더 이상 적용되지 않게 되었습니다. 공격자는 Safe 컨트랙트에서 직접 SweepERC20()SweepETH()를 호출했습니다. 공격자의 구현체 컨트랙트에 정의된 이 함수들은 서명 검증 없이 보유한 모든 자산을 이전했습니다. 총 다섯 건의 탈취 트랜잭션이 실행되었으며, 손실액은 약 15억 달러에 달했습니다.

관련 컨트랙트 및 트랜잭션

유형 설명 주소 / 해시
컨트랙트 Bybit의 Safe 컨트랙트 0x1Db92e2EeBC8E0c075a02BeA49a2935BcD2dFCF4
컨트랙트 원본 masterCopy 컨트랙트 0x34CfAC646f301356fAa8B21e94227e3583Fe3F5F
컨트랙트 악성 masterCopy 컨트랙트 0xbDd077f651EBe7f7b3cE16fe5F2b025BE2969516
컨트랙트 공격자의 컨트랙트 (즉, transfer()) 0x96221423681A6d52E184D440a8eFCEbB105C7242
트랜잭션 masterCopy 컨트랙트를 교체한 트랜잭션 0x46deef0f52e3a983b67abf4714448a41dd7ffd6d32d32da69d62081c68ad7882
트랜잭션 15,000 cmETH를 탈취한 트랜잭션 0x847b8403e8a4816a4de1e63db321705cdb6f998fb01ab58f653b863fda988647
트랜잭션 90,375 stETH를 탈취한 트랜잭션 0xa284a1bc4c7e0379c924c73fcea1067068635507254b03ebbbd3f4e222c1fae0
트랜잭션 8,000 mETH를 탈취한 트랜잭션 0xbcf316f5835362b7f1586215173cc8b294f5499c60c029a3de6318bf25ca7b20
트랜잭션 401,346 ETH를 탈취한 트랜잭션 0xb61413c495fdad6114a7aa863a00b2e3c28945979a10885b12b30316ea9f072c
트랜잭션 90 USDT를 탈취한 트랜잭션 0x25800d105db4f21908d646a7a3db849343737c5fba0bc5701f782bf0e75217c9

요약

이번 사건은 오프체인 인프라의 침해가 어떻게 온체인에서의 치명적인 손실로 이어질 수 있는지를 보여주었습니다. 공격자는 Web2 침해, 프론트엔드 조작, 프록시 업그레이드를 연결하여 온체인 취약점을 악용하지 않고도 멀티시그 보호를 우회하는 단일 공격 경로를 구성했습니다.

주요 교훈:

  • 프론트엔드 무결성은 온체인 보안과 동일한 수준의 주의를 받아야 합니다. 공격 체인은 프론트엔드 서빙 계층에서 시작되었습니다. dApp이 점점 더 고가치 트랜잭션을 중개함에 따라, 무결성 검증(SRI, 코드 서명, 재현 가능한 빌드)을 통한 프론트엔드 코드 보호와 무단 변경 모니터링이 기본 요건이 되고 있습니다.
  • 하드웨어 지갑 검증은 실제로 여전히 어렵습니다. 하드웨어 지갑은 실제 서명 페이로드를 표시할 수 있지만, 작은 화면에서 복잡한 멀티시그 트랜잭션 데이터를 해석하는 것은 알려진 사용성 문제입니다. 장치 내 트랜잭션 요약의 가독성 향상은 지갑 생태계의 미해결 과제입니다.
  • 프록시 업그레이드 메커니즘은 고영향 공격 대상입니다. Safe 프록시 아키텍처는 모든 로직을 단일 업그레이드 가능한 포인터를 통해 라우팅합니다. 단일 단계 구현체 교체를 허용하는 메커니즘은 위험을 집중시킵니다. 업그레이드에 타임락, 보조 확인 단계, 또는 독립적인 가디언을 추가하면 단일 침해 트랜잭션의 영향을 줄일 수 있습니다.

참고 문헌

  1. BlockSec: Bybit 15억 달러 해킹 심층 분석

  2. Bybit CEO Ben Zhou X 방송


BlockSec 소개

BlockSec은 풀스택 블록체인 보안 및 암호화폐 컴플라이언스 제공업체입니다. 저희는 고객이 코드 감사(스마트 컨트랙트, 블록체인 및 지갑 포함), 실시간 공격 차단, 사건 분석, 불법 자금 추적, 그리고 프로토콜 및 플랫폼의 전체 수명 주기에 걸쳐 AML/CFT 의무를 이행할 수 있도록 돕는 제품과 서비스를 구축합니다.

BlockSec은 권위 있는 학술 컨퍼런스에서 다수의 블록체인 보안 논문을 발표했으며, DeFi 애플리케이션의 여러 제로데이 공격을 보고하고, 2,000만 달러 이상을 구조하기 위한 다수의 해킹을 차단했으며, 수십억 달러 규모의 암호화폐를 보호했습니다.

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
#2 Bybit 사건: Web2 침해로 인한 역사상 최대 규모의 암호화폐 해킹