Kani: Rust용 모델 체커

Kani: Rust용 모델 체커

Kani는 Rust용 오픈 소스 모델 체커로, Rust 컴파일러의 소유권 타입 시스템이 검증할 수 없는 속성—예를 들어 unsafe 연산의 soundness, 함수적 정확성, 런타임 패닉의 부재—에 대해 형식적인 정확성 보장을 제공하도록 설계되었습니다. Rust의 중간 수준 중간 표현(MIR)을 CBMC 비트 정밀 검증 엔진으로 컴파일함으로써, Kani는 사용자 주석 없이도 안전 속성을 자동으로 검증할 수 있게 합니다.

제한된 및 무제한 검증

Kani는 두 가지 수준의 검증을 제공합니다: 제한된 모델 검사(bounded model checking)와 무제한 검증(unbounded verification). 제한된 모델 검사는 도구가 사용자 개입 없이 포괄적인 안전 속성 집합을 자동으로 검사하도록 합니다. 무제한 검증이 필요한 보다 복잡한 속성에 대해서는 Kani가 함수 계약, 루프 계약, 양화자, 함수 스텁핑을 포함하는 사양 언어를 도입합니다.

기술 구현

Kani의 아키텍처는 Rust의 중간 수준 중간 표현(MIR)에서 증명 하네스를 추출해 ƒBMC 비트 정밀 검증 엔진이 사용하는 논리로 컴파일합니다. 이 과정은 Kani가 정의된 경계 내 모든 가능한 입력에 대해 코드 동작을 비트 정밀하게 검증할 수 있게 하며, unsafe 코드의 메모리 오류, 원시 포인터 역참조, 런타임 패닉 등을 검사하는 데 사용됩니다.

산업 적용 및 규모

Kani는 산업 규모의 Rust 프로젝트에서도 실현 가능함이 입증되었습니다. 특정 사례 연구에서 계약을 사용함으로써 검증이 단순한 패닉 방지 수준에서 완전한 함수적 정확성 수준으로 향상되었으며, 그 결과 이전에 알려지지 않았던 버그 6개가 발견되었습니다.

Kani는 현재 프로덕션 CI 환경에서 대규모로 운영되고 있습니다. Rust 표준 라이브러리 검증 캠페인에서 Kani는 코드 변경당 16,000개 이상의 하네스를 검증하며, 현대 소프트웨어 개발 워크플로우에 대규모로 통합될 수 있음을 보여줍니다.

학술적 인정

Kani 뒤에 있는 연구는 39th IEEE/ACM International Conference on Automated Software Engineering (ASE 2026), Industry Showcase Track에서 채택되었습니다.


요약: Kani는 Rust용 오픈 소스 모델 체커로, 제한된 모델 검사를 사용해 unsafe 연산, 함수적 정확성, 런타임 패닉 부재에 대한 정확성 보장을 제공합니다.

제목: Kani: Rust용 모델 체커

Sources