BOLT11, 결제 해시·시크릿 중복 요청서 거부한다
라이트닝 네트워크 결제 요청서 BOLT11이 결제 해시와 결제 시크릿을 각각 하나씩만 허용하도록 바뀌었다. 소프트웨어별 해석 차이로 완료된 출금이 미지급으로 처리되는 문제를 막기 위한 조치다.
토포AI로 이 기사 더 깊이 읽기
라이트닝 네트워크의 BOLT11 결제 요청서가 결제 해시와 결제 시크릿을 각각 하나씩만 담도록 바뀌었다. 요청서를 읽는 소프트웨어는 두 필드 중 하나라도 없거나 중복되면 결제를 거부해야 한다.
라이트닝 규격 저장소는 10월 19일 BOLT11 변경안을 병합했다. 중복 필드의 값이 서로 같아도 예외는 없다. 이번 개정은 소프트웨어마다 요청서를 다르게 해석할 여지를 줄이는 데 초점을 맞췄다.
BOLT11은 라이트닝 네트워크에서 결제를 요청할 때 쓰는 형식이다. 결제 해시는 결제에 필요한 정보를 식별하는 값이며, 결제 시크릿은 라이트닝 결제 경로에서 수신자를 탐색하는 행위를 막는 데 쓰인다. 요청서에는 여러 정보가 담기지만, 이번 변경은 ‘p’ 필드와 ‘s’ 필드의 개수를 검사하도록 했다.
문제는 소프트웨어마다 중복 결제 해시를 처리하는 방식이 달랐다는 점이다. 일부는 첫 번째 해시를, 다른 곳은 마지막 해시를 선택했다. 기존 BOLT11 규격은 결제자에게 첫 번째 해시를 사용하도록 권고했지만, 중복 해시가 든 요청서를 반드시 거부하라고 요구하지는 않았다.
라이트닝 개발자 로아스비프(Roasbeef)는 9월 10일 변경안 설명에서 텔레그램 P2P 봇이 이 차이를 악용한 해킹을 당했다고 밝혔다. 봇이 요청서에서 읽은 해시와 노드가 실제 결제에 사용한 해시가 다르면, 출금이 끝난 뒤에도 서비스 기록에는 미지급으로 남아 추가 지급이 이뤄질 수 있다. 해킹 피해 시점과 손실액은 공개되지 않았다.
규격 개정에 앞서 라이트닝 노드 소프트웨어 LND에도 중복 결제 해시를 거부하는 수정이 반영됐다. 해당 변경은 9월 23일 병합됐다. 비트코인옵텍(Bitcoin Optech)은 LND가 기존에는 첫 번째 해시를 사용하고 나머지는 무시했다고 설명했다. 요청서를 읽는 다른 소프트웨어가 별도의 해시를 선택하면 완료된 출금을 미지급으로 오인할 수 있다는 것이다.
개별 소프트웨어의 적용 범위는 규격 개정과 구분해야 한다. LND의 결제 해시 중복 거부는 병합됐지만, 결제 시크릿 중복 거부 등 디코더 검사를 넓히는 별도 제안은 10월 27일 기준 열린 상태였다. 규격 변경만으로 모든 라이트닝 서비스가 같은 검사를 수행한다고 볼 수는 없다.
비트코인옵텍은 서비스가 요청서를 해석하는 방식과 노드가 실제 결제에 쓰는 해시가 일치하는지 확인하고, 출금 기록이 노드의 결제 해시를 따르는지 살펴야 한다고 설명했다.

김하린 기자 




Comment 0
불러오는 중…