픽셀 8 및 픽셀 8 Pro에서 MTE를 활성화하는 방법

각 메모리의 할당 해제 시 추가 메타데이터를 태그해, 취약성의 유즈 애프터 프리나 버퍼 오버플로를 검출할 수 있도록 하는 "Memory Tagging 확장기능(MTE)"이 Armv9에 탑재돼 있는데, 이 MTE를 최초로 활성화할 수 있는 스마트폰 "Pixel 8/8 Pro"를 활성화하는 방법에 대해, Google의 보안 팀이 해설.

 


픽셀 8 또는 픽셀 8 Pro의 개발자를 위한 옵션에는 "MTE"를 활성화하기 위한 옵션이 준비되어 있는데, 이것은 앱 개발자가 MTE를 사용해 앱을 테스트할 것을 가정해 마련된 옵션. MTE의 동작 모드에는 "동기 모드(SYNC)"와 "비동기 모드(ASYNC)", "비대칭 모드(ASYMM)"의 세 가지가 있고, 앱이나 네이티브 사용자 모드의 이진을 기본 동기 모드로 설정할 수 있다.

동기 모드에서 MTE를 활성화하려면, 부트 로더가 태그를 저장하기 위해 장치의 메모리 일부를 확보해야 하므로, 먼저 부트 로더를 설정하고 MTE를 활성화한 다음, 응용 프로그램에서 MTE를 사용하도록 시스템을 설정해야 한다.

 


순서로서는, 개발자 옵션으로부터 USB 디버깅을 유효하게 하고, Android 디버깅 툴이 인스톨 되어 있는 컴퓨터에 스마트폰을 접속. 셸을 부팅한 후 아래와 같은 3가지 명령을 실행한 후 재시작한다.

setprop arm64.memtag.bootctl memtag
setprop persist.arm64.memtag.default sync
setprop persist.arm64.memtag.app_default sync

 


상기 명령어로, 부트 시 MTE를 활성화하도록 부트로더를 설정하고, 디바이스 상에서 동작하는 네이티브 실행 파일의 기본 MTE 모드를 설정하여 앱의 기본 MTE 모드를 설정할 수 있다.

현시점에서는 실험적인 MTE 지원만 제공되고, root화되지 않은 Android 디바이스에서는 /data/local/tmp 내의 파일에서 명령줄 플래그를 가져오도록 크롬을 설정해야 한다는 등의 주의사항이 있다.

 


부트로더에서 MTE가 활성화되어 있는 것을 확인하기만 하면, 다이나믹 Tools 팀이 작성한 앱이 구글 플레이에 있으므로, 그것을 사용하는 것도 가능. 이 시점에서 개발자 설정으로 돌아가서, USB 디버깅을 비활성화해도 되지만, 개발자 모드의 토글은 켜두어야 한다. 이것을 비활성화하면 다음 재부팅 시 MTE가 완전히 꺼진다.

이 방법으로 MTE를 활성화하면, 적어도 몇 개의 애플리케이션이 충돌하거나 MTE에서 제대로 실행되지 못하는 문제가 발생할 가능성이 높다고 하는데, 보안팀은 한 달간 활성 상태로 유지했음에도 아무런 문제가 발생하지 않고 있다고... 보안팀에 따르면 동기 모드의 MTE를 활성화한 픽셀 8은 적어도 주관적으로는 이전보다 성능과 배터리 수명이 업그레이드되었다고 한다.