toplogo
Zaloguj się

안전하게 격리된 C 프로그램의 공식적으로 안전한 컴파일


Główne pojęcia
본 논문은 상호 불신하는 C 프로그램 구획을 위한 공식적으로 안전한 컴파일러 SECOMP를 소개한다. SECOMP는 CompCert 컴파일러를 확장하여 구획화된 프로그램의 안전성을 보장하며, 정의되지 않은 동작의 영향을 해당 구획으로 제한한다.
Streszczenie

본 논문은 SECOMP, 상호 불신하는 C 프로그램 구획을 위한 공식적으로 안전한 컴파일러를 소개한다.

주요 내용은 다음과 같다:

  1. CompCert 컴파일러를 확장하여 구획화된 C 프로그램을 지원한다. 각 구획은 상호 불신하며 오직 프로시저 호출과 반환을 통해서만 상호작용할 수 있다.

  2. 정의되지 않은 동작의 영향을 해당 구획으로 제한하는 공식적인 안전성 보장을 제공한다. 이를 위해 Abate et al.이 제안한 RSCDC^MD 안전 컴파일 기준을 만족한다.

  3. 컴파일러 정정성 증명, 역변환, 재구성, 귀책 등의 기법을 활용하여 RSCDC^MD 기준을 달성한다. 이는 메인스트림 프로그래밍 언어에 대해 이러한 강력한 안전 컴파일 기준을 증명한 최초의 사례이다.

  4. 컴파일러 정정성 증명을 확장하여 구획화된 프로그램을 지원하며, 역변환과 재구성을 위한 새로운 기법을 개발한다.

  5. 검증된 RISC-V 어셈블리 수준의 구획 격리 추상화를 제공하며, 이를 검증되지 않은 CHERI 기반 백엔드로 구현한다.

edit_icon

Customize Summary

edit_icon

Rewrite with AI

edit_icon

Generate Citations

translate_icon

Translate Source

visual_icon

Generate MindMap

visit_icon

Visit Source

Statystyki
마이크로소프트와 크롬은 자사 고위험 보안 버그의 약 70%가 메모리 안전성 위반으로 인한 정의되지 않은 동작에서 기인한다고 보고했다. 구획화는 프로그램을 상호 불신하는 구획으로 나누어 보안을 향상시키는 강력한 실용적 완화책이다. 본 논문의 SECOMP 컴파일러는 CompCert 컴파일러 대비 약 5.9% 더 많은 사양과 14.2% 더 많은 증명 코드를 추가했다.
Cytaty
"마이크로소프트와 크롬은 자사 고위험 보안 버그의 약 70%가 메모리 안전성 위반으로 인한 정의되지 않은 동작에서 기인한다고 보고했다." "구획화는 프로그램을 상호 불신하는 구획으로 나누어 보안을 향상시키는 강력한 실용적 완화책이다."

Głębsze pytania

구획화 기술이 실제 시스템에 어떻게 적용되고 있는지 자세히 알아보 수 있을까?

구획화 기술은 현재 다양한 시스템 및 소프트웨어에서 적용되고 있습니다. 예를 들어, 주요 웹 브라우저들은 프로세스 수준의 권한 분리를 통해 탭 및 플러그인을 격리시키는 방식으로 구획화를 구현하고 있습니다. 또한, 소프트웨어 결함 격리(SFI)를 통해 웹어셈블리 모듈을 격리시키는 방법도 구획화 기술을 활용한 사례 중 하나입니다. 더불어, 메모리 보호 기술이나 태그 아키텍처와 같은 다양한 보안 기술에서도 구획화가 적용되어 시스템의 보안성을 향상시키는 데 사용되고 있습니다.

정의되지 않은 동작 외에 다른 보안 취약점들은 어떤 방식으로 완화될 수 있을까?

구획화 기술은 정의되지 않은 동작 외에도 다른 보안 취약점들을 완화하는 데 도움을 줄 수 있습니다. 예를 들어, 버퍼 오버플로우나 더블 프리와 같은 메모리 안전 문제는 구획화를 통해 격리된 환경에서 발생할 경우 전체 시스템에 미치는 영향을 최소화할 수 있습니다. 또한, 구획화를 통해 서로 다른 구획 간의 상호작용을 명확히 정의하고 제한함으로써 권한 상승 공격 등의 보안 위협을 방지할 수 있습니다. 또한, 구획화를 통해 각 구획의 권한을 명확히 구분하고 각 구획이 필요한 최소한의 권한만 부여함으로써 권한 부여 오류를 방지할 수 있습니다.

구획화 기술이 프로그램 성능에 미치는 영향은 어떠한지 분석해볼 수 있을까?

구획화 기술은 프로그램의 성능에 일정한 영향을 미칠 수 있습니다. 구획화를 통해 프로그램을 격리시키고 상호작용을 제한함으로써 보안을 강화하지만, 이로 인해 추가적인 오버헤드가 발생할 수 있습니다. 특히, 구획 간 통신이 필요한 경우 추가적인 비용이 발생할 수 있으며, 이는 프로그램의 실행 속도나 메모리 사용량에 영향을 줄 수 있습니다. 또한, 구획화를 구현하는 데 필요한 추가적인 검사 및 제어도 성능에 영향을 미칠 수 있습니다. 따라서 구획화 기술을 적용할 때는 보안성과 성능 간의 균형을 고려해야 합니다.
0
star