cheri

3 posts

C 코드를 전면 rewrite 없이 capability 하드웨어에서 실행할 수 있다

CHERI의 하이브리드 ABI를 사용하면 기존 C 코드를 capability 하드웨어로 점진적으로 이식할 수 있다. 컴파일 방법, 어떤 문제가 발생하는지, 그리고 전체 codebase를 rewrite하지 않고 해결하는 방법을 알아본다。

Rust로 rewrite하기에는 너무 크고, 버퍼 오버플로우에 노출된 채로 두기에는 너무 중요한 C codebase가 있다고 하자. CHERI capability 하드웨어는 CPU 수준에서 메모리 안전성 위반을 잡아낼 수 있지만, 인터넷에서는 CHERI 포인터가 128비트이고 기존…

캐퍼빌리티 하드웨어는 실패하지 않았다. 40년 일찍 도착했을 뿐이다.

1970년대부터 하드웨어 수준에서 메모리 안전성은 가능했다. 캐퍼빌리티 아키텍처가 평면 메모리 모델에 계속 패배한 이유와 CHERI가 마침내 판도를 바꾸는 이유를 설명한다.

CVE의 70%는 메모리 안전성 버그다. buffer overflow, use-after-free, double free. 공격자가 변형된 JPEG에서 루트 접근권까지 확대할 수 있는 취약점이다. 1975년부터 하드웨어에서 이것들의 대부분을 막는 방법을 알고 있었다. 케임브리지 CAP…

buffer overflow이 계속 발생하는 이유는 우리가 소프트웨어로 해결하기 때문이다

CHERI는 모든 포인터를 경계가 있는 capability로 변환하는 하드웨어 확장이다. CPU 수준에서 buffer overflow을 차단하는 원리, 비용, 그리고 실제 하드웨어에서 시험하는 방법을 설명한다.

buffer overflow은 스무 해 동안 CWE Top 25에 올라 있었다. 스택 카나리아, ASLR, DEP, 제어 흐름 무결성, 메모리 안전 언어 등이 있음에도 불구하고 중요한 코드에서 끊임없이 발생하고 있다. 이유는 단순하다. 이 모든 완화책은 소프트웨어에서 실행되며,…