기자, 변호사, 활동가, 정치인, 기업 임원, 그리고 그 밖의 고위험군 인물들에게 애플의 최신 제품 발표에서 가장 중요한 새 기능은 전혀 크게 홍보되지 않은 기능이었습니다. 이 기능은 9월 9일 애플의 보안 리서치 블로그의 게시글에서 발표하였습니다.
https://security.apple.com/blog/memory-integrity-enforcement/
메모리 무결성 강화 (MIE)는 A19 시리즈(iPhone 17, iPhone Air)에 탑재된 보안 강화 기능으로, iOS의 기존 메모리 안전 방어 기능과 ARM의 메모리 태깅 확장 (MTE)을 결합한 것입니다.
MTE란 무엇이죠?
MTE는 원래 앱 개발자를 위한 디버깅 도구로써 ARM이 만든 SoC 하드웨어 기능입니다. 앱은 휴대폰이나 컴퓨터의 메모리, 즉 RAM에 데이터를 저장해야 하며, 이를 위해 메모리 할당이라는 과정으로 RAM의 공간을 예약합니다. 하지만 이러한 할당이 제대로 검증되지 않아 다양한 방법으로 자신의 영역에서 벗어난 영역을 실수 또는 고의로 접근할수있습니다.
MTE는 기본적으로 이러한 일이 발생하였을때 개발자와 OS에게 전달하는 역할이라고 말할수있습니다. MTE를 사용하면 모든 메모리 할당에 비밀 태그 붙습니다. 이후 하드웨어는 어떤 앱이 그 메모리 할당에 접근할때, 그 요청이 비밀 태그를 포함하여야만 접근을 허용합니다.
만일 비밀태그를 포함하지 않고 요청할 경우(예시:처음에 메모리를 할당한 앱이 아닌 다른앱이 요청을 할 경우) 이 요청은 강제종료되며 이 이벤트가 기록됩니다.
이 기능의 목표는 개발자가 메모리 손상 버그(memory corruption bug)가 발생하는 즉시 식별할수있도록 하는것입니다. MTE가 없었다면 메모리의 손상은 조용하게 백그라운드에서 발생할수 있습니다.
마이크로소프트와 구글은 이전에 자사 제품의 모든 보안 취약점 중 70%가 메모리 안전성 문제에서 비롯된다고 보고한 바 있습니다. 수년간 우리가 보아 온 하트블리드 같은 2014년의 고위험 취약점이나 2020년에 공개된 sudo 익스플로잇 역시 메모리 안전성 부족 때문에 발생했습니다.
이 때문에 보안 연구원들은 MTE가 단순한 디버깅 도구가 아니라, 이러한 보안 문제를 감시하고 차단하는 상시 작동 도구로 사용될 수 있다는 점을 빠르게 알아차렸습니다. 구글은 pixel 8부터 어느정도 MTE를 활용해왔습니다. 이에 대해서는 뒤에서 더 다루겠습니다.
애플은 A19 SoC에 내장된 최신 MTE(버전4), “Enhanced MTE” 또는 EMTE라고 부릅니다. 다만 이 글에서는 앞으로 간단히 MTE라고 부르겠습니다.
애플의 MTE/MIE와 안드로이드
애플은 MIE를 사용해 운영체제의 “주요 공격 표면, 즉 커널 과 70개가 넘는 사용자 영역 프로세스”를 보호한다고 말합니다. 또한 앱 개발자를 위한 선택 기능으로 MIE를 제공했습니다. 즉, 최고 수준의 보안앱(signal, 웹 브라우저)등은 조만간 MIE를 도입할 가능성이 있습니다.
이는 안드로이드에서 MTE가 구성되는 방식보다 한 단계 더 나아간 것입니다. 안드로이드 역시 앱 개발자 에게 MTE를 선택적 기능으로 제공하지만, 안드로이드는 시스템 전반적으로 덜 사용합니다. 다만 구글의 고급 보호 프로그램에 등록된 사용자는 지원하는 앱에서 자동으로 MTE를 활성화 합니다. 또한 MTE를 지원한느 모든 하드웨어에서 USB 디버깅 도구를 통해 더 엄격한 MTE를 활성화할수 있습니다.
안드로이드 기반의 GrapheneOS는 이 영역에서 일반 안드로이드나 iOS보다 훨씬 더 광범위하게 MTE를 사용합니다. GrapheneOS는 시스템 커널, 기본 시스템 구성 요소, 그리고 자체 Vanadium 웹 브라우저에서 MTE를 사용합니다. 또한 설정 토글을 이용해 쉽게 모든 앱에서 MTE를 활성화할 수 있습니다.
왜 모든 곳에서 MTE가 활성화되지 않는건가요?
MTE는 동기식과 비등기식이라는 두 가지 모드 가 있습니다, 동기모드는 성능보다는 보안에 최적화되어 있으며 AOSP에서 활성화시 "보안 완화 역할"로 기능할수있다고 주장하는 유일한 모드 입니다. 비동기모드는 성능이 더 높은 선택지로 메모리 안전성 버그를 감지할수는 있지만 애플리케이션을 즉시 종료하지 않고 부적절한 메모리 접근에 관한 일부 정보도 기록하지 않습니다.
GrapheneOS는 커널에서 동기 모드로 MTE를 활성화합니다. 사용자 영역 앱의 경우에는 메모리 쓰기에는 동기식 모드를 사용하고, 읽기에는 비동기식 모드를 사용합니다. AOSP는 이를 비대칭 모드 라고 부릅니다. GrapheneOS는 이 방식이 좋은 보안성과 성능의 균형을 제공한다고 주장하지만 , 순수하게 동기식 모드로만 작동하는 것만큼 안정적이지는 않습니다.
iOS는 MTE를 사용하는 모든 영역에서 동기식 모드만 사용합니다. 애플에 따르면 다음과 같습니다.
비동기 모드에서는 메모리 손상이 발생해도 예외가 즉시 발생하지 않아 공격자에게 공격 기회를 제공합니다. 따라서 이러한 메커니즘은 구현하지 않을 것입니다. 메모리 안전 보호는 엄격하게 동기식으로 작동해야 하며, 기본적으로 활성화되어 지속적으로 작동해야 한다고 생각합니다.
하지만 애플이 현재 안드로이드 휴대폰에서 볼 수 있는 구현보다 동기식 MTE를 더 효율적으로 만들었음에도, 동기식 MTE를 활성화할 때의 성능 영향이 애플이 안드로이드 진영에서 보이는 더 폭넓은 접근 방식과 달리 MTE를 선택적으로만 활성화한 이유로 보입니다.
또한 MTE는 메모리 안전성 버그를 사용자에게 훨씬 더 눈에 띄게 만듭니다. 일반적으로 메모리 손상 버그는 조용히 발생하고, 개발자들이 애초에 알아차리기도 어렵습니다. 그래서 기기의 많은 앱이 사용자가 알아채지 못하는 사이, 그리고 시스템에 별다른 영향을 주지 않는 상태에서 정기적으로 메모리 안전성이 없는 호출을 하고 있을 수 있습니다.
MTE는 원래 없던 새 버그를 앱에 만들어내지는 않습니다. 그러나 이미 존재하는 버그가 MTE 활성화 상태에서 사용자에게 더 큰 문제를 일으킬 가능성은 높아집니다. 이 때문에 현재로서는 많은 사용자에게 MTE를 광범위하게 활성화하기엔 어렵습니다. 하지만 개발자들이 MTE를 직접 이용해 디버깅할 수 있게 되면서 앱을 개선하게 되면, 시간이 지나며 이 문제는 줄어들 것으로 기대할 수 있습니다.
이 문제는 iOS에서 더욱 심각한데, iOS의 많은 앱들이 메모리 안전성이 떨어지는 Objective C언어로 개발되어 왔기 때문입니다. 반면 안드로이드는 역사적으로 메모리 안전성이 있는 Java를 사용해 왔습니다. 다만 최근 애플 생태계의 대부분 앱이 메모리 안전성을 갖춘 프로그래밍 언어인 Swift로 작성되고 있으므로, 이 문제 역시 시간이 지나며 줄어들 것입니다.
메모리 안전성이 용병 스파이웨어에 미치는 영향
모바일 기기에서 이 모든 것은 특히 용병 스파이웨어의 표적공격 대상이 되는 사람들에게 중요합니다.
대부분의 모바일 기기는 보안이 매우 강화되어 있기 때문에, 공격자가 기기를 완전히 장악하게 해 주는 단일 익스플로잇은 매우 드뭅니다 오히려 공격자들은 여러 개의 작은 익스플로잇을 연결하여 공격하는 경우가 많습니다. 공격자가 취약한 애플리케이션에서 작은 발판이라도 마련할 수 있다면, 그 약간 더 높은 권한을 이용해 또 다른 애플리케이션을 공격하고, 다시 또 다른 대상을 공격하는 식으로 이어갑니다. 그렇게 해서 결국 운영체제의 최상위 수준까지 도달합니다.
메모리 안전성 문제의 높은 발생률(무려 70%!)은 이러한 공격 체인에서 "작은" 익스플로잇 중 상당수가 메모리 손상 버그라는 것을 의미합니다. 이러한 버그는 MTE로 잠재적으로 차단될 수 있습니다.
애플은 연구에서 자사 보안 연구자들이 과거 관찰한 실제 익스플로잇 체인 6개를 공유했으며, 이 새로운 보안 시스템이 그 체인들에 어떻게 작용했는지도 설명했습니다.
물론 일부 익스플로잇은 이러한 메모리 안전성 기능으로 막히지 않았습니다. MTE는 만능 해결책이 아니며, 메모리 안전성과 관련 없는 익스플로잇을 막을 수는 없고, 모든 유형의 메모리 안전성 버그를 막을 수도 없습니다. 다만 애플은 MTE가 방어하지 못하는 종류의 버그는 매우 드물고, 그런 버그가 익스플로잇 체인에서 성공적으로 사용되는 경우는 더욱 드물다고 언급합니다.
그러나 전반적으로 볼 때, 이러한 모든 익스플로잇 체인은 어느 시점에서든 메모리 안전성 취약점을 의존했으며, 이는 MTE(또는 MTE가 지원되지 않는 구형 기기에서도 사용할 수 있는 소프트웨어 내의 기존 보안 메모리 할당기)에 의해 차단되었습니다. 현재 유포 중이거나 과거에 발견된 익스플로잇 체인의 대부분 역시 어느 시점에서든 이와 유사한 메모리 안전성 결함을 악용했을 가능성이 매우 높습니다.
중요한 점은, 일반적으로 이러한 익스플로잇 체인에서는 단 하나의 연결 고리만 실패해도 전체 시스템 익스플로잇이 실패한다는 것입니다. 애플 팀은 이를 다음과 같이 표현합니다.
공격자들은 필연적으로 아직 자신들의 능력이 매우 제한된 단계에서 MIE와 마주해야 하며, 이로 인해 활용 가능한 공격 경로가 거의 남지 않게 됩니다. 그 결과 공격 체인은 취약해지고, 단 하나의 단계만 깨져도 전체 익스플로잇 전략이 무효화되는 경우가 많습니다. 그런 일이 발생하면 체인의 대부분 구성 요소를 재사용할 수 없게 되며, 공격자들은 완전히 새로운 버그를 사용해 익스플로잇 개발을 다시 시작해야 합니다.
그 결과, MTE는 이러한 익스플로잇 체인을 악용하는 악성코드 및 스파이웨어(예: 페가수스 )에 대해 공격 체인이 성공할 확률을 획기적으로 낮춤으로써 막대한 보호 효과를 제공합니다.
MTE/MIE와 차단 모드
개인정보 보호 옹호자들 사이에서 자주 보아 온 의견 중 하나는, 애플 운영체제의 현재 차단 모드 가 수년 전부터 구글 픽셀 및 기타 운영체제에 탑재되어 온 (이전 버전의) MTE와 비슷한 수준의 보호 기능을 제공한다는 것입니다.
차단 모드 역시 이러한 익스플로잇 체인을 막는 데 매우 효과적입니다. 하지만 그 접근 방식은 크게 다릅니다. 궁극적으로 차단 모드는 보안을 위해 필요성이 낮은 앱과 기능을 비활성화하여 공격 표면을 극적으로 줄이는 방식으로 작동합니다.
예를 들어 iMessage의 링크 미리보기 생성기에 메모리 익스플로잇이 있다고 상상해 보시기 바랍니다. 공격자가 링크가 포함된 메시지를 보내 이 취약점을 악용할 수 있다고 하겠습니다. 차단 모드에서 링크 미리보기를 완전히 비활성화하면, 그 익스플로잇은 효과적으로 즉시 차단됩니다.
하지만 이제 MIE를 통해 해당 익스플로잇을 차단할 수 있으며, MIE는 항상 실행되므로 링크 미리보기를 비활성화할 필요도 없습니다.
더 중요한 점은 , 익스플로잇 시도가 MIE에 의해 차단되었다면 그 이벤트를 사용자, 운영체제, 또는 애플이 매우 빠르게 감지할 수 있다는 것입니다. MTE는 설계된 대로 작동해 공격 대상이 된 앱을 강제로 종료하고, 해당 충돌과 세부 정보를 기록합니다. 이는 사용자가 해당 익스플로잇에 대한 보안 위협 알림 을 받을 가능성을 높이며, 그렇지 않았을 때보다 더 빠르게 알림을 받을수있습니다. 반면 잠금 모드 때문에 애초에 링크 미리보기를 사용하지 않아 익스플로잇이 차단된 경우에는, 사후에 이를 발견하기가 더 어려울 수 있습니다.
이런 유형의 위협을 걱정하고 있고, 차단 모드와 MIE 중 하나를 선택해야 한다면, 언제나 MIE를 선택하는 것이 좋습니다.
물론 최고 수준의 보안을 확보하려면 이러한 기능들이 상호 보완적으로 작동( 심층방어 )하여 악용 가능성을 매우 낮춰야 합니다.
애플이 아직 발표하지는 않았지만, 조만간 발표해주길 바라는 기능 중 하나는 잠금 모드에서 시스템 및 앱 전반에 걸쳐 MTE를 훨씬 더 광범위하게 활성화하는 기능입니다. 앞서 언급했듯이 iOS에서는 성능 및 안정성상의 이유로 MTE가 커널 외부에서만 선택적으로 활성화됩니다.
하지만 잠금 모드 사용자는 향상된 보안을 위해 MTE로 인한 앱 충돌과 성능 저하를 감수할 가능성이 훨씬 높습니다. 안드로이드의 고급 보호 프로그램 사용자는 MTE를 (비동기 방식이긴 하지만) 기본적으로 활성화하도록 설정되어 있으므로, 애플도 구글의 방식을 따라 잠금 모드를 개선하기를 바랍니다. GrapheneOS 처럼 앱별로 활성화/비활성화할 수 있는 기능이 있다면 더욱 좋을 것입니다.
누구를 위한 기능인가요?
아이폰 사용자들에게는 정말 흥미로운 발전이라고 생각하며, 개인적으로 애플의 최신 제품 출시 중에서 유일하게 기대되는 부분입니다.
MTE는 현재로서는 iPhone 17 시리즈와 iPhone Air에서만 사용할 수 있는 하드웨어 기능이지만, Apple이 "메모리 무결성 강화"에 포함시킨 다른 개선 사항 중 일부는 소프트웨어로 구현되어 이전 기기에서도 사용할 수 있습니다.
대부분의 일반 사용자는 페가수스 같은 스파이웨어의 표적이 되지 않습니다. 또한 모바일 기기는 전통적인 운영체제와 비교해 매우 높은 수준의 악성코드 보호를 제공합니다. 콘텐츠를 게시하지 않거나 표적이 될 가능성이 낮은 사용자라면, 기기를 업그레이드했을 때 MIE가 보안을 개선해 주기는 하겠지만, 새 휴대폰을 구입해야 할 이유라고 보기는 어렵습니다.
하지만 이러한 개선 사항은 실제로 이러한 위협에 직면한 사람들에게 실질적이고 상당한 가치 를 제공합니다. 또한 여러분이 이러한 위협에 직면할 가능성을 과소평가해서도 안 됩니다.
일부 지역에서는 정치적 활동 관련 자료를 찾는 사람들을 표적으로 삼기 위해 익스플로잇이 인터넷상에 매우 광범위하게 유포되고있습니다. 또한 기자, 변호사, 정치인들은 용병 스파이웨어의 표적이 되는경우가 빈번합니다.
용병형 스파이웨어가 사용하는 익스플로잇 체인은 셀레브라이트(Cellebrite)나 그레이키(GrayKey)와 같은 상용 스파이웨어 및 데이터 해킹 키트에서 사용되는 것과 동일합니다. 이러한 도구들은 종종 하급 법 집행 기관 직원들의 손에 들어가거나 심지어 정부 외부로 유출되기도 하며, 정기적으로 남용되고 있습니다.
이러한 위협이 당신에게 상당한 피해를 줄 수 있다면, 휴대폰을 업그레이드해야 할 좋은 이유가 될 수 있습니다.
이 글은 privacyguides.org에서
CC-BY-SA-4.0
로 배포한 콘텐츠를 번역하였으며 번역된 내용은 게시자의 의견이 아닙니다 이 게시글의 문자는 CC-BY-SA-4.0로 배포됩니다.
출처
