요즘 보안 업계에서 가장 뜨거운 실험 중 하나가 'AI한테 코드 감사를 시켜보면 어디까지 찾아낼 수 있을까?'인데요. 영지식 증명(ZK) 전문 보안 회사인 zkSecurity가 'AI Meets Cryptography' 시리즈의 두 번째 편으로, OpenVM이라는 zkVM 프로젝트를 AI로 분석한 결과를 공개했어요. 핵심은 AI가 사람 감사자도 놓치기 쉬운 실제 버그들을 찾아냈다는 건데, 이게 왜 대단한 일인지 차근차근 풀어볼게요.
zkVM이 뭐냐면요
먼저 용어부터 잡고 갈게요. zkVM은 '영지식 가상머신(Zero-Knowledge Virtual Machine)'의 줄임말인데요. 이게 뭐냐면, 프로그램을 실행하면서 '이 프로그램을 규칙대로 정확히 실행했다'는 수학적 증명서를 함께 만들어주는 가상머신이에요. 비유하자면 시험 답안지만 제출하는 게 아니라, 풀이 과정 전체가 올바르다는 걸 채점자가 몇 초 만에 확인할 수 있는 '검증 가능한 풀이 노트'를 같이 내는 셈이죠. 검증하는 쪽은 프로그램을 처음부터 다시 실행해볼 필요 없이 증명만 확인하면 되니까, 블록체인 롤업처럼 '남이 한 계산을 믿어야 하는' 상황에서 핵심 인프라로 쓰여요. OpenVM은 이런 zkVM을 레고 블록처럼 모듈 단위로 조립할 수 있게 설계된 오픈소스 프레임워크고요.
여기서 나오는 버그는 결이 달라요
중요한 건, zkVM의 버그가 일반 소프트웨어 버그와 성격이 완전히 다르다는 거예요. zkVM은 프로그램 실행 규칙을 '제약 조건(constraint)'이라는 수학 방정식 묶음으로 표현하는데요. 이 제약이 하나라도 빠지면(이걸 under-constrained, 즉 '제약 부족' 버그라고 불러요) 무서운 일이 생겨요. 정상적인 실행은 멀쩡히 잘 돌아가는데, 악의적인 증명자가 규칙을 어긴 가짜 실행을 만들어도 증명이 통과해버리는 거예요. 극단적으로 말하면 '1+1=3이다'라는 가짜 계산에 대해 유효한 증명서를 만들어낼 수 있게 되는 거죠. 이런 걸 건전성(soundness) 버그라고 하는데, 테스트 코드로는 거의 안 잡혀요. 테스트는 '정상 입력이 정상 결과를 내는지'를 확인하는 도구인데, 이 버그는 '비정상 입력이 통과되는지'가 문제거든요. 그래서 이 분야는 지금까지 극소수 전문가의 수작업 감사에 의존해왔어요.
zkSecurity 팀의 접근은 LLM 기반 도구에게 OpenVM의 회로 코드와 제약 정의를 읽히고 의심스러운 지점을 찾아내게 한 뒤, 사람 전문가가 실제로 악용 가능한지 검증하는 하이브리드 워크플로예요. 이 조합이 핵심인 이유가 있는데요. AI만 단독으로 돌리면 오탐(false positive)이 쏟아지고, 사람만 보면 수만 줄의 제약 코드에서 빠진 한 줄을 찾는 게 사실상 모래사장에서 바늘 찾기이기 때문이에요. AI가 넓게 훑어 후보를 좁히고, 사람이 깊게 파서 확정하는 분업이 실전에서 통한다는 걸 보여준 거죠.
업계 흐름에서 보면요
AI로 취약점을 찾는 시도 자체는 이제 하나의 흐름이 됐어요. 구글 프로젝트 제로의 Big Sleep이 SQLite에서 실제 취약점을 찾아낸 사례가 있었고, DARPA의 AIxCC 대회는 AI 자동 취약점 탐지와 패치를 겨루는 무대였죠. 그런데 ZK 분야는 이 흐름이 특히 절실한 동네예요. 제약 시스템을 감사할 수 있는 전문가가 전 세계에 정말 소수인데, zkVM 프로젝트는 계속 늘어나고 있거든요. RISC Zero, SP1, Jolt 같은 경쟁 zkVM들도 모두 같은 종류의 위험을 안고 있어요. 감사 인력의 병목을 AI로 푸는 건 이 분야에서 '있으면 좋은 것'이 아니라 생존 문제에 가까운 셈이에요.
한국 개발자에게 주는 시사점
'나는 ZK 안 쓰는데?' 하실 수 있는데요, 이 실험에서 가져갈 건 ZK 지식이 아니라 워크플로예요. LLM에게 코드 리뷰를 시킬 때 그냥 '버그 찾아줘'라고 하면 뻔한 답만 나오지만, 도메인 특화된 버그 패턴('제약 부족', '범위 검증 누락' 같은)을 명시하고 사람이 최종 검증하는 구조를 만들면 실전 수준의 결과가 나온다는 게 핵심이거든요. 여러분 팀의 코드베이스에도 '우리 도메인에서 자주 터지는 버그 유형'이 분명 있을 텐데, 그걸 프롬프트로 정리해서 CI 파이프라인에 붙여보는 것만으로도 비슷한 효과를 노려볼 수 있어요. 그리고 블록체인이나 핀테크 쪽에 계신 분들이라면, zkVM 기반 프로젝트를 도입할 때 '감사받았다'는 말만 믿지 말고 어떤 방식으로, 어떤 범위까지 감사받았는지 확인하는 습관도 챙기시면 좋겠고요.
정리하면
AI가 사람 전문가도 찾기 어려운 암호학적 버그를 실전 코드베이스에서 찾아내는 단계까지 왔다는 것, 그리고 그 열쇠는 'AI 단독'이 아니라 '도메인 지식 + AI + 사람 검증'의 조합이라는 거예요. 여러분은 코드 리뷰나 보안 점검에 AI를 어디까지 활용하고 계신가요? AI가 찾아준 버그 중에 '이건 사람이었으면 절대 못 찾았겠다' 싶었던 경험이 있다면 공유해주세요.
🔗 출처: Hacker News