macOS의 옵션 ROM 보안
참고: Apple Silicon이 탑재된 Mac에서는 현재 옵션 ROM이 지원되지 않습니다.
Apple T2 보안 칩이 탑재된 Mac의 옵션 ROM 보안
Thunderbolt 및 PCIe 기기는 물리적으로 기기에 탑재된 ‘옵션 ROM’(OROM)을 지닐 수 있습니다. (이는 일반적으로 실제 ROM은 아니며, 펌웨어를 저장하는 다시 쓰기가 가능한 칩입니다.) UEFI 기반 시스템에서 해당 펌웨어는 일반적으로 UEFI 드라이버이며 UEFI 펌웨어에서 읽고 실행합니다. 실행된 코드는 검색된 하드웨어를 초기화하고 구성하여 나머지 펌웨어에서 하드웨어를 사용할 수 있도록 합니다. 이 기능은 전문화된 타사 하드웨어가 초기 시동 단계(예: 외부 RAID 어레이에서 시동) 동안 로드 및 작동하는 데 필요합니다.
하지만 OROM은 일반적으로 다시 쓰기가 가능하기 때문에 공격자가 합법적인 주변기기의 OROM을 덮어쓰면 공격자의 코드가 시동 프로세스 초기에 실행되며, 실행 환경을 조작하여 이후에 로드된 소프트웨어의 무결성을 위반할 수 있습니다. 마찬가지로 공격자가 시스템에 자체 악성 기기를 도입하면 악성 코드가 실행될 수도 있습니다.
2011년 이후 판매된 macOS 10.12.3 버전이 설치된 Mac 컴퓨터의 경우 특수 키 조합을 누르지 않는 한 Mac이 시동될 때 기본적으로 OROM을 실행하지 않도록 동작이 변경되었습니다. 이 키 조합은 macOS 시동 과정에 악의적인 OROM이 실수로 유입되는 것을 방지합니다. 사용자가 펌웨어 암호를 설정하면 키 조합을 누르는 경우에도 OROM을 실행할 수 없도록 펌웨어 암호 유틸리티의 기본 동작도 변경되었습니다. 이는 의도적으로 악성 OROM을 도입하는 실제 공격자로부터 보호합니다. 펌웨어 암호가 설정되어 있는 동안에도 OROM을 실행해야 하는 사용자의 경우 macOS의 firmwarepasswd
명령어 라인 도구를 사용하여 기본값이 아닌 옵션을 구성할 수 있습니다.
OROM 샌드박스 보안
macOS 10.15 버전에서 UEFI 펌웨어는 OROM 샌드박스 및 이로부터의 권한 취소 메커니즘을 포함하도록 업데이트되었습니다. UEFI 펌웨어는 일반적으로 OROM을 포함한 모든 코드를 ‘ring 0’이라는 CPU 최대 권한 레벨에서 실행하며, 모든 코드 및 데이터를 위한 단일 공유 가상 메모리 공간을 보유합니다. ring 0은 macOS 커널이 실행되는 권한 수준이며, 더 낮은 권한 수준인 ring 3에서는 앱이 실행됩니다. OROM 샌드박스는 커널처럼 가상 메모리 분리를 사용하고 OROM을 ring 3으로 실행하여 OROM의 권한을 취소했습니다.
샌드박스는 OROM이 호출할 수 있는 인터페이스(커널의 시스템 호출 필터링과 흡사)와 OROM이 등록할 수 있는 기기 유형(앱 승인과 흡사)을 상당히 제한합니다. 이러한 설계의 장점은 악성 OROM이 ‘ring 0’ 메모리 내부의 어디에서도 더 이상 직접 쓰기를 할 수 없다는 것입니다. 대신에 해당 OROM은 매우 좁고 잘 정의된 샌드박스 인터페이스에 제한됩니다. 이 제한된 인터페이스는 공격 표면을 크게 줄이며 공격자가 어쩔 수 없이 먼저 샌드박스에서 벗어나 권한 수준을 높일 수밖에 없도록 합니다.