UIUC의 분산 시스템 연구소 (Distributed Systems Lab) 연구원 그룹은 Qtum을 포함하여 수많은 증거 증명 네트워크에 영향을 미치는 "일련의 자원 고갈 취약점"을 발견했습니다.
분명히하기 위해, 위험에 처한 자금은 없었습니다. 팀이 설명하는 공격은 한 번에 하나의 노드에 대해서만 실행할 수있는 DoS (Denial-of-Service) 공격 유형입니다.
그럼에도 불구하고 우리는 버그에 대한 책임있는 공개를 통해 수개월 동안이 연구원들과 연락을 취했습니다. 지난 주에 공개되기 전에 문제를 해결할 수 있도록 분산 시스템 연구소의 연구 및 그들이 우리에게 알리는 방법에 감사드립니다.
연구원은 두 가지 유형의 공격을 제시했습니다.
원래 기사에서 언급했듯이 "스테이크 없음"취약점 만 Qtum에 영향을 미쳤습니다. 그러나 우리는 이미 0.16.2 릴리스에서이 벡터의 공격 위험을 완화했습니다.
"No Stake"공격은 유사한 두 개의 공격 벡터로 구성되어 있으며 두 번째 공격 벡터의 경우 첫 번째 공격 벡터 또는 디스크 공간의 경우 공격자가 피어를 메모리 부족 상태로 만들 수 있습니다.
첫 번째 공격 벡터는 머리글을 메모리에 저장하기 전에 유효성 검사가 충분하지 않아 발생합니다. 따라서 잠재적 공격자는 동료에게 잘못된 헤더를 범람시켜 메모리가 부족해질 수 있습니다. 이것이 가능한 이유는 Qtum이 Bitcoin의 헤더 0.10.0에서 소개 된 첫 번째 기능을 상속 받았기 때문입니다. Bitcoin에서 헤더의 작업 증명 (PoW)은 헤더가 메모리에 저장되기 전에 유효성이 검사됩니다. 그러나 Qtum의 PoS (proof-of-stake) 프로토콜에는 PoW가 존재하지 않으며 Qstum의 PoS는 coinstake 트랜잭션이 블록에 위치하기 때문에 전체 블록을받은 후에 만 유효성을 확인할 수 있습니다. 따라서 잠재적 인 공격은 다수의 유효하지 않은 헤더를 생성하여 동료에게 전송하여 메모리가 부족해질 수있었습니다.
두 번째 공격 벡터는 Qtum이 전체 블록 유효성 검사를 수행하는 방법 /시기와 관련이 있습니다. Qtum에서 전체 블록 유효성 검사 및 coinstake 유효성 검사는 이전 블록의 체인 워크보다 전체 체인 워크가 많은 새 블록을 수신하면 수행됩니다. 결과적으로 PoS의 전체 검사는 현재 팁에 새 블록이 추가 될 때 또는 현재 팁보다 총 체인 워크가 많아서 블록 재구성을 트리거하는 포크 팁이 수신 된 경우에만 수행됩니다. 그러나 Qtum의 이전 버전에서는 노드가 현재 팁의 체인 워크와 같거나 큰 체인 워크를 가진 블록을받은 경우 새 블록이 디스크에 커밋되었습니다. 따라서 공격자는 동료가 PoS의 유효성을 완전히 검사하지 않고 디스크 블록을 만들어 디스크 공간이 부족하게 만들 수 있습니다.
권장 업데이트 인 Qtum의 v0.16.2 에는 다음과 같은 형태의 향상된 네트워크 보안 및 버그 수정이 포함되었습니다.
블록 / 디스크 공격은 Qtum이 블록을 디스크에 커밋 할 때 약간의 조정 만 필요했습니다. 블록이 팁의 체인 워크가 활성 팁의 체인 워크보다 큰 체인의 일부인 경우에만 블록이 이제 디스크에 커밋됩니다.
헤더 / 메모리 공격은 잠재적 인 헤더 스팸의 탐지를 구현하고 불쾌한 피어의 연결을 끊고 금지함으로써 완화되었습니다. 이전에 전체 블록을 받았을 때만 수행 된 여러 검사가 독립형 헤더 검사에도 추가되었습니다. 헤더 스팸을 증폭하는 데 큰 유효하지 않은 서명이 사용될 수 있으므로 헤더를 메모리에 커밋하기 전에 헤더에 포함 된 서명이 올바른 형식인지 확인하는 것과 같이.
v0.16.2에서 구현 된 네트워크 스팸 방지 기능은 "No Stake"공격을 실행하려고 시도하는 피어를 탐지하여 금지합니다. 이제 노드는 체인 작업이 현재 팁보다 엄격하게 큰 경우 피어의 블록 만 요청합니다. 이러한 대응책 외에도 PoS 타임 스탬프, 블록 인덱스, 서명 유형 (LowS) 및 동기화 및 롤링 체크 포인트에 대한 추가 헤더 검사를 추가했습니다.
우리는 추가 된 복잡성과 보안 기능을 구현하기 때문에 이러한 패치를 통해 공격을 거의 불가능하게 만들 수 있다고 믿습니다. 그럼에도 불구하고 우리는 초기 테스트를 통과 한보다 포괄적 인 수정 작업을 진행하고 있지만, 프로토콜에 대한보다 실질적인 변화이므로 더 많은 테스트가 필요합니다.
https://blog.qtum.org/re-fake-stake-attacks-on-chain-based-proof-of-stake-cryptocurrencies-f26d58dc8f46