앤스로픽의 프런티어 레드팀과 정형 방법론 전문 기업 더럼(Theorem)은 클로드가 오픈소스 라이브러리 123개의 퍼징 테스트 진입점 239개에 대해 기계 검증 가능한 증명을 만들었다고 발표했다. 증명은 특정 조건 아래 컴파일된 RISC-V 프로그램에서 발생할 수 있는 충돌과 메모리 안전성 문제를 다룬다. 라이브러리 전체가 어떤 환경에서든 버그가 없다는 뜻은 아니다.
9
5
앤스로픽은 몇 주 동안 진행한 작업에서 약 1억 8,000만 줄의 로크(Rocq) 증명 코드가 생성됐다고 밝혔다. 주목할 점은 숫자 자체보다, AI의 도움으로 실제 소프트웨어에 정형 검증을 더 넓게 적용할 가능성이다. 다만 결론은 명세에 적혀 있고 실제로 확인한 속성에 한정된다.
3
13
어떤 내용을 증명했나
앤스로픽에 따르면 대상 프로그램은 64MB보다 작은 모든 입력에 대해 정상 종료하고, 메모리 안전성 오류나 실패한 단언(assertion)을 일으키지 않는 것으로 증명됐다. 여기에는 모델링된 리눅스 운영체제의 응답과 메모리 배치가 포함되며, 정해진 가정이 전제된다. 증명 대상은 라이브러리의 모든 버전이나 배포 형태가 아니라, 특정 진입점을 포함한 컴파일된 RISC-V 프로그램이다.
9
12
연구진은 구글의 OSS-Fuzz에서 사용하던 퍼징 테스트 진입점을 정형 명세로 활용했다. 퍼징이 다양한 입력을 넣어 실제로 동작을 시험하는 방식이라면, 정형 검증은 명시한 조건을 만족하는 입력 전체에 대해 프로그램의 동작을 증명하려는 접근이다.
3
13
앤스로픽은 이를 실제 소프트웨어의 어셈블리 수준 정형 검증에 AI를 활용한 첫 대규모 시도라고 설명했다. 이는 연구진이 제시한 프로젝트의 새로움에 대한 평가이지, 역사적으로 확정된 합의라는 뜻은 아니다.
7
13
로크 커널이 확인했다는 의미
클로드가 증명을 생성했고, 로크의 증명 커널이 이를 확인했다. 따라서 증명 결과를 받아들이기 위해 클로드의 추론을 그대로 신뢰하거나 개발자가 모든 증명 코드를 한 줄씩 직접 검토해야 하는 것은 아니다. 하지만 기계 검증이 모든 가정을 없애 주지는 않는다. 정리가 개발자가 확인하려는 속성을 정확히 표현해야 하며, 형식 모델과 검증기 역시 신뢰 기반에 포함된다.
9
5
앤스로픽과 관련 보도에 따르면 생성된 증명은 약 1억 8,000만 줄이며, 바이너리 하나당 평균으로는 약 60만 줄이다. 방대한 산출물은 작업 규모를 보여주지만, 줄 수만으로 증명 범위가 얼마나 넓은지 또는 실제 제품 요구사항에 맞는지를 판단할 수는 없다.
3
12
퍼징 테스트가 놓칠 수 있는 것
퍼징은 많은 입력을 시험하지만, 정해진 입력 영역의 모든 경우를 다뤘다는 사실을 그 자체로 증명하지는 않는다. 이번 작업에서 클로드가 수백 건의 버그를 찾아 수정했으며, 그중에는 수조 회의 퍼징 실행을 거치고도 발견되지 않았던 문제가 있었다는 주장이 나왔다. 이는 이번 프로젝트에 대한 보고이지, 정형 검증이 다른 모든 프로젝트에서 테스트보다 더 자주 버그를 찾는다는 독립적인 측정 결과는 아니다.
2
11
실용적인 결론은 테스트를 대체하자는 것이 아니다. 정형 증명은 별도의 근거를 더한다. 명시된 속성과 범위 안에서는 테스트 중 실제로 실행해 본 사례만이 아니라, 명세를 만족하는 모든 입력에 대한 동작을 입증할 수 있다.
9
2
‘검증 완료’가 ‘버그 없음’은 아닌 이유
보증은 선택된 진입점과 특정 컴파일 결과물에만 적용된다. 라이브러리의 모든 함수나 빌드 설정, 아키텍처, 사용 방식까지 자동으로 검증하는 것은 아니다.
9
5
실행 조건도 중요하다. 보도에 따르면 증명은 단일 스레드 정적 RISC-V 바이너리가 메모리 예산이 정해진 모델링된 리눅스 환경에서 실행된다는 조건을 둔다. 실제 소프트웨어 사용자는 다른 아키텍처나 설정으로 빌드된 프로그램을 접하는 경우가 많으므로, 이 결과를 그런 배포 환경에 대한 보증으로 읽어서는 안 된다.
12
27
34
마지막으로 증명은 작성된 정리를 입증하는 것이지, 개발자가 원할 수 있는 모든 속성을 보장하는 것은 아니다. 정한 범위 밖에 버그가 남을 수 있고, 형식 모델이나 증명 검증의 기반에도 오류 가능성은 있다.
5
31
개발자가 가져갈 교훈
이번 프로젝트가 보여주는 핵심은 AI 지원이 정형 검증을 실제 소프트웨어에 더 큰 규모로 적용하는 일을 현실적으로 만들 가능성이다. 다만 이 결과가 모든 코드베이스에 적용할 수 있는 보편적인 비용이나 성공률을 제시하는 것은 아니다.
7
13
증명 산출물 가운데 일부는 공개됐다. 한 보도는 공개분이 전체 프로젝트가 아니라 라이브러리 25개와 진입점 60개에 해당한다고 전했다. 더럼은 오픈소스 유지관리자를 위한 OSS Verify 프로그램도 발표했다.
32
16
38
개발자가 증명을 활용할 때는 범위를 먼저 확인하는 편이 중요하다. 어떤 진입점과 컴파일 결과물을 대상으로 했는지, 어떤 가정과 속성을 증명했는지 살펴야 한다. 이번 결과는 LLM 기반 정형 검증을 테스트와 함께 검토할 이유를 제공하지만, 테스트를 중단하거나 소프트웨어가 버그에서 자유롭다고 여길 근거는 아니다.
9
5