🇰🇷 한글 설명
Nimiq의 Albatross 합의 알고리즘 기반 Rust 구현체에서 발생하는 취약점으로, 악의적인 상태 동기화 피어가 중복된 키를 포함한 조작된 TrieChunk 증명을 전송할 경우 동기화 노드가 충돌할 수 있습니다. 이 문제는 암호학적 검증 전에 신뢰할 수 없는 데이터가 처리되어 발생하며, 1.6.0 버전 미만에서 영향을 받습니다.
💡 쉬운 설명
동기화 과정에서 가짜 데이터를 보내는 공격자가 네트워크 노드를 강제로 종료시킬 수 있는 문제입니다. 공격자가 노드를 완전히 파괴하지는 못하지만, 노드가 계속 재시작되게 만들어 정상적인 작동을 방해할 수 있습니다.
🇺🇸 원문 (English)
Nimiq is a Rust implementation of the Nimiq Proof-of-Stake protocol based on the Albatross consensus algorithm. Prior to 1.6.0, a malicious state-sync peer can crash a syncing node by sending a crafted TrieChunk proof containing two TrieProofNode values with identical keys. TrieProof::verify calls TrieProofNode::child_index in primitives/src/trie/trie_proof_node.rs, where is_prefix_of accepts equal keys and KeyNibbles::get is called at the key length, returns None, and is unconditionally unwrapped. Untrusted ResponseChunk data reaches commit_chunks, put_chunk, and proof.verify before cryptographic proof validation, so the attacker does not need a valid proof. Exploitation requires the attacker to be selected as the victim's sync peer during state sync, and the resulting panic is transient because the node restarts and resynchronizes. This issue is fixed in version 1.6.0.
📍 영향받는 시스템
Nimiq (Rust implementation) 1.6.0 미만 버전
⚔️ 공격 벡터
상태 동기화(State Sync) 과정 중 악의적인 피어가 조작된 TrieChunk 증명을 전송
🛡️ 대응 방법
Nimiq를 1.6.0 버전 이상으로 업데이트
🔧 검증 코드
출력 결과에 1.6.0 이상의 버전이 표시되면 안전하며, 그렇지 않으면 취약할 수 있습니다.
nimiq --version 2>/dev/null | grep -E '1\[.6.0' || echo 'Vulnerable or not installed'