Zebra 6.4.2, 원격 충돌 긴급 패치
6.4.0과 6.4.1에서 메시지 하나로 노드를 멈출 수 있는 고위험 취약점이 발견돼 두 버전은 회수됐습니다. 해당 버전 운영자는 즉시 6.4.2로 올려야 합니다.
Zcash Foundation이 Zebra 6.4.2를 긴급 보안 릴리스로 공개했다. Zebra 6.4.0과 6.4.1에서 단 하나의 네트워크 메시지만으로 어떤 피어든 노드를 중단시킬 수 있는 고위험 취약점이 발견됐기 때문이다. 두 버전은 모두 회수(recall)됐으며, 해당 버전을 운영하는 노드는 즉시 6.4.2로 업그레이드해야 한다. 6.3.0 이하 버전은 영향을 받지 않고, 6.4.2에는 6.4.1에서 배포된 동기화 정체 수정도 포함돼 있다.
취약점은 GHSA-h5rr-8pqv-grp9로, 심각도는 High다. Zebra 6.4.0이 트랜잭션 파싱을 공용 zcash_primitives 라이브러리로 옮기면서 NU6.3 이전의 consensus branch ID를 가진 v6 트랜잭션을 거부하는 검사가 빠졌다. Zebra는 이런 트랜잭션을 파싱할 수는 있지만 다시 직렬화할 수는 없는데, 수신한 모든 트랜잭션의 크기를 계산하려고 재직렬화하면서 이 단계가 실패하지 않는다고 가정했다. 그 결과 악성 tx 메시지 하나로 노드가 종료됐다.
공격에는 인증도, 핸드셰이크 완료도, 특별한 설정도 필요하지 않으며 재시작 직후 같은 공격을 반복해 노드를 계속 내려둘 수도 있었다. 설정 변경으로 노출을 없앨 방법도 없다. 다만 영향은 가용성에 한정되고 합의나 자금에는 영향이 없다. 이 문제는 Google OSS-Fuzz의 지속적 퍼징에서 처음 발견됐고, @SphereDonout과 @v12security가 6.4.0 배포 이후 독립적으로 제보했다. 6.4.2는 파싱 시점 검사를 복원해 해당 트랜잭션을 수신 즉시 거부한다.
6.4.0과 6.4.1은 GitHub 릴리스 페이지에 회수 공지가 붙었고, zfnd/zebra Docker 태그가 삭제됐으며 crates.io의 zebrad 해당 버전도 yank 처리됐다. 두 버전의 모든 기능과 수정이 6.4.2에 들어 있어 업그레이드로 잃는 것은 없다. 6.4.2는 x86_64와 aarch64용 Linux 바이너리를 제공하는 GitHub 릴리스, crates.io, Docker Hub(zfnd/zebra:6.4.2)에서 받을 수 있다. 라이브러리 사용자는 수정이 반영된 zebra-chain v13.0.1로 올려야 한다.
한국어 요약은 원문을 바탕으로 정리한 것으로, 정확한 내용은 원문을 확인하세요.