Skip to main content
QUICK REVIEW

[논문 리뷰] Memory-Safety Challenge Considered Solved? An In-Depth Study with All Rust CVEs

Hui Xu, Zhuangbin Chen|arXiv (Cornell University)|2020. 03. 06.
Security and Verification in Computing참고 문헌 36인용 수 11
한 줄 요약

이 논문은 메모리 안전 버그를 방지하는 데 있어 루스트의 효과성을 분석하기 위해 실제 메모리 안전성과 관련된 186宗의 CVE를 분석한다. 모든 버그는 비안전 코드가 필요하다는 점을 확인함으로써, 루스트의 핵심 약속을 뒷받침하지만, 특히 소유권, 함수, 제네릭과 관련된 안전성 문제들로 인해 안전한 API에서 암묵적인 타당성 문제들이 지속적으로 발생하고 있음을 밝혀내며, 더 안전한 프로그래밍 관행과 도구 확장에 대한 권고를 제시한다.

ABSTRACT

Rust is an emerging programing language that aims at preventing memory-safety bugs without sacrificing much efficiency. The claimed property is very attractive to developers, and many projects start using the language. However, can Rust achieve the memory-safety promise? This paper studies the question by surveying 186 real-world bug reports collected from several origins which contain all existing Rust CVEs (common vulnerability and exposures) of memory-safety issues by 2020-12-31. We manually analyze each bug and extract their culprit patterns. Our analysis result shows that Rust can keep its promise that all memory-safety bugs require unsafe code, and many memory-safety bugs in our dataset are mild soundness issues that only leave a possibility to write memory-safety bugs without unsafe code. Furthermore, we summarize three typical categories of memory-safety bugs, including automatic memory reclaim, unsound function, and unsound generic or trait. While automatic memory claim bugs are related to the side effect of Rust newly-adopted ownership-based resource management scheme, unsound function reveals the essential challenge of Rust development for avoiding unsound code, and unsound generic or trait intensifies the risk of introducing unsoundness. Based on these findings, we propose two promising directions towards improving the security of Rust development, including several best practices of using specific APIs and methods to detect particular bugs involving unsafe code. Our work intends to raise more discussions regarding the memory-safety issues of Rust and facilitate the maturity of the language.

연구 동기 및 목표

  • 루스트의 설계자들이 주장하는 것처럼 실제 시스템에서 루스트가 메모리 안전 버그를 진정으로 방지하는지 평가하는 것.
  • 비안전 코드 외의 원인으로 인한 루스트 프로그램의 메모리 안전성 취약점의 근본 원인을 식별하고 분류하는 것.
  • 안전한 API가 메모리 안전성 위반으로 이어질 수 있는 암묵적인 타당성 문제를 유발하는 방식을 이해하는 것.
  • 개발자와 도구 제작자들이 루스트의 보안 수준을 향상시키기 위해 실천 가능한 권고 사항을 제공하는 것.
  • 2020년 말 기준으로 알려진 모든 루스트 CVE 중 메모리 안전성 문제를 포함하는 포괄적인 데이터셋을 분석하여 이전 연구를 확장하는 것.

제안 방법

  • 2020년 12월 기준으로 알려진 모든 메모리 안전성 문제를 포함하는 루스트 CVE 186건을 다수의 출처에서 수집함: Advisory-DB, Trophy Case, GitHub 프로젝트.
  • 각 버그를 수작업으로 분석하여 결과의 성격(예: 자유 후 사용, 버퍼 오버플로우)을 분류하고, 근본 원인 패턴을 식별함.
  • 하이브리드 접근 방식을 활용: 표준 메모리 안전성 범주를 사용한 버그 결과의 상향식 레이블링과 유사한 원인 패턴의 하향식 그룹화.
  • 버그를 세 가지 주요 유형으로 분류: 자동 메모리 회수, 타당하지 않은 함수, 타당하지 않은 제네릭 또는 트레이트 사용.
  • 안전한 API 사용을 위한 최선의 실천 방법을 제안하고, 특히 소유권과 드롭 의미 체계와 관련된 비안전 코드 내 비안전 패턴을 탐지하기 위해 정적 분석 도구를 확장할 것을 제안함.
  • 이전 연구(예: Qín et al., 2020)와의 비교를 통해, 특히 제네릭 및 트레이트 기반의 타당성 문제 분석에서의 새로운 기여를 부각함.

실험 결과

연구 질문

  • RQ1실제 루스트 시스템에서의 메모리 안전성 버그 중 얼마나 많은 비율이 비안전 코드를 요구하는가? 이는 루스트의 메모리 안전성 약속을 확인하는 데 기여하는가?
  • RQ2비안전 블록을 포함하지 않는 경우에도 지배적인 패턴과 메모리 안전성 취약점의 근본 원인은 무엇인가?
  • RQ3루스트의 소유권 및 참조 시스템, 특히 자동 드롭과 스택 언윈딩은 의도하지 않은 메모리 안전성 문제에 어떻게 기여하는가?
  • RQ4루스트에서 제네릭 또는 트레이트 기반 코드를 작성할 때 개발자가 겪는 주요 과제는 무엇이며, 이러한 과제들은 어떻게 타당하지 않은 상태로 이어지는가?
  • RQ5개발자와 도구 제작자들이 루스트 프로그램의 보안을 향상시키기 위해 실천 가능한 권고 사항은 무엇인가?

주요 결과

  • 이 데이터셋 내 186건의 메모리 안전성 버그 모두가 비안전 코드를 필요로 하며, 이는 안전한 코드를 사용할 경우 루스트가 메모리 안전성 약속을 성실히 이행하고 있음을 확인한다.
  • 많은 메모리 안전성 문제들은 치명적인 악용이 아닌, 안전한 API 내에서 발생하는 경미한 타당성 문제들이다. 예를 들어, 잘못된 드롭 구현이나 타당하지 않은 트레이트 바운드.
  • 루스트의 소유권 시스템과 드롭 의미 체계에 의해 유도되는 자동 메모리 회수로 인해, 자유 후 사용, 중복 할당, 유효하지 않은 포인터 문제 등이 발생하며, 특히 스택 언윈딩 상황에서 심화된다.
  • 타당하지 않은 함수는 루스트 개발에서 핵심적인 과제이며, 비안전 블록 없이도 정의되지 않은 동작을 유도할 수 있다. 주로 타입 수준의 잘못된 추론 때문이다.
  • 타당하지 않은 제네릭 또는 트레이트 사용은 점점 더 큰 우려가 되고 있으며, 특히 제네릭 바운드나 트레이트 구현이 메모리 안전성을 위협할 경우, 더 복잡하고 암묵적인 버그 원인이 된다.
  • 이 연구는 타당성 문제의 위험을 높이는 특정 API 패턴과 프로그래밍 관행을 식별하여, 더 안전한 루스트 개발을 위한 구체적인 권고 사항을 도출했다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.