피드로 돌아가기
GeekNewsSecurity
원문 읽기
Rust와 C/C++의 메모리 안전성 CVE는 왜 다르게 집계되는가
CVE 집계 기준 차이로 분석한 Rust와 C/C++의 메모리 안전성 책임 모델
AI 요약
Context
C/C++ 생태계는 API 오용으로 인한 메모리 버그를 사용자 코드의 책임으로 간주하여 CVE 등록을 배제하는 관행 유지. 반면 Rust는 Safe API 호출만으로 발생하는 메모리 버그를 라이브러리의 Soundness Bug로 정의하여 엄격하게 CVE에 반영함.
Technical Solution
- Safe와 Unsafe 키워드를 통한 명시적 책임 경계 설계로 메모리 안전성 보장 범위 확립
- Safe API 사용 시 발생하는 모든 메모리 오류를 라이브러리 결함으로 간주하는 Soundness 기준 적용
- Unsafe 블록의 강제화를 통한 위험 지점 가시화 및 코드 리뷰 효율성 증대
- 라이브러리 내부 Unsafe 구현체와 외부 Safe 인터페이스 분리로 캡슐화된 안전성 제공
- C/C++의 암묵적 Unsafe 환경과 차별화된 타입 시스템 기반의 API 계약 강제
실천 포인트
1. 외부 라이브러리 도입 시 Safe 인터페이스 제공 여부와 Soundness 보장 범위 확인
2. Unsafe 블록 사용 최소화 및 해당 지점에 대한 집중적인 코드 리뷰 프로세스 수립
3. CVE 수치 단순 비교보다 언어별 메모리 안전성 책임 모델 및 집계 기준을 우선 분석
4. API 설계 시 사전조건과 사후조건을 타입 시스템으로 강제하여 사용자 오용 가능성 제거