zkao가 발견한 CIRCL 라이브러리의 취약점과 검증 공정
zkSecurity의 AI 감사 에이전트 zkao가 Cloudflare의 실험적 암호화 라이브러리 CIRCL에서 7개의 실제 버그를 찾아내 패치를 이끌어냈다. zkao는 AI가 코드를 상시 감시해 다른 AI 도구가 찾을 수 있는 버그를 미리 제거하는 자동화 감사 도구다.
검증 과정에는 AI가 후보군을 생성하면 인간 분석가가 이를 검증하고 POC(개념 증명)를 작성하는 'human-in-the-loop' 공정이 적용됐다. AI는 저렴한 비용으로 많은 후보를 제안하고, 전문가는 고비용의 신뢰성 보고서를 작성하는 역할 분담이다. 현재 zkao는 검증 단계의 상당 부분을 스스로 수행하는 방향으로 진화하고 있다.
발견된 7개의 결함은 HackerOne의 Cloudflare 프로그램을 통해 공식 확인되어 바운티(취약점 신고 포상금)를 지급받았으며, 모두 패치 완료됐다. 임계값 기반 RSA의 정밀도 손실부터 속성 기반 암호화(Attribute-based encryption)의 액세스 제어 붕괴까지 포함됐다. AI 에이전트가 단순 문법 오류를 넘어 복잡한 암호학적 논리 결함을 식별할 수 있음을 보여준 사례다.
부동 소수점 정밀도 손실과 암호학적 구현 결함 분석
zkao는 CIRCL의 구현 결함 중 특히 부동 소수점 정밀도 손실과 구조적 파라미터 설정 오류를 정밀하게 짚어냈다. threshold RSA(비밀키를 여러 조각으로 나누어 관리하는 방식) 구현체인 `tss/rsa`의 `Deal()` 함수가 `float64`(64비트 부동 소수점 수)를 사용해 $x^i$를 계산하는 점이 문제였다. `float64`는 53비트의 가수부(mantissa)를 가지므로, $x^i$ 값이 $2^{53}$을 초과하면 정수로 변환되기 전 자동으로 반올림되어 데이터가 소실된다.
예를 들어 플레이어 100명, 임계값 27인 환경에서 $100^{26}$을 계산하면 $2^{53}$을 36자리나 초과한다. 결과적으로 잘못된 키 쉐어가 생성되어 서명 조합이 실패하거나 키 재구성에 오류가 생긴다. zkSecurity는 모든 계산을 `big.Int`(임의 정밀도 정수)로 유지하는 Horner's-method(다항식 계산 효율화 알고리즘)를 도입해 이를 해결했다(Commit f7d2180).
`zk/qndleq`의 DLEQ(두 쌍이 동일한 이산 로그를 공유함을 증명하는 방식) 구현에서는 보안 파라미터인 `SecParam`이 `Proof` 구조체 내부에 포함된 결함이 발견됐다. 검증자가 증명자가 제공한 `SecParam` 값을 그대로 사용해 챌린지를 재계산하면, 공격자가 이 값을 1로 설정해 위조 성공 확률을 비약적으로 높일 수 있다. 이에 `SecParam`을 구조체에서 제거하고 `Verify` 함수가 이를 명시적 인자로 받도록 수정했다(Commit 757dde4).
마지막으로 `sign/bls`의 `VerifyAggregate` 함수에서 메시지 중복 여부를 확인하지 않는 결함이 포착됐다. 이는 공격자가 피해자의 공개키로 가짜 공개키를 등록해 서명을 위조하는 Rogue Key Attack에 취약한 상태였으며, Cloudflare는 이를 'High' 심각도의 치명적 결함으로 확정했다.
AI 심각도 판정의 한계와 지속적 코드 감사의 실효성
결함의 심각도를 판단하는 기준에서는 AI와 인간 전문가 사이에 뚜렷한 시각 차이가 있었다. zkao는 threshold RSA의 정밀도 손실이 프로토콜 정확성을 훼손한다는 점을 들어 'Critical' 등급을 매겼지만, Cloudflare는 실제 환경에서 발생 확률이 낮다며 'Low'로 평가했다. 반대로 BLS 집계 서명 결함에 대해 zkao는 'Medium'으로 과소평가했으나, Cloudflare는 이를 'High' 심각도로 판정했다.
AI가 할당하는 심각도 점수에는 여전히 노이즈가 있으며, 최종 위험 평가에는 인간의 도메인 지식이 필수적이라는 뜻이다. zkSecurity는 이 간극을 통해 LLM이 암호학적 추론에서 보이는 강점과 맹점을 파악하고, 이를 zkao의 벤치마크 스위트에 반영해 추론 패턴을 정교화하고 있다.
이러한 분석 능력을 상시 가동하기 위해 zkSecurity는 '지속적 코드 감사(Continuous Audit)' 체계를 구축 중이다. 일회성 보안 검수가 아니라, AI가 코드를 지속적으로 감시하며 다른 AI 도구가 찾을 수 있는 모든 버그가 제거될 때까지 분석을 반복하는 모델이다. 결국 AI의 광범위한 탐색력과 인간의 정밀한 판단력이 결합된 협업 구조가 현대 보안 파이프라인의 실효성을 결정하는 기준이 될 것이다.




