3월 13일 발생한 DDoS 공격에 대한 비트맥스의 대응과 보고

3월 13일 금요일, 비트멕스 플랫폼은 2차례(세계 표준시 02:16, 12:56/ 한국시간 10:26, 20:56)의 강력한 디도스 공격을 받았습니다. 이 공격으로 인해 플랫폼의 이용이 지연되거나 불가능하게되어 사용자 여러분에게 직접적인 영향을 미치게 되었습니다. 이 사건에 대해 비트멕스는 지속적으로 발생 경위와 경과를 조사중입니다. 

잠시 동안, 서비스 중단 이후 사용자의 즉각적인 우려 사항, 어떤 일이 발생했는지, 플랫폼의 보안을 강화하기 위해 취하고 있는 조치에 대해 좀 더 자세히 알려드리고 싶습니다.

이와 관련하여 우선, 사용자 여러분이 우려하고 계실 서비스 중단의 경위와 플랫폼의 보안을 강화하기 위해 저희가 취하고 있는 조치에 대해 더 자세히 안내드리겠습니다.

3월 13일 발생한 DDoS 공격에 대해 저희가 대응한 부분의 간략한 설명입니다. 

  1. 02:16 세계 표준시 (한국시간 10:26)에 한 봇넷의 첫 디도스(DDoS) 공격이 시작되었습니다. 이를 조사하던 중 저희는 이 봇넷이 한 달 전 2월 15일에 있었던 비슷한 공격을 시도했고 이에 실패한 것을 발견했습니다. 저희 비트멕스의 액세스 로그를 토대로 분석한 바로는 이 봇넷 공격자들이 지난 2월에 공격으로 목표물을 파악한 후 시장에 가장 큰 영향을 미칠 수 있는 시기를 다음 공격으로 정해 이를 기다린 것으로 보고 있습니다.
  2. 3월 13일, 시장 변동성이 가장 높은 시간대에 이 봇넷은 특수하게 조작된 쿼리(query)를 Trollbox 기능으로 보내 저희 비트멕스 플랫폼을 장악하였습니다. 이로 인해 데이터베이스의 쿼리 최적화가 매우 비효율적인 쿼리 플랜을 실행하게 되었습니다.  자세한 내용은 아래를 참조해 주시기 바랍니다.
  3. 당시 저희 보안 팀은 데이터베이스 CPU 사용량이 100%에 달하고 해당 CPU IO 대기(유휴상태)가 99.6%임을 확인했습니다. 확인 직후 저희는 클라우드 공급자의 하드웨어 장애로 보고 이를 Disk장애로 잘못 진단했습니다. EBS 볼륨 오류는 종종 유사한 성능 특성을 보여줍니다.
  4. 이 디도스(DDoS) 공격으로 인해 API 계층의 메시지 처리가 느려져 거래 엔진에 도달하지 못하게 되는 상황이 발생했습니다. 디도스 공격이 확인되고 중단된 직후, API는 지체 없이 거래 엔진에 메시지를 보낼 수 있었었습니다.
  5. 저희는 10시간 이후인 12시 56분, 같은 공격을 받았습니다. 두 경우 모두 트래픽 필터링 시스템이 트래픽을 발견하여 이를 차단했지만 트래픽이 상당한 내부 대기열을 생성했습니다. 첫 번째 공격을 통한 학습으로, 저희 엔진팀은 시스템 작업을 재개하기 위해 큐를 수동으로 제거했습니다.
  6. 라이브 업데이트는 https://status.bitmex.com 에 게시되었으며, 사용자분들과의 소통을 위해 비트멕스 웹사이트에 이 사건 경위에 관련된 내용이 발표되었습니다.
  7. 비트멕스는 내부 사후 조치의 일환으로, 11:16 KST 첫 번째 서버 다운 시간동안 의도치 않게 지연되어 처리된 시장 주문으로 인하여, ETHUSD 계약에 대해 현재가격 역지정 주문이 명백히 잘못 발동된 156개의 계정을 확인하였습니다. 이 기간 동안 잘못 발동된 각 역지정 주문에 대해 비트멕스는 지수가격에 대한 델타를 계산하여 사용자에게 환불 조치하였습니다. 총 40.297 XBT가 환불되었습니다.

나의 계정과 개인 금융 데이터는 안전한가?

사용자 데이터의 보안과 안전은 저희의 최우선 사항입니다. 디도스 공격은 해킹이 아니기 때문에 개별 개인정보에 대한 위협은 없습니다. 해당 공격은 막대한 양의 요청을 시스템에 보냄으로써 여러 곳에서 트래픽을 유발하여 시스템 속도를 늦추는 행위입니다. 사용자 데이터는 안전하게 유지됩니다.

디도스 공격과 관련된 것이라고 의심하는 이유는 무엇인가?

저희 보안팀은 두 공격 모두 트래픽 패턴을 분석했고 그들 사이의 중요한 공통점을 확인하였습니다. 저희는 3월 13일과 2월 15일 두 공격이 모두 같은 액터로부터 조작되었다고 판단하였습니다. 저희는 이 활동의 재발을 계속 감시하고 있으며, 추가적인 충격을 사전에 차단하기 위한 사전 대책을 마련하였습니다.

트롤박스는 왜 디도스 공격에 취약했는가?

트롤박스(chat box)는 비트멕스에서 코딩한 첫 번째 기능 중 하나로, 그 이후 이 사이트의 유명한 기능으로 자리잡았습니다. 트롤박스는 플랫폼의 첫 해에 저희가 고객과 이야기하며 많은 시간을 보낸 곳으로, 신제품, 피드백, UI 개선, 그리고 일반적인 우스갯소리까지도 이야기를 나눌 수 있는 하나의 장입니다.

그러나 지난 금요일, 트롤박스는 공격의 수단이 되었습니다. 여기에 기술적인 부연 설명을 드리고자 합니다. 채팅에는 7개의 언어가 있는데, 각각 1-7개의 간단한 채널 ID가 있습니다. 첫번째는 영어고, 마지막 두개는 스페인어와 프랑스어입니다. 저희는 그 두 언어로 전체 웹페이지 번역을 진행하고 있으나, 아직 개발 중입니다.

/chat 끝점에서는 채널 ID별로 마지막 100개의 행을 쿼리할 수 있습니다. 이에 대한 지표가 있지만, 쿼리 최적화는 낮은 카디널리티 때문에 지표는 거의 사용하지 않습니다. 표의 크기(약 5천만 행)를 감안하면, 실제로는 역순 스캔을 한 다음, 여과하는 것이 더 빠릅니다. 쿼리 최적화는 채널 ID에 근거하여 서로 다른 쿼리 계획을 구별하고 구축할 수 있지만, 그러기 위해서는 최신 통계가 필요합니다. 그것은 이러한 환경에서 충분히 자주 실행되지 않았던 ANALYZE(또는 VACUUUM ANALYZE)를 통해 그 통계를 얻습니다.

따라서 쿼리 최적화는 최종적으로 반환할 100개의 행을 찾기 전까지 그 전략을 고수하며 모든 언어에 대해 역순 스캔을 수행하였습니다. 스페인어의 경우, 채팅창이 오랫동안 활용되지 않았습니다. 실제로 얼마나 그 기간이 길었을까요?  다음과 같은 기준에 부합하다는 것을 확인하기까지 849,748개의 행을 스캔하였습니다.

이렇듯 값비싼 순차 스캔은 대량의 메모리를 빠르게 할당하기도 하고 할당 해제하며 디스크로 흘러 넘치게 하였으며, 시스템 호출들로 급격하게 시스템을 제압하였습니다. 공격 당시 데이터베이스는 요청에 0.6%만을 사용하고, IO 대기에는 나머지 99.4%를 사용하고 있었습니다. 이로 인하여  /chat 쿼리뿐만 아니라 모든 쿼리가 극도로 느려졌습니다. 

채팅 스토리지에 대한 공격이 거래에 어떤 영향을 미쳤는가?

비트멕스는 데이터가 분리된 플랫폼을 운영합니다. 사용자와 관련된 데이터 (이메일, 활동, 채팅, 로그인 등)는 거래 데이터(포지션, 주문 실행, 마진 등)와 분리되어 있습니다. 그러나 이 채팅은 토큰들과 API 키에 액세스하는 것과 마찬가지로 사용자와 관련이 있습니다. 이는 이러한 현상이 거래 엔진 앞의 컨트롤 레이어와 인증에서 심각한 문제를 일으켰다는 것을 의미합니다. 거래 엔진이 정상적으로 작동하고 있었고 시장 데이터에도 차질을 빚지 않았으며 예금 및 출금에도 문제가 없었습니다. 그러나 이 기간 동안 엔진에 도달하는 것이 거의 불가능해졌기 때문에 이는 심각한 서비스 저하로 이어졌습니다.

이 공격이 다시 발생할 수 있는가?

어떤 시스템도 디도스(DDoS)를 통한 영향을 받지 않을 수 없습니다. 충격을 줄이거나 제거하기 위해 사용할 수 있는 기법은 많습니다. 저희도 근본적인 문제를 해결하였으며 추가적인 탐지와 대응 레이어를 도입하기 위해 24시간 일하고 있습니다. 부하 시 자동으로 사용자 수의 증대에 유연하게 대응할 수 있는 정도를 증가시키며 중요한 시스템을 더욱 분리해내기 위한 추가 작업이 진행 중입니다.

보안 강화를 위하여 비트멕스는 어떠한 노력을 기울이고 있는가?

위에서 언급된 지속적인 모니터링 및 완화 노력의 일환으로, 저희 보안팀은 시스템에서 가장 오래된, 따라서 가장 취약한 부분을 검토하여 시스템을 단순화, 분리, 성능 향상 및 시스템 분리에 힘쓰고 있습니다.

이와 동시에, 저희 보안팀은 서버 다운, 거래정지 제도, 재개, 커뮤니케이션을 중심으로 자유롭게 접근 가능한 프로토콜들을 개발하고 있습니다. 이는 추후 어떠한 서비스의 지장이 발생한다고 하더라도 비트멕스 사용자들에게 훨씬 더 나은 투명성을 제공할 것입니다. 

어떤 트레이더들은 비트멕스가 고의로 이러한 사태를 발생시켰다고 생각하는데 이에 대한 비트멕스의 답변은 무엇인가? 

저희는 공정하고 효율적인 플랫폼을 운영합니다. 서버 다운은 모든 고객의 고객 경험을 질을 떨어뜨리며, 시장 내 당사의 위상을 떨어뜨리는 일입니다. 서버 다운을 조작하는 것은 당사의 이익에 반하는 일입니다. 그럼에도 불구하고, 커뮤니티가 청산이 보험기금과 어떻게 상호 작용하는지를, 특히나 이러한  매우 까다로운 시나리오에서 더 많이 알고 싶어한다는 것은 분명합니다. 저희는 이에 대해 곧 더 많은 세부사항을 곧 공유할 것입니다.

앞으로 며칠간 저희는 무엇이 잘못되었는지 그리고 저희가 취하고 있는 조치에 대한 일련의 게시물을 발표할 예정입니다. 저 이외에도, 당사 내 타 부서장들도 이에 관하여 보고드릴 예정입니다.

언제나처럼 궁금하신 점은 고객지원팀으로 연락하여 주시기 바랍니다. 

감사합니다.

Arthur Hayes
Co-Founder & CEO