3년 된 보안 결함, 13억 원 탈취 및 10일간 블록체인 중단 초래

암호화폐 네트워크 라딕스(Radix)에서 3년 동안 숨겨져 있던 소프트웨어 결함이 약 13억 원(130만 달러) 상당의 자산 탈취와 10일간의 블록체인 운영 중단을 야기했다.
라딕스 재단은 지난 9월 17일, RDX Works 개발팀이 2023년 6월 라딕스 엔진(Radix Engine)을 개선하는 과정에서 해당 결함을 발생시켰다고 밝혔다. 라딕스 엔진은 네트워크 전반의 거래를 실행하고 자산 소유권을 강제하는 핵심 소프트웨어 계층이다. 이 취약점은 발견되기까지 3년 이상 잠복해 있었으며, 결국 공격자에 의해 8월 31일 악용되었다.
커뮤니티의 복구 분석에 따르면, 공격자는 약 458,915 USDC, 72,420 USDT, 61.08 ETH, 6.35 Wrapped Bitcoin, 536.16 SOL, 32.91 BNB를 26건의 거래를 통해 인출했다. 8월 31일 시장 가격 기준으로 총 가치는 약 126만 달러에 달한다. 또한 공격자는 거래 수수료를 지불하기 위해 13,000 XRD를 추가로 탈취했다. 스테이블코인 두 종류만으로도 약 531,335 달러에 달하는 피해가 발생했다.
탈취된 자산은 하이퍼레인(Hyperlane)을 통해 이더리움(Ethereum), BNB 체인(BNB Chain), 솔라나(Solana)로 전송된 후 ETH로 판매되었다고 라딕스는 설명했다. 하이퍼레인 자체는 정상적으로 작동했으며, 공격자는 이미 라딕스 엔진을 통해 자산을 확보한 후 브리지를 이용해 다른 네트워크로 이동시킨 것으로 파악되었다. 이번 사건으로 개인 키가 유출되지는 않았다.
하지만 즉각적인 자산 손실은 잠재적 위험의 일부일 뿐이었다. 라딕스 조사팀은 해당 결함이 네트워크상의 모든 볼트(Vault, 자산 보관소)에 대해 악용될 수 있었으며, 공격자가 노린 브릿지 연결 자산 외에도 다른 토큰 및 자산이 위험에 노출될 가능성이 있었다고 결론 내렸다.
이러한 심각한 위험에 대응하기 위해, 네트워크 검증자(Validator)들은 개발팀이 수정 작업을 완료할 때까지 추가적인 거래 발생을 막기 위해 의도적으로 충분한 양의 스테이킹(Staking) 물량을 오프라인으로 전환하여 합의(Consensus) 형성을 방해했다. 이로 인해 네트워크는 10일 동안 운영이 중단되었다.
**라딕스 감사 오류, 유지보수 버그가 시스템적 실패로 번지다**
이 취약점은 공격자가 발견하기 전 이미 독립적인 보안 감사(Audit)를 통과한 것으로 밝혀져 충격을 더하고 있다. Zellic은 2024년에 라딕스 프로토콜에 대한 감사를 수행했으며, 결함이 포함된 엔진 커널(Engine Kernel) 부분도 검토 대상에 포함되었다. 그러나 감사 과정에서 해당 권한 관련 오류를 탐지하지 못했다. 더욱이, 취약한 코드는 이미 이전 연도(2023년)의 코드 리팩토링 과정에서 도입된 것이었다.
이 버그는 엔진이 볼트 참조를 처리하는 방식에 근본적인 변화를 일으켰다. 공격자는 특정 거래를 통해 다른 사용자의 볼트를 내부 주소로 식별하고, 해당 참조를 목적에 맞게 설계된 스마트 계약 코드에 전달할 수 있었다. 엔진은 이 과정에서 일반적인 출금 기능을 허용하면서도, 요청을 거부해야 하는 소유권 경계(Ownership Boundary)를 제대로 강제하지 못했다.
결과적으로, 공격자는 자산 소유자의 서명을 획득하지 않고도 사용자 계정, 애플리케이션, 유동성 풀 등에 보관된 자산에 접근할 수 있게 되었다. 라딕스 재단은 공격자가 총 26건의 악용 거래를 완료했다고 밝혔다.
이번 사건은 코드 유지보수 및 업데이트 과정에서의 철저한 검토와 비상 대응 시스템의 중요성을 다시 한번 강조한다. 특히, 이미 외부 감사를 통과한 코드가 심각한 보안 결함을 숨기고 있었다는 점은 암호화폐 업계 전반에 걸쳐 보안 감사 프로세스의 강화 필요성을 시사한다.
향후 라딕스는 이러한 시스템적 위험을 초래할 수 있는 유지보수 변경 사항을 방지하기 위해 코드 검토 및 비상 대응 절차를 더욱 강화해야 하는 과제에 직면하게 되었다. 이는 라딕스 생태계의 신뢰 회복과 장기적인 성장에 필수적인 요소가 될 것이다.
라딕스 엔진의 근본적인 취약점은 기존의 보안 감사 메커니즘이 모든 종류의 잠재적 위험을 완벽하게 포착하지 못할 수 있음을 보여준다. 특히, 시간이 지남에 따라 코드베이스가 복잡해지고 변경 사항이 누적되면서, 과거에는 발견되지 않았던 결함이 새로운 공격 벡터를 통해 드러날 수 있다. 이번 사례는 단순한 버그 수정 이상의, 보다 근본적인 개발 및 감사 프로세스의 재정립을 요구하고 있다.