피드로 돌아가기
Dev.toSecurity
원문 읽기
Midnight dApp의 ZK-Circuit 런타임 취약점 방지를 위한 보안 설계 프레임워크
Security Checklist for Midnight dApps Before Deployment
AI 요약
Context
EVM 기반 스마트 컨트랙트와 달리 ZK-Circuit 아키텍처는 증명 생성 단계에서만 발생하는 제약 위반 및 무음 데이터 누출(Silent Leak)이라는 특수한 실패 모드 존재. 기존 단위 테스트로 검출 불가능한 Witness 버그와 Private State의 의도치 않은 공개 위험으로 인한 고도의 보안 검증 필요.
Technical Solution
- disclose() 함수 전수 조사를 통한 Private State의 Public Ledger 전송 경로 통제 및 간접 누출 가능성 차단
- 사용자 입력 기반 PublicKey 수신 구조를 ownPublicKey() 직접 참조 방식으로 변경하여 신원 사칭(Impersonation) 공격 원천 봉쇄
- 순차적 작업에 대한 User-specific Nonce 도입 및 1회성 자산 소비를 위한 Cryptographically bound Nullifier 적용을 통한 Replay Attack 방지
- Dual Ledger 모델의 Exported Field 정의 단계에서 공개 범위 재검토를 통한 영구적 데이터 노출 리스크 관리
- 온체인 Circuit뿐 아니라 오프체인 Witness Generator 및 키 관리 프로세스를 포함한 엔드투엔드 보안 체계 구축
실천 포인트
- 모든 disclose() 호출의 의도적 공개 여부 및 파생 데이터의 Private 정보 추론 가능성 검토 - 외부 입력 PublicKey 대신 시스템 제공 ownPublicKey() 사용 우선순위 적용 - 상태 변경 모든 작업에 대해 Nonce 또는 Nullifier 기반의 Replay Protection 구현 여부 확인 - Exported Ledger 필드 정의 시 Public Blockchain의 영구 저장 특성을 고려한 최소 공개 원칙 적용