AI 기반 보안 감사가 발견한 Cloudflare CIRCL의 실제 취약점들
Cloudflare의 실험적 암호화 라이브러리인 CIRCL에서 AI 감사 파이프라인을 통해 7개의 실제 버그가 발견됐다. zkSecurity 팀이 개발 중인 AI 감사 에이전트 zkao를 활용한 이 실험은, 단순한 연구 성과를 넘어 오픈소스 암호화 라이브러리의 보안 수준을 재점검하게 만드는 계기가 됐다. 발견된 취약점은 임계값 RSA에서의 float64 정밀도 손실(critical 등급) 부터 속성 기반 암호화(ABE)의 접근 제어 전체 우회까지 다양하며, 7개 모두 업스트림에서 수정이 완료됐다.
백엔드 개발자 입장에서 이 사례가 중요한 이유는 명확하다. 암호화 라이브러리는 직접 구현하지 않더라도 의존성으로 반드시 사용하게 되며, 해당 라이브러리의 내부 결함은 애플리케이션 레이어에서 탐지하기 사실상 불가능하다. CIRCL처럼 Cloudflare가 관리하는 신뢰받는 라이브러리에서도 이런 버그가 존재한다는 사실은, 서드파티 암호화 컴포넌트에 대한 맹신이 얼마나 위험한지를 보여준다.
zkao: 지속적 AI 감사 에이전트의 접근 방식
zkao의 핵심 철학은 "다른 AI 도구가 찾을 수 있는 버그가 더 이상 없을 때까지, AI가 코드를 지속적으로 감시한다"는 것이다. 이는 기존의 정적 분석 도구나 일회성 감사와는 근본적으로 다른 접근이다.
팀이 이 과정에서 집중한 것은 단순히 버그 목록이 아니라 LLM이 암호화 코드를 어떻게 추론하는가였다. 어떤 영역에서 모델이 날카롭고, 어디서 맹점을 보이는지, 그리고 어떻게 강점을 증폭하고 약점을 억제할 것인지가 실질적인 연구 목표다. 이를 위해 zkSecurity 보안 연구원들의 전문성을 체계적으로 에이전트에 인코딩하고, 벤치마크 편향 없이 최신·고위험 취약점을 탐지하도록 반복 개선을 거쳤다.
[감사 파이프라인 개요]
코드베이스 스캔
→ LLM 기반 취약점 후보 추출
→ 전문가 지식 기반 필터링
→ 재현 가능한 버그 확정
→ 업스트림 리포트 및 패치
이 실험들은 동시에 zkao의 자체 벤치마크 스위트를 구축하는 데이터가 된다. 보안 도구가 스스로를 검증하는 기준을 만들어가는 구조로, 도구의 신뢰성과 완성도를 함께 높이는 방식이다.
실무에서 얻어야 할 시사점
이 사례는 Java 웹 백엔드 개발자에게 몇 가지 실질적인 교훈을 준다. 첫째, 암호화 관련 의존성은 버전 고정과 함께 주기적인 보안 패치 추적이 필수다. 단순히 dependabot이나 OWASP Dependency-Check를 돌리는 것을 넘어, 해당 라이브러리의 보안 권고문(Security Advisory)을 직접 구독해야 한다.
둘째, float64 정밀도 손실처럼 수치 연산의 미묘한 오류는 단위 테스트로 잡기 매우 어렵다. 암호화 파라미터를 직접 다루는 코드가 있다면, 경계값과 정밀도 범위에 대한 명시적인 검증 로직을 추가하는 것이 안전하다.
// 암호화 연산에서 float 대신 BigDecimal/BigInteger 사용 권장
BigInteger threshold = new BigInteger("...");
// float64 기반 중간 계산은 정밀도 손실 위험
셋째, 접근 제어 로직이 암호화 레이어와 결합된 경우(ABE와 같은 구조), 암호화 정확성과 접근 제어 정확성을 별도로 테스트해야 한다. 한쪽이 통과한다고 다른 쪽이 보장되지 않는다.
정리
- Cloudflare CIRCL처럼 신뢰받는 오픈소스 암호화 라이브러리도 critical 취약점을 가질 수 있으므로, 의존성 보안 패치 추적은 선택이 아닌 필수다.
- float64 등 부동소수점 기반 암호화 연산은 정밀도 손실로 인한 치명적 버그 가능성이 있으며,
BigInteger/BigDecimal활용과 명시적 경계 검증이 필요하다. - AI 기반 지속적 코드 감사는 일회성 보안 감사의 한계를 보완하는 새로운 접근으로, 보안 도구 도입 전략을 수립할 때 고려할 가치가 있다.