Protection

OS 보호 장치

운영체제 보호는 신뢰하지 않는 코드가 자원 경계를 넘지 못하게 한다. 모드, 주소 공간, 권한, capability가 함께 격리를 만든다.

01

권한 있는 작업을 감춘다

장치 제어, 페이지 테이블 변경, 전역 자원 관리 같은 작업은 커널 경계 뒤에 둔다.

02

주소 접근을 제한한다

프로세스는 자기 주소 공간과 허용된 공유 메모리만 접근할 수 있어야 한다.

03

파일 권한을 검사한다

사용자, 그룹, ACL, capability 정책이 read/write/execute 가능성을 결정한다.

Least privilege
최소 권한 프로세스는 필요한 자원에만 접근해야 피해 범위가 줄어든다.
daemon과 sandbox 설계에 중요하다.
User/kernel
권한 경계 privileged instruction은 커널 모드에서만 실행된다.
syscall이 통로다.
Memory protection
주소 공간 격리 MMU와 page permission이 잘못된 접근을 fault로 바꾼다.
segfault는 보호의 결과다.
Access control
자원 권한 파일, socket, device node마다 누가 무엇을 할 수 있는지 검사한다.
권한 상승 경로를 본다.

최소 권한 · 경계 · 감사 점검

최소 권한 프로세스가 필요 이상으로 root나 광범위한 권한을 갖고 있지 않은가.
경계 사용자 코드가 커널 메모리를 직접 읽지 못하는 이유를 설명하는가.
감사 권한 실패가 조용히 무시되지 않고 추적 가능한 로그를 남기는가.

보호 흐름

request -> identify subject -> check permission -> allow or fault/deny