정보기술 · 정보보안 ·
애플 실리콘 보안 아키텍처, 하드웨어 수준에서 커널 공격 차단...역공학 관점 심층 분석
애플 M시리즈 칩의 SPTM과 Exclaves 구조, 기존 커널 보안의 패러다임 전환
[한국정보기술신문] 애플 실리콘 기반 맥OS의 보안 구조가 하드웨어 수준에서 근본적으로 재설계되면서, 전통적인 커널 공격 기법이 사실상 무력화되고 있는 것으로 나타났다. 최근 공개된 역공학 분석 자료에 따르면 애플은 SPTM과 Exclaves라는 새로운 보안 계층을 도입해 커널조차 신뢰하지 않는 제로 트러스트 아키텍처를 구현했다.
실리콘에 새겨진 신뢰의 근원
애플 실리콘의 보안은 커널이 아닌 칩 자체에서 시작된다. 부팅 과정의 첫 명령어가 실행되기 전, 제조 과정에서 칩에 직접 새겨진 부트 롬이 모든 신뢰의 근원이 된다. 이 부트 롬은 물리적으로 변경이 불가능하며, 이후 실행되는 모든 소프트웨어의 암호학적 서명을 검증한다.
특히 주목할 점은 GID 키라는 256비트 암호화 키가 칩 제조 시 물리적으로 주입된다는 것이다. 이 키는 소프트웨어로 읽을 수 없으며, 오직 칩 내부의 전용 하드웨어 블록만이 접근할 수 있다. 해커가 부트 롬의 취약점을 악용해 코드 실행 권한을 얻더라도, 이 키를 추출할 수 없도록 설계되어 있다.
애플은 이를 블랙박스 암호화 엔진이라고 부른다. 암호화된 펌웨어를 입력하면 하드웨어가 내부적으로 GID 키를 사용해 복호화한 뒤 결과만 출력한다. 키 자체는 절대 메모리나 레지스터에 노출되지 않는다.
커널보다 높은 권한, SPTM의 등장
기존 운영체제에서는 커널이 최고 권한을 가졌지만, 애플의 타호 아키텍처에서는 상황이 다르다. SPTM이라는 보안 모니터가 커널보다 높은 권한 수준인 GL2에서 작동하며, 모든 메모리 관리를 감시한다.
SPTM은 물리 메모리의 모든 페이지에 대한 프레임 테이블을 유지한다. 각 페이지는 커널 코드, 커널 데이터, 페이지 테이블, Exclave 데이터 등으로 엄격하게 분류되며, 커널이 페이지 테이블을 수정하려면 반드시 SPTM에 요청해야 한다. SPTM은 요청이 보안 정책에 부합하는지 검증한 뒤에만 작업을 수행한다.
예를 들어 커널이 코드로 분류된 페이지를 쓰기 가능으로 변경하려 하면, SPTM은 즉시 시스템을 패닉 상태로 만든다. 이는 커널 레벨 해킹 도구를 이용한 코드 패치 공격을 원천적으로 차단한다.
흥미로운 점은 SPTM 자체의 메모리 영역이 커널에게는 보이지 않는다는 것이다. 섀도우 권한 재매핑 레지스터라는 하드웨어 메커니즘을 통해, 같은 물리 메모리라도 커널 관점에서는 접근 불가능한 영역으로 설정된다. 이는 메모리 관리 유닛의 권한 비트를 하드웨어 테이블로 간접 참조하는 방식으로 구현되어, 커널이 임의 쓰기 권한을 얻더라도 SPTM 영역을 변조할 수 없다.
Exclaves, 커널 밖의 안전한 세계
타호 아키텍처의 또 다른 혁신은 Exclaves다. 이는 커널과 같은 프로세서 코어에서 실행되지만 완전히 격리된 마이크로커널 환경이다. 얼굴 인식, 지문 인식, 패스키 같은 민감한 작업이 이곳에서 처리된다.
Exclaves와 일반 커널은 같은 물리 메모리를 사용하지만, SPTM이 물리 페이지 수준에서 소유권을 분리한다. 커널이 Exclave 메모리에 접근하려 하면 하드웨어 수준에서 거부된다. 양측은 링게이트라는 통신 메커니즘을 통해서만 메시지를 주고받을 수 있으며, 이마저도 타이트빔이라는 새로운 인터페이스 정의 언어로 엄격하게 구조화된다.
실용적인 예로 카메라 사용 표시등이 있다. 기존에는 커널이나 윈도우 서버가 화면에 초록 점을 그렸기 때문에, 커널 권한을 얻은 악성코드가 이를 숨길 수 있었다. 타호에서는 프라이버시 표시등을 담당하는 프레임버퍼 영역이 Exclave 전용으로 할당되며, 디스플레이 컨트롤러의 IOMMU도 SPTM이 설정해 커널이 접근할 수 없다. 카메라 센서의 전원 인터럽트가 직접 Exclave로 전달되므로, 커널을 완전히 장악해도 표시등을 지울 수 없다.
포인터 인증으로 막는 메모리 공격
애플 실리콘의 ARM 프로세서는 포인터 인증이라는 독특한 기능을 탑재했다. 64비트 포인터의 상위 비트에 암호학적 서명을 삽입해, 포인터가 위조되었는지 하드웨어가 실시간으로 검증한다.
커널이 함수 포인터나 반환 주소를 사용할 때, 프로세서는 저장된 서명을 재계산해 비교한다. 서명이 일치하지 않으면 포인터를 고의로 무효한 주소로 변경해, 이를 사용하려는 순간 예외를 발생시킨다. 이는 해커가 메모리를 변조해도 제어 흐름을 탈취할 수 없게 만든다.
특히 IOKit의 C++ 객체는 이중 서명 구조를 사용한다. 객체의 가상 함수 테이블 포인터가 서명되고, 테이블 내부의 각 함수 포인터도 별도로 서명된다. 공격자가 가짜 객체를 만들려면 두 단계 모두의 서명을 위조해야 하는데, 서명 키는 하드웨어에 보관되어 소프트웨어로 접근할 수 없다.
부팅부터 런타임까지 끊이지 않는 검증
부팅 과정 자체도 다층적인 검증 구조를 갖는다. 부트 롬이 저수준 부트로더를 검증하고, 저수준 부트로더가 iBoot을 검증하며, iBoot이 SPTM과 커널을 검증한다. 각 단계는 다음 단계의 암호 서명을 공개 키 가속기라는 하드웨어로 확인한다.
흥미롭게도 iBoot은 SPTM을 메모리에 적재한 뒤 커널에게는 그 위치를 알려주지 않는다. 커널은 SPTM의 물리 메모리가 예약되었다는 것만 알 뿐, 가상 주소를 모른다. 이는 커널의 메모리 누수 취약점이 발견되어도 SPTM의 위치를 알아낼 수 없게 한다.
보안 엔클레이브, 독립된 또 다른 컴퓨터
애플 실리콘에는 메인 프로세서와 별도로 보안 엔클레이브 프로세서가 존재한다. 이는 같은 칩에 있지만 물리적으로 분리된 ARM 코어로, 자체 운영체제를 실행한다.
보안 엔클레이브는 메인 메모리를 사용하되, 메모리 보호 엔진을 통해 데이터를 암호화한다. 이 엔진은 부팅 시마다 새로운 임시 키를 생성하며, 메인 프로세서가 보안 엔클레이브 메모리 영역을 읽으려 하면 암호화된 무의미한 데이터만 보인다. 단일 비트라도 변조하면 CMAC 태그 검증이 실패해 보안 엔클레이브가 즉시 잠긴다.
보안 엔클레이브는 무결성 트리라는 구조로 리플레이 공격도 방어한다. 메모리의 모든 블록이 해시 트리로 연결되며, 루트 해시는 칩 내부의 SRAM에 저장된다. 공격자가 과거 메모리 스냅샷을 복원하려 해도, 현재 루트 해시와 일치하지 않아 탐지된다.
드라이버까지 격리하는 DriverKit
전통적으로 장치 드라이버는 커널 내부에서 실행되어, 드라이버의 버그가 곧 시스템 전체의 취약점이 되었다. DriverKit은 이를 근본적으로 바꾼다.
DriverKit 드라이버는 사용자 공간의 일반 프로세스로 실행되며, 샌드박스로 제한된다. 하드웨어 접근은 엄격하게 제한된 API를 통해서만 가능하며, 직접 메모리 접근도 SPTM이 관리하는 IOMMU를 거친다.
드라이버가 DMA를 위해 메모리를 할당하면, 커널이 SPTM에게 IOMMU 매핑을 요청한다. SPTM은 해당 물리 페이지가 커널 코드나 페이지 테이블이 아닌지 확인한 뒤에만 장치가 접근할 수 있게 설정한다. 이는 악의적인 드라이버가 장치를 이용해 커널 메모리를 변조하는 공격을 차단한다.
코드 서명 검증, TXM으로 이동
과거에는 코드 서명 검증을 AMFI라는 커널 확장이 담당했지만, 커널 공격으로 이를 우회할 수 있었다. 타호에서는 이 기능이 신뢰 실행 모니터로 이동했다.
TXM은 GL0 수준의 Exclave로 작동하며, 실행 가능한 코드의 해시를 신뢰 캐시에 보관한다. 커널이 페이지를 실행 가능으로 매핑하려 하면, SPTM이 TXM에게 해당 코드가 검증되었는지 묻는다. TXM이 승인하지 않으면 SPTM은 실행 권한을 부여하지 않는다.
개발자 모드나 보안 정책 변경도 TXM이 관리한다. 이전에는 부트 인자를 변경해 보안을 우회할 수 있었지만, 이제는 물리적 버튼 조작과 재부팅을 거쳐야 하며, 보안 엔클레이브가 서명한 로컬 정책을 TXM이 검증한다.
역공학 관점에서의 평가
보안 연구자들은 이 구조가 전통적인 커널 공격을 사실상 불가능하게 만들었다고 평가한다. 과거에는 커널 메모리 읽기 쓰기 권한만 얻으면 모든 것이 가능했지만, 이제는 커널 권한으로도 코드 실행, 메모리 테이블 수정, 보안 정책 변경이 하드웨어 수준에서 차단된다.
공격 표면은 SPTM, TXM, Exclaves 간의 상호작용으로 이동했다. 특히 공유 메모리를 통한 통신에서 TOCTOU 경쟁 상태나, SPTM의 상태 머신 로직 오류가 새로운 취약점 클래스로 부상하고 있다. 또한 GENTER 명령어의 디스패치 테이블이나 프레임 테이블 관리 로직이 중요한 분석 대상이 되었다.
애플이 ARM 표준 명령어 집합을 확장해 GENTER, GEXIT 같은 독자 명령어를 추가한 점도 주목할 만하다. 이는 표준 ARM 문서만으로는 시스템을 완전히 이해할 수 없음을 의미한다.
전망과 과제
애플의 접근 방식은 하드웨어와 소프트웨어의 긴밀한 통합을 통해 보안을 구현한다는 점에서 독특하다. 이는 범용 하드웨어를 사용하는 다른 운영체제가 따라하기 어려운 수직 통합의 이점이다.
다만 복잡성이 크게 증가했다는 우려도 있다. SPTM, TXM, Exclaves, 보안 엔클레이브가 상호작용하는 과정에서 예상치 못한 상태 불일치가 발생할 가능성이 있으며, 이는 새로운 형태의 취약점으로 이어질 수 있다.
또한 이러한 보안 기능들이 성능에 미치는 영향도 분석이 필요하다. 모든 메모리 테이블 작업이 SPTM을 거치고, 모든 포인터 접근이 서명 검증을 수반하는 것이 실제 워크로드에서 어떤 성능 특성을 보이는지는 장기적인 관찰이 필요하다.
보안 연구 커뮤니티는 이 새로운 아키텍처의 세부 사항을 계속 분석하고 있으며, 향후 다른 칩 제조사들도 유사한 하드웨어 기반 보안 메커니즘을 도입할 가능성이 높다는 전망이다.
한국정보기술신문 정보보안분과 오상진 기자 news@kitpa.org