위험 경고: '가상화폐', '블록체인'이라는 이름으로 불법 자금 모집 위험에 주의하세요. — 은행보험감독관리위원회 등 5개 부처
검색
로그인
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
시장 동향 보기
라이트닝 네트워크의 지속적인 취약점에 여전히 수정 필요 |
话说区块链
特邀专栏作者
2021-01-19 02:36
이 기사는 약 3346자로, 전체를 읽는 데 약 5분이 소요됩니다
우리는 Grief가 비트코인에서 수입을 창출하려는 대규모 "거대한" 채널에 심각한 위협을 가하지만 일정 기간 동안만 자금을 동결한다는 사실을 발견했습니다.

Lightning Network 라우팅 노드가 쓰레기로 가득 차면 어떻게 됩니까? 요컨대 이것은 라우팅 노드에 많은 골칫거리를 만듭니다. 한때 순조로웠던 글로벌 결제 시스템은 요령 있는 스크립터의 손에 거의 노력을 들이지 않고 고정할 수 있습니다.

라우팅 노드의 작은 그룹에서 우리는 자금으로 공격을 성공적으로 테스트했으며 Joost Jager가 설명한 "Griefing" 공격을 시연했습니다. 이 공격은 자금 절도가 아니었기 때문에 "슬픔" 공격이라고 불렸지만 피해자의 플래시 펀드가 동결되는 결과를 낳았습니다. 우리는 Grief 공격이 비트코인으로 수익을 얻으려는 대규모 "wumbo" 채널에 심각한 위협이 되었지만 일정 기간 동안 동결되었음을 발견했습니다.

이것은 대부분 "슬픈" 공격입니다. 손실된 자금은 없지만 피해자는 값비싼 채널 전원 폐쇄 비용을 지불해야 할 수 있습니다. 이것은 특히 비트코인 ​​라이트닝 네트워크의 초기 단계에서 이해하고 우선순위를 정해야 하는 알려진 메인넷 라이트닝 취약점입니다.

이 테스트에 기꺼이 참여해 준 Clark Burkhardt와 Phillip Sheppard와 이 문제에 관심과 중요성을 부여하기 위해 지칠 줄 모르는 노력을 기울인 Jager에게 감사드립니다. Jager는 데모에서 공격자의 역할을 수행했으며 Burkhardt와 Sheppard는 연결된 피해자 라우팅 노드로 대열에 합류했습니다.

공격 작전을 수행하는 방법?

공격자는 최종 결제로 결제할 수 없는 해시된 시간 잠금 계약(HTLC)으로 채널을 포화시킵니다. 이들은 HODL 인보이스라고 하는 특별한 종류의 HTLC입니다. 이러한 해결되지 않은 HTLC 중 483개만이 각 방향에서 채널을 압도하는 데 필요합니다. 이러한 HTLC가 채널에 들어가면 해당 채널을 닫기 위해 협력하는 트랜잭션을 포함하여 동일한 채널 방향을 사용하는 모든 트랜잭션이 불가능합니다.

이론적으로 공격자는 피해자에게 연락하여(아마도 키를 통해 메시지 또는 "양파 링" 전송) 몸값 지불을 요구하여 공격을 중지할 수 있습니다. 몸값이 지불되면 공격자는 미결제 금액을 제거하여 공격을 종료할 수 있습니다. 공격은 무기한 계속되어 채널의 모든 라우팅 및 지불 활동을 중지할 수 있습니다. 이렇게 하면 라이트닝 채널 자금이 동결됩니다.

각 방향(인바운드 및 아웃바운드)에서 483개의 HTLC를 사용하여 하나의 채널에서 두 개의 지불 방향을 중지할 수 있습니다.

공격자는 왜 이런 짓을 할까요?

가장 먼저 떠오르는 동기는 몸값을 요구하는 것입니다. 이러한 공격은 피해자에게 고통을 안겨주며 공격이 멈출 것이라는 보장이 없더라도 몸값을 지불하는 것이 피해자에게 매력적일 수 있습니다. 피해자에게 연락하는 것은 공격자에게 위험할 수 있지만 몸값 지불이 공격자가 하는 유일한 이유는 아닐 수 있습니다.

그리프 공격을 시작하는 두 번째 인센티브는 라우팅 경합을 중단하는 것입니다. 경쟁사의 경로를 차단하면 공격자가 소유한 경로에 대한 수요가 증가할 수 있습니다.

벤치마크로 Lightning Labs의 루프 노드는 유동성이 지속적으로 필요하며 때때로 2,500ppm(0.25%)의 비율로 2,500ppm을 지불한다는 점을 고려하십시오. 내 경험상 그들은 일반적으로 약 2주(연간 성장률 5.2%)에 1,600만 명의 유동성을 소진하지만 경쟁이 있습니다.

루프는 공격자가 더 낮은 수수료율로 경쟁 경로를 비활성화할 수 있는 경우 더 높은 수수료율을 기꺼이 지불할 수 있습니다(이제 유동성 공급이 감소했기 때문). Loop가 3,000ppm(0.3%)을 지불하고 다른 채널이 없기 때문에 이 유동성을 더 빨리 사용할 수 있다고 가정해 보겠습니다. Loop는 그 유동성을 절반, 예를 들어 일주일에 사용할 수 있습니다. 이 예에서 공격자의 정상적인 수익률은 두 배가 되어 15.6%가 됩니다. 공격자에게 드는 유일한 비용은 기존 채널에서 스크립트를 실행하는 비용과 라이트닝 네트워크에서 비윤리적/파괴적으로 행동하는 심리적 비용입니다. 단일 공격자 채널을 사용하여 악의적인 행위자는 약 9개의 채널을 차단할 수 있습니다.

이 공격의 피해자는 어떤 경험을 하게 될까요?

이 공격의 피해자는 보류 중인 HTLC에 대한 몇 가지 특별 경고를 설정하지 않는 한 이 공격이 발생하는지 실제로 알 수 없습니다. Thunderhub 사용자(권장 도구)의 경우 기본 화면에 보류 중인 HTLC의 그래프와 함께 채널이 보류 중인 HTLC를 483개만 보유할 수 있다는 경고가 표시됩니다.

출처: 썬더허브

실제로 내 노드는 빠르게 불안정해졌고 문제를 알려주는 유일한 앱인 Thunderhub를 포함하여 여러 앱 충돌이 발생했습니다. 그러다가 내 "Satoshis' balance" 텔레그램 봇 덕분에 채널 종료 알림을 받았습니다. 공격받는 채널은 자동으로 닫힙니다! 이것은 실험의 일부가 아니어야 합니다(비자발적 힘 협력에 대한 자세한 기술 정보는 아래 추가 힘 힘 데이터 참조).

Burkhardt(salmiak) 채널을 사용한 테스트 결제가 공격으로 인해 실패했습니다. 이 경고는 Burkhardt의 노드가 온라인 상태인데도 오프라인 상태임을 보고합니다. 출처: 썬더허브.

폭행을 멈추기 위해 피해자가 할 수 있는 일

공격이 시작되면 기본적으로 피해자가 공격을 중지하기 위해 할 수 있는 일은 없습니다. 진행 중인 공격을 중지하는 유일한 대안은 공격 중인 채널을 강제로 닫는 것이므로 테러리스트가 승리합니다.

설상가상으로, 채널을 강제로 닫으면 해결되지 않은 지불이 온체인 거래 데이터로 밀려나고 두 번째 온체인 거래가 트리거되어 발신자를 강제로 닫습니다. 50 sat/vbyte 및 483 온체인 트랜잭션에서 이는 공격을 받고 있는 채널을 강제로 종료하는 데 쉽게 100만 sat 가격 표시입니다(현재 가격으로 $368 채널 폐쇄 수수료). 다중 온체인 트랜잭션은 출력이 최소 지불 "더스트" 한도를 초과하는 경우에만 발생합니다. (테스트넷의 예를 참조하십시오.)

Lightning 채널의 개시자는 폐쇄 수수료를 지불합니다.

텍스트

 https://t.co/z6mAGZxvrC종가가 점점 비싸지고 있습니다.

공격을 방지하는 방법

Jager는 공격자를 격리하고 패배시키는 데 도움이 되는 개념 증명 프로그램을 작업하고 있습니다. 그는 자신의 프로그램을 "서킷 브레이커"라고 불렀습니다. 서킷 브레이커는 네트워크 수준에서 작동합니다. 이는 불행하게도 이것이 효과적이려면 모든 사람이 참여해야 함을 의미합니다.

그 외에도 이 문제는 우선순위를 정하고 더 나은 솔루션을 찾기 위해 전담 엔지니어/개발자의 관심을 받아야 합니다. Bitcoin Optech 뉴스레터(No. 122 또는 126)에는 프로토콜 수정에 대한 좋은 토론도 있습니다.

이 공격은 오늘 수행할 수 있습니다. 아직 악의적으로 사용되지 않은 기적. 이것은 오늘날 Lightning을 사용하는 사람들의 열정을 반영하여 개방형 범용 결제 네트워크가 될 수 있습니다. 실제 피해가 발생하기 전에 이 문제를 해결하기 위해 더 많은 작업을 장려하고 영감을 주기 위해 적합하다고 판단되면 이 기사를 공유하십시오.

비자발적 폐쇄력에 관한 추가 기술 정보

위의 강제 종료가 발생할 때 LND 0.11을 실행하는 노드의 로그는 다음과 같습니다.

2020-11-26 21:24:47.374 [ERR] HSWC: ChannelLink(657759:561:0): 링크 없음: ChannelPoint(c37bec006b18df172698a84739ca47128935e0a8666fecd1a843e49b01db207c: 0): 오류 동료로부터 수신: chan_id=7c20db019be443a8d1ec6f66a8e035891247ca3947a8982617df186b00ec7bc3, ERR= 거부된 커밋: commit_height= 455, invalid_commit_sig=3044022076fd65191eb6305b723fa6012be378413b6326e2786c38db58b4c02e1f3999d202207605ca31de8b4c5b1d9cd20dc1 581dfa2383e0b 4e06c8ad4f718ab5c434d8cf5, commit_tx = 02000000017c20db019be443a8d1ec6f66a8e035891247ca3947a8982617df186b00ec7bc300000000008 a792e8002210d00 00000000002200201031cf10a1efef261edd3d0a1a6a953b27bc25bd7150bb2b07afdc69805e02157213000000000000160014de650929042be f58b71783ae1a44834 a902a8f2d542ca720, sig_hash=4e0fb804c74376020e4c44a60969b9206eb0aaa9a89b76017d60f23ad5cf63e5, 오류: 원격 오류

로그에는 LND의 알려진 문제인 "invalid_commit_sig"가 표시됩니다. 아마도 이것은 채널 끊김의 직접적인 결과가 아니라 재연결 시 발생했을 수 있습니다. 유감스럽게도 보류 중인 HTLC의 수로 인해 가능성이 높아졌습니다. Jager는 채널 차단 –> 무한 지불 루프(버그) –> 노드 종료 –> 재연결 –> 유효하지 않은 커밋 신호(버그) –> 채널이 강제로 닫히는 과정을 설명했습니다.

"무한" 루프 오류는 HTLC 제한에 도달하고 추가 HTLC가 전송될 때 발생하는 알려진 버그입니다. LND는 결제 실패를 끝내지 않고 반복 결제를 계속 시도할 것입니다. 이 버그를 해결하려면 LND 문제 #4656을 참조하십시오.

로스트 스타 선발 프로그램
번개 네트워크
Odaily 공식 커뮤니티에 가입하세요