Mac 컴퓨터의 직접 메모리 접근 보호
PCIe, FireWire, Thunderbolt 및 USB 등 고속 인터페이스의 높은 처리량을 처리하려면 컴퓨터가 주변기기로부터 DMA(직접 메모리 접근)를 지원해야 합니다. 즉, CPU를 계속 사용하지 않고도 RAM을 읽고 쓸 수 있어야 합니다. 2012년부터 Mac 컴퓨터는 DMA를 보호하기 위한 수많은 기술을 구현하여 모든 PC에 가장 우수하며 종합적인 DMA 보호 기능을 제공합니다.
Apple Silicon이 탑재된 Mac의 직접 메모리 접근 보호
Apple SoC(System on Chip)는 PCIe 및 Thunderbolt 포트를 비롯하여 시스템의 각 DMA 에이전트에 대해 IOMMU(입력/출력 메모리 관리 유닛)를 포함합니다. 각 IOMMU는 주소 변환표 집합을 보유하여 DMA 요청을 변환하므로, PCIe 또는 Thunderbolt로 연결된 주변기기는 사용 목적과 명백히 매핑되는 메모리에만 접근할 수 있습니다. 주변기기는 커널이나 펌웨어처럼 시스템의 다른 부분에 속한 메모리 또는 다른 주변기기에 할당된 메모리에 접근할 수 없습니다. 한 IOMMU에서 주변기기가 사용 목적에 매핑되지 않은 메모리에 접근하려는 시도를 감지하면 커널 패닉을 일으킵니다.
Intel 기반 Mac용 직접 메모리 접근 보호
Intel 기반 Mac 컴퓨터에 Intel Virtualization Technology for Directed I/O(VT-d)가 적용되어 있으면 IOMMU를 초기화하여 DMA 재매핑 및 인터럽트 재매핑을 가능케 하므로, 시동 프로세스의 극초기 단계에서 다양한 종류의 보안 취약성을 완화합니다. Apple IOMMU 하드웨어는 기본 거부 정책으로 작동을 시작하여 시스템 전원이 켜지는 순간 자동으로 주변기기의 DMA 요청을 차단합니다. 소프트웨어를 사용한 초기화 후 IOMMU는 주변기기 사용 목적과 명백히 매핑된 메모리 영역으로 해당 기기의 DMA 요청을 허용하기 시작합니다.
참고: 각 IOMMU가 그 주변기기에 대한 MSI를 처리하기 때문에 Apple Silicon이 탑재된 Mac에서는 PCIe에 대한 인터럽트 재매핑이 필요하지 않습니다.
macOS 11부터 Apple T2 보안 칩이 탑재된 모든 Mac 컴퓨터는 UEFI 드라이버를 실행하며, 이러한 드라이버가 외부 기기와 페어링될 때 제한된 ring 3 환경에서 DMA를 제공합니다. 이 속성은 시동 시 악성 기기가 예기치 못한 방법으로 UEFI 드라이버와 통신할 경우 발생할 수 있는 보안 취약성을 완화하는 데 도움이 됩니다. 특히 DMA 버퍼의 드라이버 처리 시 취약성의 영향을 줄여줍니다.