[컴] NERF 프로젝트

UEFI 부팅과정


구글 엔지니어 로널드 미니치(Ronald Minnich)의 발표








사용자가 인식하지 못하는 3가지 OS

  1. ME
    1. 사용자는 모르지만 인텔CPU는 그 동작을 인식할 수 있는 CPU 자원 제어(Ring -2)
    2. 시스템을 켜고 끄거나 인텔CPU 모르게 전원이 차단된 컴퓨터의 디스크 이미지를 재구성(Ring -3) 할 수 있다.
    3. 오픈소스 운영체제(OS) 미닉스(MINX) 3 버전의 변종이지만, 그 소스코드는 비공개다.
    4. 인텔 CPU의 액티브매니지먼트테크놀로지(AMT) 기능도 ME를 기반으로 구동된다.
  2. UEFI(통합확장펌웨어인터페이스)
    1. 메인 CPU에서 구동
    2. 복잡한 커널을 지녔으며 수백만줄의 코드로 구성
    3. 부팅이 완료된 뒤 UEFI 애플리케이션이 구동
    4. 보안모델이 불명확
    5. 다양한 시스템 기능에 접근할 수 있는 컴포넌트를 포함
  3. SMM
    1. 바이오스(BIOS) 영역에서 실행되는 시스템관리모드(SMM)
    2. ME 가 Ring -3 이라면 SMM과 UEFI는 Ring -2
    3. 오래된 16비트 마이크로프로세서(인텔 8086)용 코드의 통로
    4. 인텔의 칩셋은 한 번 SMM을 설치하면 이후 동작 단계에서 D램의 상위 8MB 크기 영역을 숨겨버린다. 그래서 사용자나 관리자는 그 코드를 control 할 수 없다.
    5. SMM은 제조사가 사용자 시스템 통제를 지속하는 역할을 한다.

사용자가 볼 수 있는 부분

  1. 일반 애플리케이션(Ring 3)
  2. 사용자 OS(Ring 0)
  3. 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 의 목표
    1. 해로운 동작을 할 수 있는 능력을 덜어낼 것.
    2. 동작을 더 가시화할 것
    3. 없애기 힘든 ME 펌웨어 자체를 제외한, 웹서버 및 IP스택 등 모든 런타임 구성요소를 제거
    4. UEFI의 IP스택과 다른 드라이버도 제거
    5. ME와 UEFI의 자체 덮어쓰기(self-reflash) 기능을 없앨 것
    6. 펌웨어의 플래시 업데이트를 리눅스에서 관리할 것

 UEFI 구성요소

UEFI boot 과정

References

  1. 인텔CPU 보안구멍, 구글이 메운다 - 지디넷코리아




댓글 없음:

댓글 쓰기