13 August 20268 분 소요

쉬운 말로 설명하는 KAWPOW 취약점 사건

2026년 8월 7일, 한 보안 연구자가 채굴 작업 없이 레이븐코인 블록을 위조했고, 이를 메인넷에서 실제로 시험했습니다. 네트워크는 분기되었고, 약 4,300~5,800개의 블록과 3~4일 분량의 기록이 삭제되었으며, 대부분의 해시레이트는 가장 깔끔한 재시작을 선택했습니다. 무엇이 고장 났는지, 그 뒤에 숨은 숫자들, 수정 방법, 그리고 그에 따른 절충점을 정리했습니다.

RavencoinMiningSecurity

레이븐코인은 KAWPOW라는 채굴 알고리즘으로 스스로를 보호합니다. KAWPOW의 핵심은 유효한 블록을 만드는 데 반드시 큰 비용이 들도록 하는 것입니다. 채굴자는 블록 하나를 찾기 위해 전력과 상당한 메모리 대역폭을 소비합니다. 2026년 8월 7일 UTC 15시 44분, 스스로를 보안 연구자라고 밝힌 인물이 이 비용의 대부분을 건너뛰는 방법을 발견했고, 조용히 신고하는 대신 메인넷에서 직접 시험했으며, 정상적인 노드들은 그 결과를 그대로 받아들였습니다.

이는 추가 RVN이 허공에서 발행됐던 2020년 사건과는 다릅니다. 이번 일로 코인 공급량이 늘어난 것은 아닙니다. 문제가 된 것은 어떤 체인이 진짜인지에 대한 네트워크의 합의 능력이었으며, 결제와 자산 체인 입장에서는 어쩌면 더 심각한 문제라고 할 수 있습니다. 주목할 점은, 이 결함과 함께 수정된 자산 전송 오버플로 버그 모두 전문 보안 감사를 통과했던 코드에서 뒤늦게 발견되었다는 것입니다. 전 수석 개발자 트론 블랙(Tron Black)은 최전선의 AI 모델이 코드를 검토하다가 이를 발견했을 가능성이 있다고 보고 있습니다.

피해 규모

약 2,500만~3,500만 달러
며칠 만에 사라진 RVN 가치
RVN은 약 17~21% 하락하며 사상 최저치를 기록했습니다. 시가총액이 수억 달러 수준인 점을 감안하면 이 정도 하락은 수천만 달러의 보유자 가치를 지워버립니다. 이는 이 사건 전체에서 가장 큰 금액이며, 코인을 도난당해서가 아니라 신뢰를 잃어서 발생한 손실입니다.
4일치 기록 삭제
확정됐던 모든 결제가 되돌아감
UTC 8월 7일 15시 44분부터 대략 8월 11일까지 확정됐던 모든 것은 정상 체인이 주도권을 잡으면서 폐기되었습니다. 그 시간대에 결제를 받았다면, 그 결제는 그냥 사라졌고 다시 처리되어야 했습니다.
약 2만 5,000~3만 3,000달러
증발한 채굴 보상
약 4,300~5,800개의 블록이 고아 블록(orphan)이 되었고, 각 블록은 반감기 이후 보상인 625 RVN을 담고 있었으므로, 살아남은 체인에서 약 270만~360만 RVN의 채굴 수익이 사라졌습니다. 채굴 풀들은 채굴자들이 손해를 보지 않도록 부족분을 자체 부담하겠다고 밝혔습니다.
거의 0
공격자가 블록당 지불한 비용
정상적인 KAWPOW 블록은 실제 전력과 메모리 대역폭 비용이 들어야 합니다. 하지만 이번에 위조된 블록들에는 메모리 집약적 작업이 전혀 없었습니다. 긴급 패치 노트에 따르면 이 비용은 정상 채굴보다 자릿수 단위로 저렴했으며, 그래서 한 사람이 네트워크 전체보다 많은 블록을 만들어낼 수 있었습니다.
20개 중 1개꼴
표본 구간에서 위조된 블록 비율
메인넷에서 확인한 2,089개 블록 중 96개, 약 4.6%가 위조된 것이었습니다. 단발성 해프닝이 아니라, 모두가 신뢰하던 체인에 위조 블록이 꾸준히 흘러들어온 것입니다.
거래소 3곳
이용자의 자산 접근을 차단
Bitvavo, Upbit, Bitget이 RVN 입출금을 중단했습니다. 일반 보유자 입장에서는 가격이 계속 최저치를 갈아치우는 동안 매도도, 이동도, 탈출도 할 수 없었다는 뜻입니다.
이 숫자들이 얼마나 확실한가. 포크 발생 높이, 거래소 동결, 17~21% 가격 하락은 보도된 사실입니다. 고아 블록 수, RVN 총량, 달러 환산액은 확정된 포크 높이, 레이븐코인의 1분 블록 시간, 625 RVN 블록 보상, 당시 RVN의 거래 가격과 공급량을 바탕으로 한 계산값입니다. 감사받은 고아 블록 수치나 되돌려진 거래·자산 전송의 총합, 확정된 이중지불 손실액은 아직 공개된 바 없으므로, 달러 금액은 확정된 수치가 아니라 대략적인 규모로 받아들이는 것이 좋습니다.

실제로 무엇이 잘못됐는가, 쉽게 설명하면

채굴은 본래 비용이 많이 들어야 합니다. 블록을 추가하려면 채굴자는 실제 전력을 소모해 퍼즐을 풀어야 하고, 레이븐코인의 퍼즐(KAWPOW)은 값싸게 무차별 대입으로 뚫을 수 없도록 일부러 메모리를 많이 쓰게 설계되어 있습니다. 그리고 다른 모든 노드는 그 작업이 정말로 수행됐는지 다시 검증한 뒤에야 블록을 받아들입니다.

이 비용을 건너뛸 수 있게 만든 것은 두 가지 요소가 겹친 결과였습니다.

  • 각 블록 헤더에는 그 블록이 체인의 어느 높이(height)에 속하는지 적힌 숫자가 있습니다. 이 숫자는 단순한 표시가 아니라 퍼즐에 어떤 채굴 데이터 조각을 쓸지 결정합니다. 노드들은 거기 적힌 숫자를 그대로 믿었고, 그 블록이 실제로 체인 어디에 위치하는지와 일치하는지 확인하지 않았습니다. 그래서 공격자는 이 값을 속일 수 있었습니다.
  • 오래된 과거 기록의 동기화 속도를 높이기 위해, 노드는 내장된 마지막 체크포인트 이하의 블록에 대해서는 완전하고 비용이 큰 작업 검증을 건너뛰고 최종 해시만 얼핏 확인합니다. 오래된 역사는 이미 확정된 것으로 간주되므로 굳이 다시 검증할 필요가 없다고 본 것입니다.

이 둘을 합치면: 헤더에 가짜 높이 값을 적어 넣음으로써, 공격자는 완전히 새로운 블록을 소프트웨어 눈에는 아주 오래된 역사처럼 보이게 만들 수 있었고, 그러면 값싸고 대충 검증되는 경로로 처리됐습니다. 진짜 채굴 작업 없이도 블록이 받아들여진 것입니다. 패치 노트는 이런 블록을 찾는 비용이 정상 채굴보다 자릿수 단위로 저렴했다고 설명합니다.

저렴한 블록은 곧 저렴한 체인을 의미합니다. 거의 공짜로 블록을 만들 수 있는 사람은 최근 역사의 경쟁 버전을 만들어 네트워크가 그것을 채택하게 만들 수 있으며, 이것이 바로 확정된 거래를 무효화하는 방법입니다.

첫 위조 블록은 2026년 8월 7일 UTC 15시 44분, 높이 4,487,776에서 나타났습니다. 대부분의 운영자에게 첫 징후는 극적이지 않고 실용적인 형태로 나타났습니다. 노드가 재시작되며 데이터베이스를 로드하지 못하거나, 표시되는 블록 높이 순서가 말이 안 되어 동기화가 아예 멈춘 것입니다. 표본으로 확인한 구간에서는 2,089개 블록 중 96개가 영향을 받았습니다.

분기, 그리고 어떻게 정리됐는가

네트워크는 단순히 롤백된 것이 아니라 분기되었습니다. 한 쪽 브랜치는 위조된 블록들을 계속 받아들였습니다. 대부분의 해시레이트를 차지하는 2대 채굴 풀, 2Miners와 RavenMiner가 주도한 다른 쪽 브랜치는 높이 4,487,776 이후의 모든 것을 거부하고 4,487,775를 마지막으로 확인된 정상 블록으로 고정한 채, 깨끗한 체인을 채굴하기 시작했습니다.

레이븐코인 전 수석 개발자 트론 블랙은 재구성 폭을 얕게 만들기 위해 더 최근 시점을 복구 지점으로 삼고 문제 블록에 대해서는 코드 예외를 두는 방안을 채굴 풀들에 제안했습니다. 이 요청은 받아들여지지 않았고, 그들은 가장 깔끔한 절단 지점을 선택했습니다. 순수 작업증명 시스템에서는 누적 작업량이 가장 많은 체인이 승리하므로, 대다수의 정상 해시레이트가 오염된 역사를 거부하자 오염된 역사는 패배했습니다.

소수의 장기 운영 노드들은 여전히 버티고 있습니다. 레이븐코인에는 갑작스러운 51% 공격으로부터 보호하기 위한 '장기 재구성 금지' 규칙이 있어서, 재시작한 적이 없고, (결함이 있는) 규칙이 깨지는 것을 기술적으로 본 적이 없으며, 같은 시각을 공유하는 피어가 충분히 남아 있는 노드들은 계속 새 체인을 거부할 것입니다. 이 안전장치는 설계된 대로 정확히 작동하고 있는 것이며, 다만 검증 버그를 상정하고 만들어진 것이 아닐 뿐입니다.

적용된 수정 사항

긴급 패치는 업스트림이 아니라 채굴 풀 운영사에서 나왔습니다. 2Miners는 8월 10일 v4.6.1.1-hf1을 배포했고, 8월 11일 v4.8.0으로 대체했습니다. 이 점이 중요한 이유는, 그 사이에 유통되던 v4.7.0은 자산 전송 문제만 고쳤을 뿐 합의 결함은 고치지 않았기 때문입니다. 운영자들은 이 버전을 신뢰하지 말라는 안내를 명확히 받았습니다.

이 패치는 세 가지 일을 합니다:

  • 높이 4,487,776 이후의 블록 중 헤더에 적힌 높이가 실제 체인상의 위치와 일치하지 않는 블록을 거부합니다. 이것이 취약점 자체를 막습니다.
  • 마지막으로 확인된 정상 블록인 4,487,775에 하드코딩된 체크포인트를 설정하여, 노드가 손상된 인덱스 항목에서 멈추는 대신 신뢰할 수 있는 지점부터 체인 상태를 다시 구성하도록 합니다.
  • 블록 인덱스 로딩이 검증 불가능한 항목을 허용하도록 하고 자산 데이터베이스를 재구축하여, 기존 노드가 수동 재색인 없이 바이너리 교체만으로 복구되도록 합니다.

v4.8.0에는 별도로 발견된 자산 전송 오버플로 수정도 함께 포함되어 있는데, 이는 이번 사건에서 유일하게 진짜 반가운 부분이라 할 수 있습니다. 그 버그도 이제 수정되어 배포됐습니다. 핫픽스에서 넘어온 노드는 빠르게 재시작됩니다. 패치되지 않은 소프트웨어에서 넘어온 노드는 일반적인 하드웨어 기준으로 몇 시간에 걸쳐 재생과 재구축을 해야 하지만, 수동 재색인은 필요 없습니다.

장점

  • 실제로 작동했고 빨랐습니다. 악용부터 배포 가능한 바이너리까지 몇 달이 아니라 며칠이 걸렸습니다.
  • 배포가 쉬웠습니다. 운영자는 바이너리만 교체하면 노드가 스스로 복구되며, 평범한 채굴자에게 난해한 복구 절차를 요구하지 않았습니다.
  • 동기화가 복구되었습니다. 완전히 멈춰 있던 노드들이 다시 네트워크에 합류할 수 있었습니다.
  • 근본 원인이 형식적으로 덮인 것이 아니라 실제로 고쳐졌습니다. 높이 검증은 이제 단순한 체크포인트 임시방편이 아니라 진짜 합의 규칙이 되었습니다.
  • 실제 작업으로 해결되었습니다. 정상 해시레이트가 잘못된 역사를 거부했기 때문에 깨끗한 체인이 승리했으며, 이는 작업증명이 원래 의지해야 할 메커니즘 그대로입니다.

솔직한 단점

  • 8월 7일부터 11일까지 약 4일간의 거래가 정상 체인이 승리하면서 고아가 되었습니다. 그 기간에 결제를 받았거나 거래소가 입금을 인정해줬다면, 그 기록은 되감겼습니다.
  • 되돌려진 거래 대부분은 멤풀로 돌아가 다시 채굴됐지만, 전부 그런 것은 아닙니다. 고아가 된 블록의 채굴 보상에서 나온 코인을 사용한 거래, 그리고 그 위에 쌓인 모든 것은 영구적으로 무효이며 되살릴 수 없습니다.
  • 롤백 깊이는 두 채굴 풀이 결정했습니다. 2Miners와 RavenMiner가 대부분의 해시레이트를 차지하고 있고, 이들은 더 최근의 덜 파괴적인 지점부터 재시작하자는 요청을 거절했습니다. 이 정도 규모의 체인에서도 소수의 풀이 사실상 정책을 좌우할 수 있다는 뜻입니다.
  • 정식 수정본이 제3자에게서 나왔습니다. 채굴 풀 운영사의 빌드를 신뢰하는 것은 실용적인 선택이었지만 마음 편한 선택은 아니었고, 업스트림 개발이 얼마나 조용해졌는지를 드러냈습니다.
  • 체크포인트는 무딘 도구입니다. '우리가 그렇다고 하니 이 역사는 확정된 것'이라는 방식으로 안전을 되찾는 것이며, 약간의 탈중앙성을 큰 안정성과 맞바꾸는 셈입니다.
  • 두 개의 합의 계층 버그가 유료 전문 감사를 통과했습니다. 이를 잡아낸 것으로 보이는 검토는 AI에 의한 것이었습니다.
  • 현실적인 후폭풍: Bitvavo, Upbit, Bitget을 포함한 거래소들이 RVN 입출금을 중단했고, RVN은 사건 도중 약 17~21% 하락해 사상 최저치를 기록했습니다.

그래서 실제로 얼마나 손실이 났나?

여기서 중요한 숫자는 두 가지입니다. 공격자는 거의 아무 비용도 쓰지 않았으므로 비용 쪽은 미미합니다. 하지만 피해 쪽은 그렇지 않습니다.

  • 채굴 보상: 약 4,300~5,800개의 고아 블록이 각각 625 RVN을 담고 있었으니, 약 270만~360만 RVN의 채굴 수익이 사라진 셈입니다. 살아남은 체인 기준으로는 더 이상 존재하지 않는 풀 보상이 약 2만 5,000~3만 3,000달러에 해당합니다. 채굴 풀들은 이를 채굴자에게서 회수하는 대신 자체적으로 흡수하겠다고 밝혔습니다.
  • 시장 가치: 이것이 가장 큰 부분입니다. RVN은 17~21% 하락해 사상 최저치를 기록했습니다. 시가총액이 수억 달러 수준인 점을 고려하면, 이 하락은 일반 보유자들의 가치를 수천만 달러 규모로 지워버렸습니다. 아무도 훔쳐 가지 않았습니다. 체인이 다시 쓰일 수 있다는 것을 시장이 알게 되면서 재평가된 것뿐입니다.

직설적으로 말하면: 공격 비용은 저렴했고, 잃어버린 채굴 수익은 크지 않았으며, 잃어버린 신뢰는 값비쌌습니다. 공급량 자체는 그대로였습니다. 허공에서 만들어진 RVN은 없었고, 8월 7일 이전부터 존재하던 지갑에서 빠져나간 것도 없습니다. 잃어버린 것은 대략 4일치의 결제 확정성, 수천 개 블록 뒤에 있던 작업, 그리고 상당한 신뢰였습니다.

레이븐코인 자산을 보유하고 있다면 어떤 의미인가

8월 7일 이전에 성립된 잔액과 자산 소유권은 그대로 보존되었습니다. 재구축은 공격 이전의 깨끗한 블록에서 시작됐기 때문에, 공격 이전 상태는 그대로 이어졌습니다. 채굴 풀들은 채굴자들이 손해를 보지 않을 것이며, 새 체인이 안정될 때까지 지급을 잠시 멈춘 채 고아 블록으로 인한 부족분을 자체 비용으로 메우겠다고 밝혔습니다.

RVN 전송을 최종 확정으로 여기는 사람들에게 주는 실용적인 교훈은 이것입니다. 해시레이트가 상대적으로 작은 체인에서 확인(confirmation)은 확률이지 약속이 아닙니다. 큰 금액을 옮길 때는 느껴지는 것보다 더 많은 확인을 기다리고, 거래소 입금이 되돌릴 수 없다고 함부로 가정하지 마십시오.

지금 상황은 어떤가

네트워크 해시레이트의 대다수는 패치된 체인 위에 있으며, 주요 블록 탐색기인 Cryptoscope, TokenView, Ravencoin Asset Explorer 모두 동일한 정식 기록을 보여주고 있습니다. 운영자는 높이 검증과 체크포인트 로직이 모두 포함된 v4.8.0 또는 그에 준하는 빌드를 실행해야 합니다. 자신의 노드가 올바른 쪽에 있는지 확인하고 싶다면 블록 4,494,143을 확인해 보십시오. 그 해시는 4c67d6a4로 끝납니다.

레이븐코인은 이전에도 여러 번 타격을 입었고, 그때마다 편한 길보다 깨끗한 길을 선택해 왔습니다. 절대 나오지 말았어야 할 결함이 악용됐고, 정상적인 다수는 오염된 역사를 거부했으며, 패치가 배포됐고, 원장은 축적된 실제 작업으로 재구축되었습니다. 네트워크는 다시 돌아왔습니다.

출처