비트코인 라이트닝 노드, 재연결 허점으로 도난 위험

비트코인 라이트닝 네트워크(LN) 애플리케이션 개발에 사용되는 핵심 라이브러리인 라이트닝 개발 키트(LDK)에서 심각한 보안 취약점이 발견되어 개발자들의 주의가 요구된다. 이 취약점은 악의적인 노드가 재연결 시점을 이용해 포워딩된 결제의 가치를 훔칠 수 있도록 허용하며, 즉시 패치가 적용된 라이브러리로 업데이트하는 것이 시급하다.
최근 공개된 LDK v0.2.7 및 v0.1.13 버전은 이 '재연결 취약점'을 해결하기 위한 보안 패치를 포함하고 있다. 비트코인 Optech은 10월 9일 뉴스레터를 통해 해당 수정 사항을 상세히 설명했으며, 이는 라이트닝 네트워크의 안정성과 보안에 중요한 영향을 미칠 수 있다.
**재연결 허점, 비트코인 도난으로 이어지는 시나리오**
이 공격은 악의적인 채널 상대방이 먼저 업데이트를 인지했음을 시사한 뒤, 재연결 과정에서 이를 수신하지 못했다고 거짓 주장하는 것에서 시작된다. LDK의 이전 버전에서는 이러한 거짓 주장이 LDK로 하여금 충돌하는 커밋먼트 트랜잭션(commitment transaction)에 서명하도록 유도할 수 있었다. 커밋먼트 트랜잭션은 채널의 합의된 상태를 나타내며, 비트코인 블록체인 상에서 이를 정산하는 데 사용된다.
PR 5057에서 설명된 시나리오에 따르면, 새로 서명된 트랜잭션은 LDK의 채널 모니터(channel monitor)에 기록되지 않는다. 채널 모니터는 채널의 온체인 주장을 추적하는 구성 요소이다. 이러한 기록 누락은 포워딩된 결제가 손실로 이어질 수 있는 상황을 초래한다. 악의적인 송신자는 해당 트랜잭션을 온체인 상에서 확정시킨 후, 다음 수신자에게 결제가 정산되도록 할 수 있다. 이후, 원래 결제를 청구하는 데 사용되는 비밀 정보(secret)를 전달받은 포워딩 노드가 이를 알고 있음에도 불구하고, 만료 시점에 돌아오는 수신 계약을 다시 회수할 수 있게 된다. 결과적으로 포워딩 애플리케이션은 상응하는 수신 자금을 회수하지 못한 채 하류로 지급하는 상황에 처하게 되는 것이다.
이번 패치는 상대방의 승인이 아직 유효한 동안에만 재전송을 허용하며, 상대방이 이미 승인된 업데이트를 놓쳤다고 주장할 경우 채널을 강제 종료하도록 함으로써 이러한 위험을 방지한다.
**LSPS2 관련 추가 취약점 및 해결책**
LDK 재연결 취약점 수정과 더불어, 버전 0.2.7은 LSPS2(Liquidity as a Service Provider)와 관련된 또 다른 도난 경로도 해결한다. LSPS2는 결제를 처리하는 과정의 일부로 유동성 서비스가 채널을 개설하는 방식이다. 이 흐름에서, 가로채진 결제가 금액을 잘못 보고하는 경우, 서비스 제공업체는 실제 수신된 결제 금액보다 더 많은 비트코인을 채널을 개설하고 전달하게 된다. 이 경우 서비스 제공업체는 자신의 자금으로 차이를 부담하게 된다. PR 5042는 이러한 금액 확인 절차를 강화하는 데 초점을 맞추고 있다.
이러한 위험은 LSPS2 서비스 흐름과 관련이 있으며, v0.1.13 릴리즈 노트에는 LSPS2 수정 사항이 명시적으로 언급되지 않고 공유 재연결 수정 사항만 나열되어 있다. 이는 사용자들에게 주의를 기울여야 할 부분을 시사한다.
이러한 결함들은 9월 13일 CryptoSlate에서 보도했던 LDK v0.2.6 보고서에서 다루어진 'splice-fee diversion' 및 'saved-state loading' 버그와는 별개의 문제이다. 또한, Core Lightning은 LDK와는 다른 구현체로서, 업데이트에서 설명된 내용과는 구별된다.
**개발자의 역할과 책임**
LDK의 아키텍처 문서에 따르면, SDK는 애플리케이션 내에서 컴파일되고 실행된다. 따라서 애플리케이션 개발자들은 배포된 소프트웨어에 관련 패치 라이브러리 코드를 통합해야 하는 책임이 있다. LDK v0.2.7을 사용하는 경우, 두 가지 주요 수정 사항(재연결 취약점 및 LSPS2 관련 금액 오류)을 모두 적용해야 한다. v0.1.13을 사용하는 경우, 재연결 취약점 수정이 적용된다.
라이트닝 네트워크는 비트코인의 확장성을 높이는 중요한 기술이지만, 이러한 보안 취약점은 네트워크의 안정성에 대한 우려를 제기한다. 개발자들은 최신 보안 정보를 주시하고, 잠재적인 위험을 최소화하기 위해 신속하게 업데이트를 적용해야 한다. 또한, 이전 버전의 LSPS2 계약으로 인해 발생할 수 있는 문제를 염두에 두고 대비해야 한다. LDK는 지속적으로 발전하고 있으며, 커뮤니티는 이러한 취약점 해결을 통해 라이트닝 네트워크의 신뢰도를 높이는 데 기여할 것이다.