[컴] NERF 프로젝트
UEFI 부팅과정
구글 엔지니어 로널드 미니치(Ronald Minnich)의 발표
사용자가 인식하지 못하는 3가지 OS
- ME
- 사용자는 모르지만 인텔CPU는 그 동작을 인식할 수 있는 CPU 자원 제어(Ring -2)
- 시스템을 켜고 끄거나 인텔CPU 모르게 전원이 차단된 컴퓨터의 디스크 이미지를 재구성(Ring -3) 할 수 있다.
- 오픈소스 운영체제(OS) 미닉스(MINX) 3 버전의 변종이지만, 그 소스코드는 비공개다.
- 인텔 CPU의 액티브매니지먼트테크놀로지(AMT) 기능도 ME를 기반으로 구동된다.
- UEFI(통합확장펌웨어인터페이스)
- 메인 CPU에서 구동
- 복잡한 커널을 지녔으며 수백만줄의 코드로 구성
- 부팅이 완료된 뒤 UEFI 애플리케이션이 구동
- 보안모델이 불명확
- 다양한 시스템 기능에 접근할 수 있는 컴포넌트를 포함
- SMM
- 바이오스(BIOS) 영역에서 실행되는 시스템관리모드(SMM)
- ME 가 Ring -3 이라면 SMM과 UEFI는 Ring -2
- 오래된 16비트 마이크로프로세서(인텔 8086)용 코드의 통로
- 인텔의 칩셋은 한 번 SMM을 설치하면 이후 동작 단계에서 D램의 상위 8MB 크기 영역을 숨겨버린다. 그래서 사용자나 관리자는 그 코드를 control 할 수 없다.
- SMM은 제조사가 사용자 시스템 통제를 지속하는 역할을 한다.
사용자가 볼 수 있는 부분
- 일반 애플리케이션(Ring 3)
- 사용자 OS(Ring 0)
- OS를 가상화하는 SW(Ring -1)
NERF 프로젝트(Non-Extensible Reduce Firmware)
- UEFI 펌웨어 기능을 "작은 리눅스 커널"과 "초기 램 파일 시스템(initial RAM file system, initramfs)"으로 대체하는 작업, code의 custom portion 들이 GO(언어 고) 로 만들어져있다.
- 인텔CPU ME 펌웨어의 세부 구성요소를 파헤쳐서 가능한 많은 기능을 분석한 다음 그 전반적인 동작을 리눅스OS의 영역으로 되가져오기로 했다
- 분석 결과 인텔CPU ME 펌웨어 자체를 전혀 쓰지 않는 것은 불가능
- ME의 구성요소 대부분은 제거할 수 있는 것으로 파악
- NERF 의 목표
- 해로운 동작을 할 수 있는 능력을 덜어낼 것.
- 동작을 더 가시화할 것
- 없애기 힘든 ME 펌웨어 자체를 제외한, 웹서버 및 IP스택 등 모든 런타임 구성요소를 제거
- UEFI의 IP스택과 다른 드라이버도 제거
- ME와 UEFI의 자체 덮어쓰기(self-reflash) 기능을 없앨 것
- 펌웨어의 플래시 업데이트를 리눅스에서 관리할 것
|
UEFI 구성요소 |
|
UEFI boot 과정 |
References
- 인텔CPU 보안구멍, 구글이 메운다 - 지디넷코리아
댓글 없음:
댓글 쓰기