피드로 돌아가기
GeekNewsSecurity
원문 읽기
Rust가 잡지 못하는 버그들
Rust 재작성 시 간과한 Unix API의 불투명성과 TOCTOU Race 위험성
AI 요약
Context
GNU Coreutils를 Rust로 재작성한 uutils 프로젝트에서 발생한 보안 취약점과 설계 결함을 분석함. 메모리 안전성이라는 언어적 특성이 시스템 레벨의 논리적 버그와 OS API의 복잡성을 완전히 해결하지 못하는 한계를 드러냄.
Technical Solution
- 경로 기반 API(std::fs) 사용으로 인한 TOCTOU Race 발생 가능성 식별 및 Handle 기반 API 도입 필요성 강조
- 경로 resolve 전 fstat를 통한 st_dev 및 st_ino 비교로 파일 정체성 검증 방식 제안
- chroot 환경 내 dlopen을 통한 임의 코드 실행 취약점 방지를 위해 관심사가 분리된 API 설계 필요성 분석
- C 소스의 점진적 변환(Auto-translation)을 통한 기존의 검증된 동작 보존 및 신규 버그 유입 최소화 전략 제시
- 단순 Unit Test의 한계를 극복하기 위한 Differential Fuzzing 및 OS/FS 추상화 검증 체계 검토
실천 포인트
- 파일 시스템 작업 시 경로(Path) 대신 파일 핸들(File Handle) 기반 API를 우선 검토했는가? - Race Condition 방지를 위해 TOCTOU 취약점 분석 및 원자적 연산(Atomic Operation)을 적용했는가? - OS API의 불투명한 동작(예: chroot 내 라이브러리 로딩)에 따른 사이드 이펙트를 고려했는가? - 재작성 시 기존 시스템의 엣지 케이스와 버그 수정 이력을 문서화하고 테스트 스위트에 반영했는가?