Halborn 취약점·네트워크 모니터링
메모리 고갈 취약점 대응을 마친 뒤 Ziggurat 크롤러와 공개 네트워크 모니터링이 논의됐다
안건별 요약 7
Zebra 업데이트 - 네트워크 프로토콜 보강과 감사
Zcash Foundation · Teor
- Halborn이 공개한 취약점에 대응해 Zebra의 네트워크 프로토콜 구현을 보강했다. Zebra는 직접 영향받지 않았지만 비슷한 경미한 문제를 선제적으로 강화했다.
- 32비트의 Halo 2 증명 문제를 위해 증분 머클 트리 버전을 올렸고 orchard 업데이트가 남았다. 현재 Zebra는 beta나 nightly Rust로 컴파일하면 동작하지 않으며 수정된 orchard를 기다린다.
- Zebra 감사에서 지적받은 이슈를 분류하고 수정하는 중이다. 지금까지는 낮음 또는 정보성 수준이고 심각한 이슈는 없으며, 감사자는 곧 더 최근 기능으로 넘어간다. 채굴 풀 지원도 백그라운드로 계속한다.
Zcashd 업데이트 - Halborn 취약점 대응과 지갑 개편
Electric Coin Company · Daira, Kris
- 메모리 고갈을 통한 서비스 거부 보안 이슈가 전면 공개됐다. ECC와 발견한 보안 업체 Halborn이 각각 글을 냈고, 공개 절차가 예상보다 오래 걸려 최근 몇 주 대부분을 완화에 썼다.
- 이후 zcashd 의존성을 정리했다. 32비트 버그를 고치려 ff 유한체 크레이트를 변경했고, Daira는 zcashd의 ZIP 317 블록 구성 구현을 진행해 테스트를 통과시키는 단계다.
- zcashd 지갑의 트랜잭션 구성 내부를 크게 리팩터링해 병합했다. 4개이던 구현이 하나가 되어 z_mergetoaddress와 z_shieldcoinbase에서도 Orchard와 통합 주소를 쓸 수 있다.
- 모바일 지갑의 빠른 갱신에 쓸 샤드 노트 커밋먼트 트리 구현도 병합했다. Rust Sapling 코드의 타입 안전성 리팩터링도 반영됐다.
네트워크 모니터링 논의 - Ziggurat 크롤러
Equilibrium (Ziggurat) · Mark Henderson, Piotr Olszewski, Teor, Dodger
- Teor는 거래 스팸 같은 공격을 일찍 탐지하도록 노드 수 외에 트래픽, 체인 포크, 프로토콜 검열, 큰 거래나 블록 등을 모니터링하자고 제안했다. Dodger는 활발한 프로젝트인 Ziggurat 팀을 초청했다.
- Ziggurat은 크롤러 업데이트로 3D(WebGPU) 네트워크 시각화와 지능형 피어 공유 두 기능을 냈다. 시각화는 실시간이 아닌 스냅샷 기반이다.
- 지능형 피어 공유는 크롤러가 신뢰할 만한 피어 집합을 들고 다니며 섬(island) 형성을 막고 중심 노드 의존도를 낮추는 것이다. 결과는 유망했으며 메인넷에는 아직 적용하지 않았다.
- 초기 시험에서 프로토콜이 인식하지 못하는 명령 문자열이 떠도는 것을 발견했고, 크롤러는 현재 휴면 상태로 보인다고 했다. Daira는 핸드셰이크 이후인지 물었다.
- Piotr는 크롤러가 한 네트워크의 정상 노드만 따라가며, 다른 큰 네트워크를 만나면 합치지 않고 사용자에게 알린다고 설명했다. Dodger는 DNS seeder에 이런 로직을 넣어 더 나은 피어를 주는 방안을 물었다.
Firo 노드 혼입과 노드 수 추정
Kris, Daira, Dodger, Teor, Nate
- Kris는 Firo가 Zcash 네트워크 프로토콜을 침범한다고 지적했다.
- Firo는 같은 네트워크 매직을 쓰고 magicbean 6.x 버전 문자열을 써서 일부 블록체인 탐색기는 Zcash 노드를 약 7000개로 센다고 Dodger가 설명했다.
- Daira는 탐색기가 핸드셰이크만 통과하면 노드로 세는 것 같고, 실제 Zcash 노드는 Firo 노드를 곧 차단한다고 했다. 전통적으로 합의된 Zcash 노드 수는 200~220개로, 라이트월렛 사용자가 많다는 점이 언급됐다.
- Nate는 정직한 노드는 통과시키고 우연히 같은 프로토콜을 쓰는 노드는 걸러내는 하위 비호환 핸드셰이크 변경이 가능한지 물었고, Daira는 가능하지만 우선순위는 낮다고 했다.
Firo 노드 구분 방법과 주소 전파
Kris, Daira, Dodger, Teor, Nate
- Teor는 포트(Firo 8168), 사용자 에이전트, 블록 높이(Firo 약 130만, Zcash 약 220만)로 구분할 수 있다고 했다. 구버전 5.0 미만은 NU5 비호환이다.
- Dodger는 zcashd 6.x 출시 때 사용자 에이전트에 zcash를 넣는 방안도 언급했다.
- Piotr는 정상 Zcash 노드가 Firo 노드를 차단했다면 get addr로 광고도 말아야 한다고 지적했고, Daira는 주소 관리자 코드를 봐야 한다고 했다.
- Teor는 Zebra의 다른 네트워크 스택이 Firo 주소를 전파하는 가능성도 짚었다.
노드 연결 판정과 ECC 모니터링 공개 제안
Electric Coin Company · Nate, Daira, Piotr Olszewski, Teor, Kris, Dodger
- Ziggurat은 getaddr 응답(최대 1000개)을 연결된 피어로 보고 접속에 성공한 좋은 노드만 목록에 둔다.
- Daira는 zcashd의 기본 피어 한도가 125이며 응답에는 과거에 알던 주소도 있고, Teor는 Zebra가 IPv6 등을 만료 전까지 전파해 연결성이 가능성을 뜻한다고 했다.
- Daira는 가십 대상 주소를 더 엄격히 할지 고민하되 섬 형성이나 신규 노드 전파 방해 부작용이 있다고 했다. Kris는 inventory 메시지로 노드가 따르는 체인을 파악하자고 제안했다.
- Nate는 ECC 인프라 팀이 쓰는 모니터링과 경보 도구를 오픈소스로 공개하자고 제안했다. Daira는 현재 모니터링하는 노드가 있고 흩어진 메모를 Ziggurat과 비교해 중복을 피하자고 했다.
- ECC 인프라 팀, Ziggurat 등과 별도 통화를 열기로 했다. Nate는 모바일 지갑 성능에 집중 중이라 약 한 달 뒤가 적당하다고 했다.
- Piotr는 DNS seeder에 피어 추천 기능을 붙이는 구상을 언급했고 Daira는 노드 시야를 외부가 좌우하면 공격이 될 수 있다고 했다.
지갑 성능 소통 개선
Electric Coin Company · Nate, Dodger
- Nate는 지갑 성능 개선 작업이 엔지니어링상 진척이 있지만 소통이 부족했다고 인정했다. 곧 모든 노력과 일정을 설명하는 블로그 글을 낼 예정이다.
- Dodger가 이 주제의 상시 안건을 제안했고 Nate는 담당자와 확인한 뒤 정기 업데이트가 좋겠다고 했다.
한국어 요약은 원문을 바탕으로 정리한 것으로, 정확한 내용은 원문을 확인하세요.