라이트닝 개발 키트(LDK)가 미공개 라이트닝 채널과 비트코인(BTC) 블록체인의 자금 조달 출력을 연결하던 온니언 메시지 탐지 경로를 차단했다.
수정안 PR 5314는 한국시간으로 10월 26일 LDK 저장소에 병합됐다. 크립토슬레이트(CryptoSlate)도 코드 수정 사실을 보도했다.
LDK는 라이트닝 네트워크를 사용하는 노드와 지갑·앱 개발에 쓰이는 라이브러리다. 이번 변경은 LDK의 온니언 메시지 전달 기능에 적용됐다.
라이트닝 네트워크에서는 양측이 결제 채널에 비트코인을 예치한 뒤 블록체인 밖에서 결제를 주고받는다. 채널을 여는 자금 조달 거래는 블록체인에 기록된다.
채널을 공개 네트워크 지도에 알리지 않으면 다른 노드는 그 채널을 공개 라우팅 정보에서 볼 수 없다. 그러나 채널이 공개되지 않았다고 해서 자금 조달 거래의 출력까지 블록체인에서 감춰지는 것은 아니다.
라이트닝 명세 BOLT 7은 짧은 채널 ID(SCID)를 블록 높이, 해당 블록의 거래 위치, 거래 안의 출력 위치로 정의한다. 이 세 요소는 채널 자금을 댄 비트코인 거래의 특정 출력을 가리킨다.
비트코인 옵텍(Bitcoin Optech)은 10월 30일 소식지에서 공격자가 블록체인상 출력 위치를 바탕으로 후보 SCID를 계산할 수 있다고 설명했다. 이 후보값으로 미공개 채널의 실제 식별자를 추정할 수 있었다.
공격자는 의심되는 채널 양쪽 노드에 모두 연결한 뒤, 두 노드를 거쳐 자신에게 되돌아오는 온니언 메시지(onion message) 경로를 구성할 수 있었다. 이 경로에 후보 SCID를 넣어 메시지가 전달되는지 확인하는 방식이다.
메시지가 되돌아오면 공격자는 해당 출력과 두 노드 사이 채널이 연결돼 있음을 확인할 수 있다. 온니언 메시지는 노드 사이에 전달되는 메시지로, 그 자체가 비트코인 송금은 아니다.
수정 전 LDK는 자금 조달이 확정된 미공개 채널의 실제 SCID도 온니언 메시지 경로에서 다음 노드를 찾는 데 사용했다. 이에 따라 채널이 공개 지도에 없어도 실제 자금 조달 출력과 연결될 수 있었다.
수정 후 LDK는 미공개 채널의 실제 SCID를 온니언 메시지 전달에 사용할 수 없도록 했다. 공개된 채널은 실제 SCID로 식별할 수 있고, 변경은 미공개 채널의 메시지 전달 경로에 한정된다.
채널 별칭은 계속 사용할 수 있다. 별칭은 실제 비트코인 출력의 블록체인상 위치를 담지 않으므로, 메시지 전달에서 채널을 지정하면서 자금 조달 위치를 드러내지 않는다.
이 제한은 결제 전달 경로보다 엄격하다. 일부 미공개 채널은 설정에 따라 실제 SCID를 이용해 결제를 중계할 수 있지만, 온니언 메시지 전달에서는 미공개 채널의 실제 ID를 다음 노드 조회에 쓰지 못한다.
이 탐지 방식이 성립하려면 공격자가 의심 대상인 양쪽 노드에 연결돼 있어야 하고 후보 SCID도 알아내야 한다. 방식 자체가 비트코인을 탈취하거나 개인키를 노출하는 것은 아니며, 모든 미공개 채널이 자동으로 드러난다는 뜻도 아니다.
LDK는 앱에 포함되는 라이브러리여서 코드 병합만으로 이용자 지갑이 바뀌지는 않는다. 이번 수정이 포함된 제품은 공개된 정보에서 확인되지 않아, 이용자는 각 제품의 업데이트 내역을 살펴봐야 한다.
<Copyright ⓒ TokenPost, unauthorized reproduction and redistribution prohibited>
Most Popular