Back to Blog

약 4억 1,800만 달러 손실: Bitget, NEAR Intents 해킹 사건 | BlockSec Weekly

Code Auditing
2026년 10월 9일
8 min read
Key Insights
  • 본 보고서는 2026년 9월 21일부터 10월 4일까지 발생한 8건의 블록체인 보안 사고를 기록하며, 이더리움, BNB Chain, Solana, Bitcoin, TRON, XRP Ledger, Zcash, Avalanche, NEAR 및 관련 네트워크 전반에 걸쳐 총 추정 손실액은 약 4억 1,840만 달러입니다.

  • 사고 유형에는 제3자 보안 제품 취약점, 증명 시스템 건전성 결함 의심, 블록 및 입력 검증 실패, 불충분한 네트워크 구성 검증, 그리고 부적절한 접근 제어가 포함됩니다.

  • 두 상세 사례 모두에서, 다운스트림 서명 및 실행이 잘못된 업스트림 정보에 기반하여 이루어졌습니다. 서명 전과 자금 지급 전에 독립적인 검증이 필요합니다.

지난 2주간(2026/09/21 - 2026/10/04), 8건의 블록체인 보안 사고로 인해 총 약 4억 1,840만 달러의 손실이 발생한 것으로 추정됩니다.

날짜 사고 유형 추정 손실액
2026/09/23 Meter Passport 블록 검증 결함 ~$2.3M
2026/09/24 Payy Network 증명 시스템 건전성 결함 의심 ~$1.9M
2026/09/24 Limit Break 잘못된 콜데이터 검증 ~$7.7M
2026/09/24 Duelbits 근본 원인 미공개 ~$7M
2026/09/24 Bitget 서드파티 보안 제품 취약점 ~$387.5M
2026/09/27 DYORSwap 네트워크 설정 검증 불충분 ~$2.1M
2026/09/30 NEAR Intents 잘못된 환불 검증 및 롤백 누락 ~$3.9M
2026/10/04 익명의 Base 볼트 부적절한 접근 제어 ~$6M

선정 이유

  • Bitget: 이번 사고는 해당 기간 손실의 대부분을 차지하며, 개인 키나 스마트 컨트랙트의 손상 없이 위조된 출금 명령을 통해 오프체인 침해가 유효한 온체인 전송으로 이어진 경로를 보여줍니다.
  • NEAR Intents: 환불 검증 결함과 상태 롤백 누락으로 인해 실패한 크로스체인 입금 처리가 정상적인 출금 경로를 통과할 수 있는 보증되지 않은 내부 잔액으로 전환되었습니다.

Best Security Auditor for Web3

Validate design, code, and business logic before launch

Bitget

9월 24일, 약 3억 8,750만 달러가 Bitget의 핫 월렛 및 웜 월렛 인프라 일부에서 이더리움 및 기타 EVM 네트워크, XRP Ledger, Zcash, TRON을 통해 유출되었습니다. 해당 온체인 트랜잭션은 유효한 월렛 서명을 포함하고 있었습니다. Bitget은 공격자가 서드파티 보안 제품의 취약점을 악용하여 내부망 접근 자격 증명을 획득하고 출금 명령을 위조했으며, 개인 키와 콜드 월렛은 안전하게 유지되었다고 밝혔습니다[1][2].

사고 개요

독립적인 조사 보고서들은 영향을 받은 두 보안 제품의 이름을 공개하지 않은 채 공격 경로에 대한 세부 정보를 추가합니다. SlowMist는 Product A에서의 최초 악성 활동을 8월 31일로 추적했으며, 한 노드의 서비스에 영향을 미치는 제로데이를 확인했습니다. Mandiant는 두 보안 어플라이언스에 대한 권한 있는 접근, Product B에서의 웹 셸 및 C2(명령 및 제어) 연결, 그리고 운영 월렛 작업 서버로의 측면 이동을 발견했습니다.

SlowMist는 별도로 공격자가 내부 직원 신원을 사용하여 Product B의 관리 플랫폼에 접근했다는 사실을 발견했습니다. 조사관들은 또한 위험 통제 매개변수를 위조하고 출금 요청을 구성하여 출금 프로세스를 호출하는 맞춤형 출금 도구를 복구했습니다. 공격자가 관련된 모든 시스템 간을 어떻게 이동했는지는 조사 중에 있습니다. 퍼블릭 체인에는 이러한 상위 단계 작업이 아니라 최종적으로 서명된 전송 내역만 기록되었습니다.

온체인 기록에 따르면 최초 이동은 93 TRX였으며, 11초 후 18:31 UTC에 0.84 ETH가 이동했습니다. Bitget의 현재 타임라인에는 19:05 UTC에 대조(reconciliation) 과정에서 탐지가 이루어졌고, 19:14 UTC에 최고 수준의 비상 대응이 활성화되었다고 기록되어 있습니다[1]. 별도의 2,059만 TRX 전송이 19:16 UTC에 공격자가 통제하는 TRON 주소에 도달했으며, Chen은 8개의 다른 네트워크에서 발생한 17건의 더 큰 규모의 전송(총 약 3억 6,100만 달러)에 대해 설명했습니다[3]. 봉쇄(containment)는 19:40 UTC에 시작되었으며, 월렛 출금 및 서명 서비스는 21:44 UTC에 중단되었습니다[1].

자금 현황 및 커뮤니티 대응

9월 29일 16:35:28 UTC 기준, Bitget의 공식 보유 현황 추적기에는 공격자의 현재 보유 자산이 3억 2,267만 달러이며, 약 632,700달러가 동결되었고, 312,500달러는 발행사가 동결 가능한 스테이블코인이며, 5,587만 달러는 이동 중이거나 아직 분석 중인 것으로 보고되었습니다. 별도의 주소 보기에서는 잔액이 BTC(2억 8,851만 달러), ZEC(2,891만 달러), ETH(717만 달러)에 집중되어 있는 것으로 나타났습니다. 다만 이 보기는 전체 개요와는 다른 분류 범위를 사용합니다.

Binance는 정보를 공유하고 자금 추적을 지원했으며, Bybit는 LazarusBounty를 업데이트하고 지원을 제공했습니다[4][5]. 인프라 제공업체들은 서로 다른 선택을 했습니다. Bitget은 THORChain에 명시된 공격자 주소에 대한 서비스 제공을 거부해 달라고 요청하며, 분산화가 알려진 도난 자금의 유통을 보호해서는 안 된다고 주장했습니다[6]. THORChain은 선택적 블랙리스트 적용을 거부했으며, 자사의 통제 수단은 하나의 주소나 트랜잭션이 아니라 더 광범위한 활동이나 체인 경로 전체를 중단시킬 수 있을 뿐이라고 밝혔습니다[7].

NEAR Intents는 중복 항목을 필터링한 후 SHIELD가 공격자와 연관된 5,000만 달러 이상의 시도된 자금 흐름을 식별하고 차단했다고 밝혔습니다. 실행 과정에서 약 503,000달러가 동결되었고 약 166,000달러가 통과되었습니다. 5,000만 달러라는 수치는 시도된 흐름을 의미하며 동결되거나 회수된 금액이 아닙니다[8]. 해당 추적기는 이후 NEAR Intents에서 293,507달러를 동결된 금액으로 분류했으나, 공개된 자료에서는 이러한 차이가 조정되지 않았습니다.

시사점

  • 공격자는 서드파티 보안 제품을 통해 침입하여 월렛 작업 서버에 도달했고, 위조된 출금 요청을 유효하게 서명된 트랜잭션으로 전환시켰습니다. 이러한 접근 권한을 가진 모든 서드파티 제품은 실질적인 자산 보안 경계에 속하므로, 기관은 이를 격리하고, 신원 및 권한을 제한하며, 해당 제품의 행위를 모니터링하고, 서명 전에 출금 의도를 독립적으로 검증해야 합니다.
  • 복구 권한이 거래소, 스테이블코인 발행사, 라우팅 서비스, 기반 프로토콜 전반에 분산되어 있어 어느 한 당사자도 단독으로 대응을 관리할 수 없었습니다. 피해를 입은 기관은 검증된 주소와 트랜잭션 데이터를 신속하게 공유해야 하며, 인프라 제공업체와 보안팀은 각자의 기술적·거버넌스적 제약 안에서 추적, 동결, 트랜잭션 스크리닝, 복구를 조율해야 합니다.
  • 이번 사고로부터 도출된 예방적 통제 방안에 대해서는 Bitget's $387.5M Off-Chain Breach: Beyond Keys and Contracts를 참고하십시오. 이 글에서는 권한 있는 접근, 출금 의도, 자산 흐름 모니터링, 비상 대응을 위한 다층 방어(defense-in-depth) 프레임워크를 다룹니다.

Get Started with Phalcon Explorer

Dive into Transactions to Act Wisely

Try now for free

NEAR Intents

9월 30일부터 10월 1일 사이, NEAR Intents는 intents.near에서 발생한 환불 검증 결함과 상태 롤백 누락으로 인해 해당 자산에 대한 실질적인 뒷받침 없이 내부 잔액이 생성되면서 약 387만 달러의 손실을 입었습니다. 공격자는 해당 잔액을 이용해 유효한 HOT MPC 출금 서명을 획득하고 프로토콜의 BNB Chain 볼트에서 실제 USDT를 유출했습니다[9][10].

배경

NEAR Intents는 NEAR 상의 인텐트 실행 시스템입니다. 핵심 컨트랙트인 intents.near는 옴니 자산(omni-asset)을 보유하고, 사용자들의 내부 잔액을 기록하며, 서명된 인텐트를 기반으로 자산 교환 및 출금을 처리합니다.

크로스체인 입금의 경우, 소스 체인의 볼트가 실제 자산을 잠금 처리합니다. Omni는 NEAR 상에 해당하는 옴니 자산을 생성하여 intents.near로 전송하며, 이 컨트랙트는 사용자의 내부 잔액에 이를 반영합니다.

출금의 경우, intents.near는 Omni에게 해당 옴니 자산을 소각하고 출금 기록을 생성하도록 요청합니다. HOT MPC는 해당 기록을 검증하고 서명을 발급합니다. 목적지 체인의 볼트는 실제 자산을 공개하기 전에 해당 서명을 검증합니다. 이 과정에서는 intents.near가 기록한 내부 잔액이 해당 컨트랙트가 실제로 보유한 옴니 자산으로 항상 뒷받침되어야 합니다.

취약점 분석

입금 경로에서는 크로스컨트랙트 전송이 완전히 해결되기 전에 수신자의 내부 잔액이 먼저 반영되었습니다. 해결 과정에서 resolve_deposit_internal()은 수신자가 통제하는 requested_refund 값을 해당 토큰에 대한 수신자의 총 잔액으로 제한했지만, 현재 해결 중인 입금에서 실제로 전송된 금액인 deposited로는 제한하지 않았습니다. 총 잔액은 해당 계정이 지불할 수 있는 금액만을 나타낼 뿐이며, deposited는 이번 전송에 대해 환불이 허용되는 금액을 정의합니다. 이 두 번째 제한이 없었기 때문에, 기존에 큰 잔액을 보유한 수신자는 현재 입금액을 훨씬 초과하는 환불을 요청할 수 있었습니다[10].

긴 토큰 ID가 많이 포함된 배치 입금의 경우, 잘못된 환불 값으로 인해 직렬화된 MtBurnEvent가 커졌습니다. 이후 check_refund().unwrap_or_panic_display().emit() 경로는 해당 이벤트가 NEAR의 전체 로그 길이 제한을 초과할 때 패닉(panic)을 발생시켜 mt_resolve_deposit 리시트(receipt)를 실패하게 만들었습니다.

내부 잔액은 이전 리시트에서 이미 반영되어 있었습니다. 패닉은 콜백 리시트에서 시도된 잔액 및 공급량 차감을 롤백했지만, 앞서 반영된 해당 크레딧은 원복하지 않았습니다. 이후 Omni는 전송된 자산을 발신자에게 반환했고, 그 결과 공격자에게는 intents.near가 보유한 옴니 자산과 더 이상 일치하지 않는 출금 가능한 내부 잔액이 남게 되었습니다. 이 취약점은 환불 검증 결함과 비동기 리시트 시퀀스 전반에 걸친 상태 롤백 누락이 결합된 것입니다.

공격 분석

다음 재구성은 공개적으로 이용 가능한 정보를 기반으로 합니다[11].

단계 1: NEAR 상에서 뒷받침되지 않는 내부 잔액 생성

  • 1단계: 공격자는 BNB Chain Omni/HOT 볼트를 통해 10 USDT를 입금하여, 악성 수신자 계정이 NEAR 상에서 0이 아닌 옴니 자산 잔액을 보유하게 만들었습니다.

  • 2단계: 공격자는 v2_1.omni.hot.tg에서 mt_batch_transfer_call()을 호출했습니다. mt_on_transfer()에서 intents.near는 먼저 deposit()을 통해 수신자에게 금액을 반영한 후, 악성 수신자에게 알리고 그 응답을 mt_resolve_deposit()으로 전달했습니다.

  • 3단계: 악성 수신자는 현재 입금액을 훨씬 초과하는 requested_refund 값을 반환했습니다. 검증 과정에서 수신자의 총 토큰 잔액을 상한선으로 사용했기 때문에, 이 비정상적인 값이 환불 처리 단계로 넘어갔습니다.

  • 4단계: 배치된 항목들에서 과도하게 큰 환불 값으로 인해 직렬화된 MtBurnEvent가 NEAR의 전체 로그 길이 제한을 초과했습니다. mt_resolve_deposit 콜백은 패닉을 발생시켰으며, 이로 인해 시도된 환불 차감은 롤백되었지만 이전 리시트에서 커밋된 내부 크레딧은 롤백되지 않았습니다. Omni는 전송된 자산을 반환했지만, 반영된 잔액은 intents.near에 그대로 남아 있었습니다. 이 과정을 반복함으로써 공격자는 출금 가능한 뒷받침되지 않은 잔액을 만들어냈습니다.

단계 2: BNB Chain 볼트에서 실제 자산 출금

  • 5단계: 9월 30일 18:57 UTC와 20:05 UTC에, 공격자는 유효한 HOT MPC 승인을 사용하여 BNB Chain 볼트에서 10 USDT와 11 USDT를 출금하는 테스트를 진행했습니다. 첫 번째 테스트 트랜잭션은 해당 볼트가 상위 단계의 승인을 수락한다는 사실을 확인시켜 주었습니다.
  • 6단계: 9월 30일 23:54 UTC부터 10월 1일 06:08 UTC까지, 공격자는 800,000 USDT, 1.2M USDT, 1.5M USDT, 330,000 USDT, 35,000 USDT의 다섯 차례에 걸친 대규모 출금을 진행했습니다. 이 트랜잭션들을 통해 볼트에서 총 386.5만 USDT가 유출되었습니다.

결론

NEAR Intents는 잘못된 환불 검증과 입금 해결 실패 이후의 롤백 누락을 통해 악용되었습니다. 공격자는 과도하게 큰 환불 요청을 사용하여 기초 자산이 반환된 후에도 내부 크레딧을 유지했으며, 이후 이 뒷받침되지 않은 잔액을 이용해 출금을 요청했습니다. Omni는 해당 출금 기록을 생성했고, HOT MPC는 이를 서명했으며, BNB Chain 볼트는 실제 USDT를 유출했습니다.

환불 처리 과정에서는 각 토큰의 환불액을 현재 해결 중인 입금 금액으로 제한해야 합니다. 또한 프로토콜은 가능한 경우 잔액 반영과 해결 과정을 원자적(atomic)으로 처리하거나, 실패 시 보장된 보상적 롤백을 적용해야 합니다. 출금 서명을 발급하기 전에는 전체 내부 잔액과 실제 옴니 자산 보유량을 대조해야 하며, 불일치가 발견될 경우 출금을 일시 중단해야 합니다. 또한 이벤트 생성에는 제한을 두어 과도하게 큰 로그로 인해 상태에 중요한 해결 경로가 중단되지 않도록 해야 합니다.

Get Started with Phalcon Security

Detect every threat, alert what matters, and block attacks.

Try now for free

참고 자료

[1] https://www.bitget.com/academy/bitget-security-incident-what-happened-timeline-impact-response

[2] https://x.com/GracyBitget/status/2104515761691939026

[3] https://www.theblock.co/news/regulation/2026-09-28-bitget-attacker-tested-risk-controls-small-transfers-388-million-theft-ceo-says-417045

[4] https://www.binance.com/en/square/post/09-25-2026-binance-news-richard-teng-puts-binance-s-security-muscle-behind-an-industry-wide-response-370442242243629

[5] https://x.com/benbybit/status/2103328213141508335

[6] https://x.com/GracyBitget/status/2103812967066439817

[7] https://www.coindesk.com/tech/2026/09/28/thorchain-rejects-bitget-request-to-block-hacker-as-usd6-million-moves-to-bitcoin

[8] https://x.com/GracyBitget/status/2104602301503816040

[9] https://x.com/near_intents/status/2105642219357241796

[10] https://github.com/near/intents/pull/362

[11] https://x.com/Phalcon_xyz/status/2105680009687957909

BlockSec 소개

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

BlockSec는 저명한 학회에서 다수의 블록체인 보안 논문을 발표했으며, DeFi 애플리케이션의 여러 제로데이 공격을 보고했고, 2,000만 달러 이상을 구제하기 위해 다수의 해킹을 차단했으며, 수십억 달러 규모의 암호화폐 자산을 보호해 왔습니다.

Sign up for the latest updates
Bitget의 3억 8,750만 달러 오프체인 침해 사고: 키와 컨트랙트를 넘어서
Security Insights

Bitget의 3억 8,750만 달러 오프체인 침해 사고: 키와 컨트랙트를 넘어서

2026.9.24, 공격자가 제3자 보안 제품 취약점을 악용해 내부 자격증명을 탈취하고 출금 명령을 위조했습니다. 이더리움·EVM·XRP Ledger·Zcash·TRON상 Bitget 지갑에서 약 3.875억 달러가 인출됐으나 개인키·콜드월렛은 무사했습니다. 이 글은 사건 경위·자금 흐름과 자산 전환·복구 대응을 분석하고, 기관용 심층 방어 체계를 제안하며 승인된 블록체인 침투 테스트의 검증 역할을 설명합니다.

약 1,130만 달러 손실: Multicall Router, Nostra | BlockSec Weekly
Security Insights

약 1,130만 달러 손실: Multicall Router, Nostra | BlockSec Weekly

2026/09/14~09/20, 이더리움·Starknet에서 약 1,130만 달러 손실 발생. 멀티콜 라우터가 자신 주소를 대상으로 받아들여 Safe 지갑 권한이 도용되어 약 2,900 aEthrsETH가 공격자 Uniswap v4 풀로 유출. Starknet Nostra는 오라클 최소 소스 1개 요구로 조작된 가격이 반영돼 NSTR이 약 $49.52로 평가, 약 350만 달러 대출 발생.

~3억 2천만 달러 손실: Liquid Network, Symbiosis 익스플로잇 | BlockSec
Security Insights

~3억 2천만 달러 손실: Liquid Network, Symbiosis 익스플로잇 | BlockSec

2026/09/07-13 보고서: 두 보안 사고로 약 3.2억 달러 손실. Liquid Network 익스플로잇(09/06)은 검증 캐시 키 충돌로 4,000 L-BTC 무단 발행 후 페그아웃. Symbiosis 브리지는 음수 수수료 검증 누락으로 330사토시 입금이 461억 syBTC로 발행돼, 유동성 부족으로 LP·사용자 손실 약 9.97 BTC(약 77만 달러) 발생.

Best Security Auditor for Web3

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

BlockSec Audit