<이미지를 클릭하시면 크게 보실 수 있습니다> |
1초 요약(TL; DR.)
☛ 블록체인 노드 사이에 메시지를 주고받는 구조상 서비스 거부공격, 디도스 공격은 충분히 발생할 수 있음.
☛ 확장성을 위해 세컨드레이어 솔루션을 사용하는 경우도 DoS, DDoS 공격이 치명적일 수 있어 주의가 요구됨.
비트코인을 포크한 블록체인 프로젝트 상당수에서 서비스 거부공격(DoS), 디도스 공격(DDoS)이 발생할 수 있다는 보안취약점이 최근 발견됐다. 비트코인은 DoS 공격을 예방하기 위한 패치를 2018년 진행한 바 있지만 암호화폐 프로젝트 여럿에선 DoS 취약점이 여전히 발견돼 주의가 요구된다. 또 확장성을 높이기 위해 사용하는 세컨드 레이어 솔루션에서도 이같은 공격이 발생할 수 있어 주의가 필요하다.
업계에서 이전 버전의 클라이언트를 사용해 노드를 운영하는 경우 최신 버전 업데이트가 권장된다. 실제로 비트코인(BTC) 코어 0.16버전, 0.16.1버전, 비트코인 노트 클라이언트 0.16버전, 비트코인다이아몬드(BTCD) 클라이언트 0.20.1 이하 모든 버전, 라이트코인(LTC) 코어 0.16버전, 네임코인(NMC) 코어 0.16.1버전, 디크레드(DCRD) 1.5.1 이하 모든 버전에서 취약점이 존재한다. 특히 디크레드의 경우 커뮤니티를 대상으로 한 버그 바운티 프로그램에서 해당 취약점이 발견된 만큼 업계엔 아직 드러나지 않은 DoS 취약점이 상당수 존재할 것으로 추정된다.
블록체인 노드에 비정상 메시지를 퍼부어 행동불능 만드는 DoS 공격
블록체인 노드에 DoS 공격이 발생하는 이유를 이해하려면 먼저 비트코인 노드가 작동하는 방식을 이해할 필요가 있다. 비트코인 노드는 트랜잭션 내역을 해시값으로 요약한 ‘인벤토리 메시지’를 상대편 노드와 맞춰보며 비트코인 네트워크의 전체 거래 내역을 실시간으로 동기화하는 방식으로 작동한다. 이 과정에서 노드에 도달한 메시지가 악의적인 메시지인지 아닌지 식별하는 건 해당 노드의 자체적인 판단에 전적으로 달려있다. 비트코인은 각 노드의 판단을 존중하는 탈중앙성을 중요한 가치로 삼기 때문이다. 하지만 노드 사이에 오고가는 메시지를 살펴보면 비정상적인 메시지도 정상적인 메시지와 겉보기엔 차이가 없다. 때문에 노드가 비정상적인 메시지를 실제로 걸러내기란 매우 어려운 한계점이 있다.
강민석 한국과학기술원(KAIST) 정보보호대학원 교수는 “블록체인의 개별 노드로 들어온 인벤토리 메시지가 DoS 공격 때문에 발생한 메시지인지 아니면 정상적으로 존재하는 트랜잭션에 대한 메시지인지 알 방법은 현재 없다. 노드의 네트워크 연결을 중간에서 가로채는 에러버스 공격처럼 겉으로 보기엔 정상 메시지와 차이가 없기 때문에 블록체인에선 이같은 공격이 구조상 발생할 수 있다”고 말했다. 블록체인 노드를 타겟으로 발생하는 DoS 공격은 해커가 비트코인 블록체인의 이같은 구조적인 허점을 노리면서 발생한다는 설명이다.
만약 블록체인 노드에 DoS 공격이 발생하면 공격당한 노드는 본래 의도한 방향대로 작동하지 않고 셧다운되는 사태가 발생할 수 있다. 노드에 DoS 공격이 가해지면 사용할 수 있는 메모리가 부족해지고 결국 행동불능 상태가 되기 때문이다. 만약 암호화폐 거래소 노드나 에스크로 서비스에 DoS 공격이 발생하면 보관된 자금에 손실이 생길 수도 있어 치명적이다. 뿐만 아니라 아토믹 스왑 등 디파이(분산금융) 서비스에도 영향을 줄 수 있다. 또 채굴풀 사이에선 DoS 공격을 매개로 상대편 진영의 채굴 행위를 방해하는 ‘채굴풀 전쟁’도 발발할 수 있다.
특히 분산 네트워크에 존재하는 다수의 노드가 DoS 공격에 함께 투입되는 디도스 공격으로 발전하는 경우 그 위험성은 더욱 커진다. 최근 발표된 한 논문에선 비트코인 노드에 디도스 공격이 발생하면 수분 내로 노드가 정지되는 사태도 발생할 수 있다고 경고하고 있다. 다만 강민석 교수는 “네트워크에서 산발적인 형태로 디도스 공격을 하려면 공격용 노드가 많이 필요하고 컴퓨팅 자원이 많이 요구돼 이같은 디도스 공격이 실질적으로 발생할 가능성은 낮은 편”이라고 덧붙였다.
그렇다면 블록체인 네트워크에서 DoS 공격을 예방하려면 어떻게 해야할까. 강민석 교수는 “어떤 시스템이든 DoS 공격을 막는 방법에는 몇 개 안되는 선택지만 존재한다. 공격 메시지와 정상 메시지를 최대한 구분해 공격 메시지를 제거하거나 무시하는 방법이 기본적”이라고 설명했다. 하지만 “공격 메시지를 가려내는 방식을 적용하기 어려울 경우 송신자 노드가 보낼 수 있는 메시지 수를 제한하는 ‘레이트 리미팅’ 방식을 사용하면 상대적으로 손쉽게 방어가 가능하다”고 강조했다. 레이트 리미팅이란 한 사람이 보내는 메시지의 개수를 초당 몇개 이하로 제한하는 방어책을 말한다. 클라이언트 프로그램에 레이트 리미팅 기능을 구현하면 DoS 공격을 자체적으로 어느 정도 방지할 수 있게 되는 셈이다. 그는 “블록체인에서 발생하는 DoS 공격은 처음부터 당연히 구현돼야 할 레이트 리미팅 기능이 구현돼 있지 않아 발생하는 경우가 많다”고 덧붙였다.
실제로 비트코인 코어의 초기 버전을 비롯한 여러 클라이언트 프로그램에선 이같은 기능이 구현돼 있지 않은 경우가 아직까지 존재한다. 비트코인의 초기 버전을 포크해 만든 다수의 블록체인 프로젝트 여럿 역시 DoS 공격에 노출될 가능성이 여전히 높은 셈이다. 그는 블록체인 노드를 운영하는 경우 보안성을 담보하기 위해 클라이언트 프로그램에 레이트 리미팅 기능이 제대로 구현돼 있는지 또 정상적으로 작동하는지 확인이 꼭 필요하다고 당부했다.
“세컨드레이어 솔루션을 사용한다면 DoS, 디도스 공격 특히 주의”
최근 이더리움(ETH), 비트코인(BTC) 블록체인의 비싼 수수료와 느린 처리 속도를 극복하기 위해 라이트닝 네트워크, 스테이트 채널 등 세컨드레이어 솔루션이 블록체인 프로젝트 여럿에 탑재되고 있다. 업계에선 플라즈마나 롤업 등 다양한 확장성 솔루션도 한창 개발중이다. 하지만 이같은 세컨드 레이어 솔루션을 사용하는 경우에도 분산 네트워크에서 발생할 수 있는 DoS, 디도스 공격에 항상 주의해야한다는 의견이 나온다.
*세컨드레이어(레이어2) : (블록체인 확장 기술) 블록체인의 확장성을 높이기 위해 블록체인 바깥에 데이터를 처리하는 레이어를 별도로 추가하는 방식. 블록체인에는 데이터를 처리한 결과값만 기록해 블록체인 자체의 연산 부담을 줄일 수 있다. 다른 말로는 오프체인 솔루션이라고도 한다.
강민석 교수는 “레이어2 솔루션이 안정적으로 동작하기 위해 워치타워 혹은 워치독 서비스가 대부분 필수적으로 사용된다. 이러한 서비스를 DoS 방식으로 공격해 불능 상태로 만들면 공격자가 해당 채널을 일방적으로 닫고 엑싯하며 비정상적으로 경제적 이득을 취할 수 있다”고 지적했다. 워치타워란 참가자의 자산 상태를 모니터링하고 참여자가 채널을 무단으로 닫고 나가지 않도록 감시하는 서비스를 말한다. 노드에서 세컨드레이어 솔루션을 사용하는 경우 워치타워 서비스가 무너지는 순간 여러 공격에 노출될 가능성이 항상 있기에 노드 운영자는 각별히 주의해야 한다.
한편 트랜잭션을 수집하지 않는 라이트 클라이언트는 DoS 공격에 상대적으로 안전한 특징이 있다. 실제로 이더리움2.0에서도 모든 거래 내역을 내려받지 않고도 지갑 기능을 사용할 수 있는 라이트 클라이언트를 구현하는데 상대적으로 중점을 두고 있다. 반면 블록체인 풀노드를 운영하는 경우 DoS, DDoS 공격을 예방하기 위해 주의가 특히 필요하다.
[강민승 D.STREET(디스트리트) 기자]
[ⓒ 매일경제 & mk.co.kr, 무단전재 및 재배포 금지]
이 기사의 카테고리는 언론사의 분류를 따릅니다.
기사가 속한 카테고리는 언론사가 분류합니다.
언론사는 한 기사를 두 개 이상의 카테고리로 분류할 수 있습니다.
언론사는 한 기사를 두 개 이상의 카테고리로 분류할 수 있습니다.
