테크레시피

아이메시지 취약성 분석해보니

지난 6월 판명되어 수정된 애플 기기 제로클릭 공격을 가능하게 하는 취약성인 트라이앵귤레이션(Triangulation)에 대해 해당 취약성을 발견한 보안 기업인 카스퍼시키랩이 분석 결과를 발표했다.

트라이앵귤레이션은 아이메시지를 보내는 것만으로 마이크와 카메라를 포함한 기기 내 기밀 데이터에 액세스 가능하게 되는 취약성으로 카스퍼스키랩에 따르면 적어도 2019년부터 4년간에 걸쳐 악용되고 있는 걸 확인했다고 한다. 이 취약점은 아이폰 뿐 아니라 맥, 아이팟, 아이패드, 애플TV, 애플워치에 대해서도 공격 가능했다. 감염을 탐지하는 건 쉽지 않다.

카스퍼스키가 발표한 트라이앵귤레이션 분석 결과 공격은 먼저 공격자가 아이메시지로 악의적 첨부 파일을 보낸다. 응용 프로그램은 사용자에게 아무 것도 알리지 않고 이 파일을 처리한다. 다음으로 첨부 파일이 폰트 명령(ADJUST TrueType)에 있는 리모트 코드 실행 취약성인 CVE-2023-41990을 악용한다. 이어 자바스크립트로 기술된 권한 승격. 익스플로잇이 실행되는 ROP/JOP와 NSExpression/NSPredicate 쿼리로 기술된 복수 스테이지를 사용해 자바스크립트 코어 라이브러리에 패치를 실시한다. 이 자바스크립트 코드는 난독화되어 있고 코드량은 1만 1,000행으로 자바스크립트 코어, 커널 메모리 해석과 조작을 실시한다고 한다.

다음으로 네이티브 API 함수를 실행하는 기능 취득. 자바스크립트 디버그 기능(DollarVM($vm))을 이용해 자바스크립트 코어 메모리를 조작해 네이티브 API 함수를 실행하는 기능을 취득한다. 신구 양쪽 모두 아이폰을 지원하고 있어 PAC를 우회하는 구조도 갖추고 있다고 한다.

이어 사용자 수준에서 전체 기기 물리적 메모리에 대한 읽기와 쓰기 액세스 획득. XNU 커널 메모리 맵핑 시스템 호출과 정수 오버플로 취약점 읽기와 쓰기를 가져온다. 다음으로 페이지 보호 레이어를 바이패스. 메모리 맵핑 I/O 레지스터를 이용해 페이지 보호 레이어를 바이패스한다 이 취약점은 CVE-2023-38606으로 수정됐다.

이어 흔적 지우기와 검증. 이 단계에서 장치에 대한 스파이웨어 실행 등 모든 조작이 가능해졌지만 트라이앵귤레이션 공격자는 한 번 침입 흔적을 지우고 사파리를 숨기기 모드로 기동하고 피해자를 검증하기 위한 웹페이지에 액세스하도록 설정한다.

다음으로 멀웨어 설치 유효성. 검사를 합격하면 CVE-2023-32435를 사용해 셸 코드가 실행된다. 이 셸 코드는 CVE-2023-32434, CVE-2023-38606이라는 다른 커널 익스플로잇을 실행하며 공격자는 루트 권한을 얻는 동시에 스파이웨어를 설치한다.

공격자는 페이지 보호 레이어를 우회하기 위해 사용한 메모리 맵핑 I/O 주소 중 기기 트리에 존재하지 않는 게 있었다고 한다. 이 주소를 이용하면 하드웨어 기반 메모리 보호 시스템을 우회해 모든 물리적 주소에 임의 데이터를 쓸 수 있다. 이 주소는 펌웨어나 칩 하드웨어 레지스터에 사용되지 않았으며 카스퍼스키 연구팀은 디버깅과 테스트 목적으로 사용하기 위해 내장됐거나 실수로 내장된 기능으로 추측하고 있다. 커스퍼스키 측은 소스 코드나 커널 이미지, 펌웨어 등 모든 장소를 조사했지만 메모리맵 I/O 주소에 관한 기술은 존재하지 않고 트라이앵귤레이션 공격자가 어떻게 이 주소 사용 방법을 알았는지는 수수께끼라고 한다.

또 트라이앵귤레이션에 대해 러시아 연방보안청 FSB는 미국 정보 기관이 애플과 협력해 러시아 외교관으로부터 정보를 얻기 위해 악성코드를 심은 것이라고 주장했지만 애플은 이 의혹을 부인했다. 관련 내용은 이곳에서 확인할 수 있다.

정용환 기자

대기업을 다니다 기술에 눈을 떠 글쟁이로 전향한 빵덕후. 새로운 기술과 스타트업을 만나는 즐거움을 독자들과 함께 나누고 싶습니다.

뉴스레터 구독