기타 Hacker News · 2026-10-13

"메모리 안전하다더니..." Rust 핵심 검사기에서 11년 묵은 치명적 버그 터짐

핵심 요약
  • Rust의 핵심 안전 장치인 빌림 검사기(Borrow Checker)에서 수명 검사를 우회해 메모리 오류를 일으키는 치명적 soundness 버그가 공식 제보되었습니다.
  • 조사 결과 해당 결함은 최소 Rust 1.4(약 11년 전) 및 1.18 버전 시절부터 줄곧 방치되어 왔다는 사실이 드러나 개발자들에게 큰 충격을 주고 있습니다.
  • Rust 팀은 해당 이슈에 'P-critical' 및 최악의 버그를 뜻하는 'I-unsound' 라벨을 부여하고 긴급 대응에 나섰습니다.
요약 메모리 안전성을 핵심 강점으로 내세우는 프로그래밍 언어 Rust의 컴파일러 핵심 기능인 '빌림 검사기(Borrow Checker)'에서 최대 11년 동안 방치되어 온 치명적인 버그(Unsoundness)가 발견되어 개발자 커뮤니티가 발칵 뒤집혔습니다. GitHub rust-lang/rust 리포지토리에 등록된 이슈(#164250)에 따르면, 공변 필드 할당(covariant field assignment)과 소멸자(`Drop`)를 함께 사용할 경우 구조체의 수명(Lifetime) 요구 조건을 우회할 수 있는 취약점이 확인되었습니다. 원래 컴파일 에러를 뱉으며 차단해야 할 유효하지 않은 수명의 참조가 버그로 인해 정상 컴파일되고, 그 결과 메모리 해제 후 참조(stack-use-after-scope)가 발생해 엉뚱한 쓰레기 메모리 값이 출력되거나 프로그램이 크래시되는 현상이 증명되었습니다. 해당 이슈는 등록 직후 컴파일러 타입 시스템의 가장 심각한 오류 등급인 'I-unsound'와 최우선 처리 등급인 'P-critical' 라벨이 부여되었습니다. 기여자들의 추가 분석 결과, 특정 재현 코드는 2017년 릴리스된 Rust 1.18.0 버전부터 컴파일되고 있었으며, 다른 변형 코드는 무려 2015년 출시된 Rust 1.4 버전 시절부터 버그가 존재했던 것으로 밝혀졌습니다. 이 사실이 드러나자 기여자들은 "도대체 어떻게 10년이 넘는 시간 동안 아무도 이 버그를 발견하지 못했느냐"며 경악 섞인 반응을 보이고 있습니다. 안전한 메모리 관리를 절대적인 모토로 삼아온 Rust 생태계에서 근간을 뒤흔드는 기초 설계 취약점이 장기간 숨어 있었다는 점에서 큰 충격을 주고 있습니다.
해외 반응 번역
도대체 지금까지 어떻게 아무도 이걸 발견 못한 거냐???
1.4 버전 시절부터 unsound 상태였네 🤣
Sponsored · 광고