아이폰 17 Memory Integrity Enforcement
들어가며
2025년 9월 9일, Apple이 iPhone 17과 iPhone Air를 공개하면서 함께 발표한 내용 중 보안 관련되서 주목할만한 내용이 있었는데 애플이 공개적으로 발표한것도 아니고 많은 사람들이 관심을 갖지 않아서 한번 다뤄보려고 한다. 내가 주목한 내용은 Memory Integrity Enforcement (MIE)라는 새로운 보안 기능이다. Apple은 이 기능을 소비자 운영체제 역사상 메모리 안전성에 있어 가장 중요한 업그레이드라고 표현했다.
5년이라는 긴 시간 동안 Apple이 심혈을 기울여 개발한 이 기술은, Apple Silicon 하드웨어와 운영체제 보안을 완벽하게 결합하여 업계 최초로 항상 활성화된 메모리 안전 보호를 제공한다. 그러면서도 Apple이 자랑하는 기기 성능은 그대로 유지한다고 한다. 과연 어떤 기술이길래 이런 자신감을 보이는 걸까?
iPhone은 정말 안전한가?
우선 흥미로운 사실을 말하자면 iPhone에 대한 성공적이고 광범위한 악성코드 공격은 지금까지 단 한 번도 없었다. 물론 이게 iPhone이 완전히 무적이라는 뜻은 아니다. 실제로 관찰되는 iOS 공격들은 존재한다. 하지만 이런 공격들은 모두 용병형 스파이웨어(mercenary spyware)라는 특수한 형태다.
용병형 스파이웨어는 우리가 흔히 생각하는 악성코드와는 다르다. 일반적인 사이버 범죄나 소비자 대상 악성코드보다 훨씬 복잡하고, 역사적으로 국가 행위자들과 연관되어 있다. 개발 비용만 수백만 달러에 달하며, 매우 소수의 특정 개인과 기기만을 표적으로 삼는다. 대다수 사용자는 이런 공격의 대상이 되지 않지만, 이런 익스플로잇 체인들은 주어진 시점에서 가장 비싸고 복잡하고 고도화된 공격자 역량을 보여준다는 점에서 연구 가치가 있다.
그리고 여기 중요한 공통점이 하나 있다. iOS를 대상으로 한 용병형 스파이웨어 체인이든, Windows나 Android를 노리는 공격이든, 모두 메모리 안전성 취약점을 악용한다는 것이다. 이런 취약점은 서로 교환 가능하고, 강력하며, 산업 전반에 걸쳐 존재한다. 바로 이것이 Apple이 MIE 개발에 5년을 투자한 이유다.
Apple이 메모리 안전성을 위해 해온 일들
사실 Apple의 메모리 안전성 노력은 어제오늘 시작된 게 아니다. MIE에 이르기까지 Apple이 걸어온 길을 보면, 얼마나 체계적으로 접근해왔는지 알 수 있다.
먼저 Swift라는 메모리 안전 언어를 만들었다. 사용하기 쉬우면서도 메모리 안전성을 보장하는 언어로, 새로운 코드를 작성하거나 기존 컴포넌트를 재작성할 때 활용하고 있다. 하지만 언어만으로는 부족했다.
iOS 15에서는 kalloc_type이라는 커널용 보안 메모리 할당자를 도입했고, iOS 17에서는 그 사용자 레벨 버전인 xzone malloc을 내놓았다. 이 할당자들의 특별한 점은 메모리 할당의 타입, 즉 목적을 안다는 것이다. 이를 활용해서 대부분의 메모리 손상 취약점을 본질적으로 악용하기 어렵게 만드는 방식으로 메모리를 조직한다.
그리고 2018년, A12 Bionic 칩에 업계 최초로 Pointer Authentication Codes (PAC)를 탑재했다. 메모리 손상이 존재하는 상황에서도 코드 흐름 무결성을 보호하는 메커니즘이다. PAC가 익스플로잇 복잡도를 높이는 데 강력하게 성공하면서, Apple은 확신을 얻었다. 소프트웨어와 하드웨어 보안의 깊은 통합이야말로 가장 큰 보안 과제를 해결하는 핵심이라는 것을.
PAC를 완성한 직후, Apple은 곧바로 다음 단계로 나아갔다. 정교한 메모리 안전 역량을 Apple Silicon에 직접 구축하는 가장 효과적인 방법을 찾기 시작한 것이다. 그리고 그 여정의 끝에 MIE가 있다.
Arm MTE와의 만남 더 나아가
2019년, Arm이 Memory Tagging Extension (MTE)이라는 흥미로운 사양을 발표했다. 하드웨어가 메모리 손상 버그를 찾는 데 도움을 주는 도구였다. 작동 원리는 간단하면서도 영리했다. 모든 메모리 할당에 비밀 태그를 붙이고, 나중에 메모리에 접근하려면 올바른 비밀을 제시해야 한다. 비밀이 일치하지 않으면 앱이 크래시되고 이벤트가 기록된다. 개발자가 메모리 손상 버그를 즉시 발견할 수 있게 해주는 셈이다.
Apple은 이 기술에 깊은 관심을 가졌다. 하지만 그냥 받아들이지는 않았다. MTE가 설계된 대로 Apple의 하드웨어 지원 메모리 안전성 목표를 충족할 수 있는지 심층 평가에 들어갔다. 그리고 결론은 명확했다. 실시간 방어 조치로 사용하기에 원본 Arm MTE는 Apple이 받아들일 수 없는 약점들을 가지고 있었다.
가장 큰 문제는 동기 vs 비동기 선택이었다. MTE는 메모리 손상을 동기적으로 보고할 수도 있고 비동기적으로 보고할 수도 있었다. 비동기 모드에서는 메모리 손상이 발생해도 즉시 예외를 발생시키지 않는다. 공격자에게는 악용할 수 있는 경쟁 조건 창이 열리는 셈이다. Apple의 입장은 단호했다. “우리는 그런 메커니즘을 구현하지 않을 것이다.”
Apple이 믿는 원칙은 분명했다. 메모리 안전 보호는 반드시 엄격하게 동기적이어야 하고, 기본적으로 켜져 있어야 하며, 지속적으로 작동해야 한다. 하지만 여기에 큰 도전이 있었다. 주요 공격 표면 전체에서 항상 켜져 있는 동기식 MTE를 지원하면서도 훌륭한 고성능 사용자 경험을 유지하는 것은 하드웨어에 극도로 부담이 컸다.
그래서 Apple은 Arm과 협력하여 2022년에 Enhanced Memory Tagging Extension (EMTE)이라는 개선된 사양을 만들어냈다. 하지만 더 중요한 것은 Apple의 깨달음이었다. EMTE가 명세서상으로는 큰 잠재력을 가지고 있지만, 깊은 하드웨어 및 운영체제 지원을 갖춘 엄격한 구현이 결합되어야만 진정한 돌파구가 될 수 있다는 것이었다.
결국 Apple은 결정을 내렸다. 진정으로 최고 수준의 메모리 안전성을 제공하기 위해, Apple 전체를 아우르는 대규모 엔지니어링 작업을 수행하겠다고. Apple Silicon 업데이트, 운영체제 업데이트, 소프트웨어 프레임워크 업데이트를 모두 포함하는 작업이었다. 이 노력이 매우 성공적이었던 보안 메모리 할당자 작업과 함께, MTE를 단순한 디버깅 도구에서 획기적인 보안 기능으로 변모시킬 것이었다.
MIE의 세 기둥
그렇게 탄생한 것이 오늘날의 Memory Integrity Enforcement다. MIE는 세 개의 기둥 위에 서 있다.
첫 번째 기둥은 보안 메모리 할당자들이다. kalloc_type, xzone malloc, 그리고 WebKit의 libpas가 제공하는 견고한 기반이 바로 그것이다. 이들은 모두 타입 정보를 활용한다는 공통점이 있다. 공격자가 use-after-free나 out-of-bounds 버그를 악용할 때의 목표는 메모리의 중복된 해석을 만드는 것인데, 이를 위해서는 특정 타입의 할당이 자신에게 유리한 정확한 위치에 오도록 제어해야 한다. 타입 인식 배치 정책은 바로 이런 시도를 저지한다.
이 보안 할당자들은 메모리 손상에 대한 소프트웨어 보호의 새로운 최고 수준을 세웠다. 게다가 성능도 뛰어나다. 교체한 기존 할당자들과 동일하거나 더 나은 성능을 보인다. 하지만 한계도 있었다. 할당자는 메모리 페이지 단위로만 보호를 적용할 수 있다. iOS에서 페이지는 16KB인데, 여러 페이지에 걸친 할당에는 잘 맞지만 작은 할당의 경우 문제가 생긴다. 서로 다른 타입 버킷 간 공격은 막을 수 있어도, 같은 타입 버킷 내의 공격은 페이지 수준 보호로는 너무 거칠다. 이 격차를 메우는 것이 바로 메모리 태깅이다.
두 번째 기둥은 동기 모드의 EMTE다. EMTE는 가장 흔한 두 가지 메모리 손상 공격을 직접 차단한다. 버퍼 오버플로우의 경우를 먼저 보자. 할당자는 인접한 할당들에 서로 다른 태그를 사용한다. 세 개의 인접한 메모리 영역이 각각 다른 비밀 태그를 가지고 있다고 생각해보자. 어떤 코드가 첫 번째 영역에 접근할 권한을 가지고 있다면, 그 영역 내에서는 자유롭게 움직일 수 있다. 하지만 버퍼 오버플로우로 인해 접근이 인접한 두 번째 영역으로 넘어가는 순간, 하드웨어가 즉시 이를 감지하고 차단한다. 운영체제는 프로세스를 종료시킨다.
Use-after-free 공격도 비슷한 방식으로 막는다. 메모리가 해제되고 다른 목적으로 재할당될 때, 할당자는 그 메모리를 재태깅한다. 만약 어떤 코드가 이전 태그를 가지고 이미 재태깅된 메모리에 접근하려 하면, 그것이 전형적인 use-after-free 공격 패턴이고, 하드웨어가 즉시 차단한다.
원본 MTE의 큰 약점 중 하나는 전역 변수 같은 태그되지 않은 메모리에 대한 접근은 하드웨어가 검사하지 않는다는 점이었다. 공격자가 핵심 애플리케이션 구성과 상태를 제어하려 할 때 방어적 제약이 적어지는 것이다. Enhanced MTE는 이 문제를 해결했다. 태그된 메모리 영역에서 태그되지 않은 메모리에 접근하려면 그 영역의 태그를 알아야 한다. 공격자가 동적 태그된 메모리의 out-of-bounds 버그를 이용해 태그되지 않은 할당을 직접 수정하여 EMTE를 우회하는 것이 훨씬 어려워진 셈이다.
세 번째 기둥은 Tag Confidentiality Enforcement다. 보안 할당자의 구현을 기술적 위협으로부터 보호하고, EMTE 태그의 기밀성을 지키는 역할을 한다. 여기에는 사이드채널 공격과 추측 실행 공격도 포함된다. 타입 기반 할당자와 EMTE는 모두 비밀에 의존한다. 사용자 애플리케이션으로부터 커널 데이터 구조의 기밀성, 그리고 할당자가 선택한 태그의 기밀성. 공격자가 이런 비밀들을 노출시킬 수 있다면 전체 시스템을 무력화할 수 있다.
커널 보호를 위해 Apple은 Secure Page Table Monitor를 사용한다. 커널이 손상된 경우에도 강력한 보증을 제공하는 메커니즘이다. 또한 커널이 애플리케이션을 대신하여 메모리에 접근할 때도 사용자 공간과 동일한 태그 검사 규칙을 적용받도록 보장한다.
추측 실행 그리고 보이지 않는 적?
추측 실행 기반 공격은 특히 까다로운 상대다. 현대 CPU는 성능을 높이기 위해 명령어 실행을 예측한다. 예측이 맞으면 계산이 매우 빠르지만, 틀리면 CPU가 예측을 버리고 계산이 느려진다. 문제는 버려진 예측도 시스템 상태와 데이터를 드러낼 수 있는 관찰 가능한 효과를 남긴다는 것이다. 더 나쁜 점은 추측 공격이 시스템을 크래시시키거나 눈에 보이게 오작동하게 만들지 않는다는 것이다. 공격자에게는 완벽한 무기인 셈이다.
역사적인 사례가 하나 있다. Pointer Authentication 명령어를 추측적으로 평가하면 Apple의 원래 PAC 구현에서 타이밍 차이가 노출되어, 유효한 서명을 분리할 수 있었다. MIE 설계 단계에서 Apple은 태그 기밀성을 훼손할 수 있는 세 가지 추측 취약점을 식별하고 모두 해결했다.
첫 번째 취약점은 태그 검사 자체의 추측 실행이었다. EMTE가 활성화되면 메모리 접근 요청마다 하드웨어가 태그를 검사한다. 여기서 중요한 것은 태그 검사 명령어를 추측적으로 평가할 때 공격자가 유효한 태그를 분리할 수 있게 하는 타이밍 차이를 노출해서는 안 된다는 점이다. Apple은 처음부터 태그 값이 추측 실행에 어떤 방식으로도 영향을 줄 수 없도록 Apple Silicon 구현을 설계했다.
흥미롭게도, 최근 발표된 보안 연구들(StickyTags, TikTag)은 Google Pixel 기기의 MTE 구현이 바로 이런 유형의 공격에 취약하다는 것을 보여주었다. Google Chrome과 Linux 커널에서 MTE를 우회할 수 있었다. Apple의 구현과는 명확한 차이가 있는 부분이다.
두 번째는 태그의 예측 가능성이었다. 할당자는 메모리에 무작위 태그를 할당하는데, 공격자가 시스템이 선택할 태그 값을 예측할 수 있으면 안 된다. Apple은 새 태그를 선택하는 데 사용되는 의사 난수 생성기를 자주 재시드하여 이 문제를 해결했다.
세 번째이자 가장 도전적인 문제는 Spectre variant 1 (V1)이었다. 공격자가 조건부 분기를 악용하여 MTE 태그 값을 포함한 데이터를 누출시킬 수 있게 하는 추측 실행 취약점이다. 현재까지 소비자 운영체제에서 이 문제에 대한 해결책이 없었다. Speculative Load Hardening 같은 일반적인 완화책은 CPU 비용이 너무 크기 때문이다.
EMTE가 존재하는 상황에서 Spectre V1은 공격자가 공격을 안내하는 데 사용할 수 있는 마지막 통로 중 하나로 남아 있었다. Apple은 여기서 놀라운 해결책을 내놓았다. 거의 0에 가까운 CPU 비용으로 Spectre V1 누출의 효과적 도달 범위를 제한하는 완화책을 설계한 것이다. VUSec의 TDI와 유사한 아이디어를 사용해서 공격자가 타입 분리에 직면하도록 강제한다. 결과는 놀라웠다. 공격자가 95% 이상의 익스플로잇 가능성에 도달하려면 일반적으로 25개 이상의 V1 시퀀스가 필요하게 되었다.
Google의 MTE와 무엇이 다른가?
Google도 메모리 안전성에 대한 노력을 계속해왔다. 2023년 10월에 출시한 Pixel 8과 Pixel 8 Pro는 MTE 하드웨어를 탑재한 최초의 상용 기기였다. 위험에 처한 사용자들을 위한 선택적 보호 프로그램으로 제공되었다. Apple도 이를 “훌륭한 첫걸음”이라고 평가했다.
하지만 Apple의 시각은 명확했다. 심지어 MTE를 켜는 사용자들에게도 Android의 MTE 효과는 제한적이라는 것이다. 그 이유는 운영체제와의 깊은 통합 부족 때문이다. 이것이 바로 Memory Integrity Enforcement와 Apple Silicon의 EMTE를 구별하는 핵심이다.
차이는 곳곳에 있다. Apple은 엄격하게 동기식 태그 검사만 사용한다. 모든 사용자에게 기본적으로 켜져 있다. A19와 A19 Pro 칩은 MIE를 위해 특별히 설계되었다. 추측 실행 공격까지 고려한 포괄적인 태그 기밀성 보호가 구현되어 있다. 그리고 깊은 통합 덕분에 성능 영향이 최소화되었다.
앞서 언급한 TikTag과 StickyTags 연구는 이런 차이를 명확히 보여준다. Google Pixel의 MTE 구현은 추측 실행을 이용한 공격에 취약했다. TikTag 공격은 95% 이상의 성공률로 태그를 유출하여 Chrome과 Linux 커널의 MTE를 우회할 수 있었다. StickyTags는 Pixel 8 Pro에서 100% 태그 유출 성공률을 달성했다. Apple이 처음부터 이런 공격들을 고려하여 설계한 것과는 대조적이다.
하드웨어와 소프트웨어, 완벽한 설계
새로운 A19와 A19 Pro 칩이 MIE를 지원하기 위해, Apple은 전례 없는 양의 Silicon 리소스를 보안에 투입했다. 그 어느 때보다 많은 CPU 면적, CPU 속도, 그리고 태그 저장을 위한 메모리를 할애했다. 하지만 하드웨어만으로는 부족했다. 이 하드웨어 투자를 완전히 실현하기 위해, MIE의 모든 새로운 운영체제 요소를 하드웨어 작업과 함께 설계했다.
EMTE 태그 검사는 성능 비용을 발생시킨다. 그래서 Apple은 영리한 전략을 사용했다. 먼저 보안 할당자를 최대한 활용하고, EMTE는 타입 버킷 내 작은 개별 할당만 보호하는 데 사용한다. 소프트웨어 할당자만으로는 스스로 방어할 수 없는 부분에만 집중하는 것이다.
EMTE를 어디에 어떻게 배포할지 정확히 알고 있었기 때문에, 운영체제의 태그 검사 수요를 정확하게 모델링할 수 있었다. 그리고 이를 만족시키도록 실리콘을 설계했다. 하드웨어 구현은 다시 소프트웨어 설계 결정에 영향을 미쳤고, 태그 검사의 오버헤드는 더욱 줄어들었다.
중요한 점이 하나 더 있다. 이런 정밀한 배포 전략은 EMTE를 지원하지 않는 이전 iPhone 세대 사용자들에게도 가능한 한 많은 메모리 안전성 개선을 제공하는 전략을 지원한다. 보안 할당자 부분은 구형 기기에도 적용할 수 있기 때문이다.
5년간의 공격과 방어
Memory Integrity Enforcement의 보안 평가는 처음부터 특별했다. Apple의 공격 연구팀이 설계 단계부터 참여했기 때문이다. 2020년부터 2025년까지 5년 동안, 그들은 끊임없이 시스템을 분석하고 공격했다. 처음에는 개념적으로, 이론적인 익스플로잇 경로를 찾아냈다. 그 다음에는 시뮬레이션 환경에서 실제 공격을 시도했다. 그리고 결국 새로운 하드웨어 프로토타입에서 직접 공격해보았다.
이런 장기간의 참여가 가져온 결과는 놀라웠다. 공격자가 발견하기 전에 전체 공격 전략과 기법을 식별하고 제거할 수 있었던 것이다. 출시 시점부터 더 강력하고 성숙한 기능이 될 수 있었다.
공격 연구팀은 공격자가 시스템에 침입할 가능성이 가장 높은 위치와 방법을 찾아냈다. MIE의 배포는 바로 그들의 발견에 깊이 안내받았다. 특히 중요했던 것은 이 강력한 보호를 서드파티 앱들에게도 제공하는 것이었다. 소셜 네트워크, 메시징 앱 등 공격자의 진입점이 될 가능성이 높은 앱들 말이다. MIE 출시와 동시에 모든 개발자가 Xcode의 Enhanced Security 설정을 통해 자신의 앱에서 이 보호를 테스트할 수 있게 되었다.
이 모든 세심한 계획과 구현 덕분에 Apple은 플랫폼의 모든 까다로운 워크로드에 대해 동기식 태그 검사를 유지할 수 있었다. 최소한의 성능 영향으로 획기적인 보안을 제공하면서도, 사용자에게는 완전히 보이지 않는다.
실제 공격과의 대결
MIE는 깊이 야심찬 목표로 시작했다. 플랫폼에 대한 메모리 손상 기반 용병형 스파이웨어 공격을 개발하고 유지하는 것을 엄청나게 더 비싸고 어렵게 만들겠다는 것이었다. 완벽한 보안 같은 것은 없다. 하지만 MIE는 익스플로잇 중 공격자와 그들의 자유도를 극적으로 제약하도록 설계되었다.
설계와 구현 전반에 걸쳐, 공격 연구팀은 진행 상황을 평가했다. 이전에 플랫폼에 사용되었던 정교한 익스플로잇 체인들, 최근 취약점들, 그리고 자체 내부 연구를 살펴보았다. 먼저 이전에 본 익스플로잇 체인을 MIE로 보호된 시스템에 재구축하고 적응시키려 시도했다.
하지만 MIE가 존재하기 전에 개발된 이전 체인만 고려하는 것으로는 충분하지 않았다. 공격자는 이런 새로운 보호에 반응하여 확실히 적응할 것이기 때문이다. 그래서 MIE에서 살아남을 가능성이 가장 높을 것으로 예상되는 최근 취약점들도 평가했다. 이들에 대해서는 kalloc_type에 대한 SockPuppet 평가와 유사하게 모든 가능한 익스플로잇 기회를 꼼꼼히 열거했다.
두 가지 접근법 모두 같은 결론을 드러냈다. Memory Integrity Enforcement는 공격자가 사용할 수 있는 익스플로잇 전략을 대폭 줄인다는 것이었다.
메모리 손상 버그는 보통 서로 교환 가능하다. 하나가 막히면 다른 걸로 바꿔서 같은 목적을 달성할 수 있다는 뜻이다. 하지만 MIE는 기본적인 수준에서 너무 많은 익스플로잇 단계를 차단했다. 새로운 버그로 교체해도 체인을 복원하는 것이 불가능했다. 상당한 노력을 기울였음에도 불구하고, MIE를 우회하도록 이 체인들 중 어떤 것도 재구축할 수 없었다. 남아 있는 소수의 메모리 손상 효과는 신뢰할 수 없고, 공격자에게 버그를 성공적으로 악용할 충분한 추진력을 주지 못했다.
Apple이 공개한 차트는 평가한 6개의 실제 익스플로잇 체인을 보여준다. 각 체인에서 MIE가 공격을 중지시키는 단계를 표시했다. 보안 할당자가 막은 곳, EMTE가 차단한 곳, 또는 둘 다가 함께 막은 곳을.
여기서 주목할 만한 패턴이 있다. 공격자는 익스플로잇 프로세스 초기에 MIE와 마주친다. 물론 일부 이슈는 MIE에서 살아남을 수 있다. 예를 들어 intra-allocation 버퍼 오버플로우 같은 것들이다. 하지만 이런 이슈는 극히 드물고, 완전한 end-to-end 익스플로잇에 적합한 것은 더욱 적다.
필연적으로 공격자는 자신의 능력이 여전히 매우 제한적인 단계에서 MIE와 직면해야 한다. 악용 가능한 통로가 거의 없는 상황이다. 이는 취약한 체인으로 이어진다. 단 하나의 단계를 깨뜨리는 것만으로도 전체 익스플로잇 전략을 무효화하기에 충분하다. 그렇게 되면 체인의 대부분 구성요소를 재사용할 수 없다. 공격자는 완전히 새로운 버그로 익스플로잇 개발을 다시 시작해야 한다.
메모리 안전성의 새로운 시대
iPhone의 업계 최고 보안은 대다수 사용자가 자신의 기기에서 시스템 수준 공격에 직면하지 않는다는 것을 의미한다. Apple의 메모리 안전성 작업은 주로 용병형 스파이웨어 및 감시 산업을 겨냥한다. 그들은 메모리 손상 취약점을 악용하기 위해 수백만 달러를 지출하며, 그들이 누구인지 무엇을 하는지 때문에 소수의 개인을 표적으로 삼는다.
지난 5년간 Apple은 하드웨어와 소프트웨어 역량의 장점을 통합하는 포괄적인 메모리 안전성 접근 방식을 개발했다. 오늘의 발표는 이 야심찬 비전의 정점이다.
iPhone 17 라인업과 iPhone Air의 도입과 함께, Apple은 업계 최초의 포괄적이고 항상 켜져 있는 메모리 안전 보호를 제공한다. 커널을 포함한 주요 공격 표면과 70개 이상의 사용자 영역 프로세스를 커버한다. Enhanced Memory Tagging Extension에 기반하고 있으며, 보안 타입 기반 할당자와 태그 기밀성 보호의 지원을 받는다.
지난 3년간의 예외적으로 정교한 용병형 스파이웨어 공격에 대해 MIE를 시험한 평가를 기반으로, Apple은 다음과 같이 믿는다. MIE는 익스플로잇 체인을 개발하고 유지하는 것을 훨씬 더 비싸고 어렵게 만들 것이다. 지난 25년간 가장 효과적인 익스플로잇 기법들 중 다수를 무력화할 것이다. 그리고 Apple 제품의 메모리 안전성 환경을 완전히 재정의할 것이다.
기기에서 메모리 손상 취약점을 악용하는 공격자의 능력을 얼마나 극적으로 감소시키는지 때문에, Apple은 Memory Integrity Enforcement가 소비자 운영체제 역사상 메모리 안전성에 있어 가장 중요한 업그레이드를 대표한다고 믿는다.
보안 연구자 관점에서 보는 MIE
보안을 공부하는 입장에서 MIE는 여러 면에서 흥미롭다.
먼저 이론과 실전의 완벽한 결합이다. 학문적으로 연구된 메모리 태깅 기술이 실제 제품에서 대규모로, 그것도 항상 켜진 상태로 구현된 첫 사례다. 방어 심층화의 교과서적 사례이기도 하다. 소프트웨어 계층의 타입 기반 보안 할당자, 하드웨어 계층의 EMTE 동기 모드, 그리고 사이드채널과 추측 실행 공격까지 대응하는 보안 계층이 유기적으로 결합되어 있다.
공격자 중심 설계도 인상적이다. 5년간의 내부 공격 연구를 통해 이론적 공격 경로뿐만 아니라 실제 공격자가 사용할 가능성이 높은 기법들을 사전에 차단했다. SockPuppet 같은 실제 공개된 익스플로잇을 명시적으로 언급한 것도 학술 연구와 실제 공격 사례를 모두 고려하는 체계적 접근을 보여준다.
성능과 보안의 균형도 주목할 만하다. Apple은 Spectre V1 완화에서 “거의 0에 가까운 CPU 비용”을, 전체 시스템에서 “최소한의 성능 영향”을 달성했다고 주장한다. 물론 독립적인 정량적 벤치마크는 아직 공개되지 않았지만, 하드웨어-소프트웨어 공동 설계의 중요성을 잘 보여주는 사례다.
산업 전체에 대한 영향도 무시할 수 없다. Apple의 이 접근 방식은 메모리 안전성이 디버깅 도구가 아닌 핵심 보안 기능임을 명확히 했다. 다른 플랫폼과 운영체제 설계에도 영향을 줄 것으로 예상된다.
마지막으로 기술적 투명성의 가치다. Apple이 일반적으로 비공개적인 회사임에도 불구하고, MIE에 대해서는 예외적으로 상세한 기술 문서를 공개했다. 이는 보안 커뮤니티의 검증과 토론을 환영하는 자신감의 표현으로 볼 수 있다.
iOS 보안 역사
iPhone의 보안 역사를 돌아보면 체계적인 강화 과정을 볼 수 있다. 2015년 iOS 9에서 도입한 Kernel Patch Protection은 비동기식 커널 무결성 검사를 제공했다. 2016년 A10 칩에서는 KTRR로 하드웨어 기반 커널 메모리 보호를 시작했다. 2018년 A12 Bionic의 PAC는 업계 최초의 포인터 인증이었다. 2021년 iOS 15의 kalloc_type은 타입 기반 커널 할당자를 도입했고, 2023년 iOS 17의 xzone malloc은 사용자 공간으로 확장했다. 그리고 2025년 iPhone 17의 MIE는 이 모든 것의 집대성이다.
각 단계는 이전 단계의 약점을 보완하고 공격자가 발견한 우회 기법을 차단하는 방향으로 발전해왔다. MIE는 이런 10년간의 노력이 하나로 모인 결과물이다. 메모리 안전성이 더 이상 선택적 기능이 아니라, 모든 사용자에게 기본적으로 제공되는 핵심 보안 기능이 되어야 함을 보여준다. 이는 향후 운영체제와 하드웨어 설계의 방향을 제시하는 중요한 이정표다.
마치며
이제 이 기술이 맥북에도 적용이 되면 좋겠다.
참고 자료
- Apple Security Engineering and Architecture (SEAR), “Memory Integrity Enforcement: A complete vision for memory safety in Apple devices”, September 9, 2025
- Apple 공식 보안 블로그: https://security.apple.com/blog/memory-integrity-enforcement/
- Apple, “Towards the next generation of XNU memory safety: kalloc_type”
- IEEE S&P 2024: “Sticky Tags: Efficient and Deterministic Spatial Memory Error Mitigation using Persistent Memory Tags”
- IEEE S&P 2025: “TikTag: Breaking ARM’s Memory Tagging Extension with Speculative Execution”
- Google Project Zero: “First handset with MTE on the market”, November 2023
댓글남기기