iOS / 개발자 / 보안

“해결 방법 없다” 구글이 본 제로클릭 공격의 위험

Evan Schuman | Computerworld 2022.01.12
모바일 보안과 관련해 사용자는 항상 의심스러운 링크나 이메일, 첨부파일을 피하며 각별한 주의를 기울여야 한다. 하지만 제로클릭(zero-click) 사이버 공격이 늘어나면서 이런 노력이 무력해지고 있다.
 
ⓒ Getty Images Bank

지난 12월 구글은 대표적인 제로클릭 사이버 공격인 페가수스(Pegasus)의 작동 방법을 연구한 결과를 발표했다. 페가수스 스파이웨어는 언론인과 세계 지도자를 해킹하기 위해 이스라엘 보안업체 NSO 그룹이 사용한 것으로 알려졌다. 구글 프로젝트 제로(Project Zero) 팀은 “지금까지 확인한 사이버 공격 가운데 기술적으로 가장 정교했으며, NSO의 기술이 일부 국가에서만 접근할 수 있다고 여겨진 기술에 필적한다는 것을 보여준다”라고 말했다.

구글의 연구결과에서 가장 놀라운 점은 페가수스가 보안 알람의 불문율, 즉 ‘효과적인 방어책이 없는 공격은 그 세부사항을 보고하는 것이 차선책’이라는 규칙을 깨뜨렸다는 점이다. 구글은 업계가 제로클릭 공격에 대한 방어책을 신속하게 마련할 수 있도록 세부 논의가 필요하다고 강조했다.

구글은 “NSO가 개발한 제로클릭 공격 기술은 어떠한 상호작용도 필요 없다. 따라서 평소에 피싱 링크를 클릭하지 않는, 기술에 능숙한 사람도 공격 대상이 되었다는 점을 모른다. 공격자는 피싱 메시지를 전송하지 않고 휴대폰 백그라운드에서 조용히 공격을 진행한다. 기기를 사용하지 않는 것 외에는 예방 방법이 없다. 방어할 수 없는 무기인 셈이다”라고 설명했다.


공격 수단은 ‘가짜 GIF’

페가수스 공격의 배후로 알려진 NSO는 가짜 GIF로 코어그래픽스 PDF(CoreGraphics PDF) 파서의 취약점을 겨냥했다. 가짜 GIF는 확장자가 .gif이지만 실제로는 GIF 이미지 파일이 아니다. 파일명과 확장자는 사용자를 안심시키는 수단에 불과했다.

ImageIO 라이브러리는 파일 확장자에 상관없이 소스 파일의 올바른 형식을 추측하고 구문을 분석하는 데 사용된다. 이를 가짜 GIF에 적용하면 20개 이상의 이미지 코덱이 아이메시지 제로클릭 공격 표면의 일부가 되어 수십만 줄의 코드를 원격으로 노출시킨다.

구글이 언급한 것처럼, 이런 공격은 방어하기 어렵다. 가장 간단한 접근법은 GIF 확장자를 모두 차단하는 것이지만, 우선 가짜 GIF는 실제 GIF가 아니기도 하고, 공격자가 차단되지 않은 다른 확장자로 전환하면 그만이다. 따라서 모든 GIF 이미지를 차단하는 방법은 비효율적이다.

구글에 따르면, 애플은 2021년 9월 20일 출시한 iOS 15.0부터 IMTranscoderAgent에서 GIF 코드 경로를 완전히 제거했으며, 2021년 10월 26일 출시한 iOS 14.8.1부터는 IMTranscoderAgent에서 접근할 수 있는 사용 가능한 ImageIO 포맷을 제한했다. GIF 디코딩은 블라스트도어(BlastDoor)에서 진행된다.


이미지 압축 기술의 취약점

이미지 압축 표준인 JBIG2는 몇 가지 반복적인 문자를 대체해 파일 사이즈를 줄이는 방법으로, 페가수스 스파이웨어는 이 과정에서 발생하는 취약점을 사용했다. 구글은 “현재 랜딩 페이지의 JBIG2Bitmap은 알 수 없지만 매우 큰 h 값을 받게 된다. h 값은 경계 검사에 사용되며 페이지 백업 버퍼의 할당된 크기를 반영해야 하므로 캔버스를 ‘언바운드’하는 효과가 있다. 즉, 후속 JBIG2 세그먼트 명령이 페이지 백업 버퍼의 원래 경계를 벗어나 메모리를 읽고 쓸 수 있게 되는 것”이라고 설명했다.

정확한 캔버스 좌표에 4바이트 비트맵을 렌더링함으로써 공격자는 w, h, 라인 위치에 신중하게 새로운 값을 선택해 페이지 JBIG2Bitmap의 모든 필드에 덮어쓸 수 있으며, 페이지 백업 버퍼에서 임의의 오프셋에 작성할 수 있다. 이때 페이지 백업 버퍼의 오프셋을 알고 있으면 절대 메모리 주소를 임의로 작성하는 것도 가능하다.

오프셋을 계산하는 방법은 무엇일까? 구글에 따르면, 페가수스 공격은 자바스크립트에서 메모리에 액세스할 수 있는 언바운드 어레이버퍼(ArrayBuffer) 개체로 끝나는 표준 스크립트 언어를 악용하는 방법과 매우 유사한 방식으로 진행됐다. 하지만 페가수스 공격자는 임의의 자바스크립트를 가동할 수 있었고, 이를 임의의 연산과 오프셋 계산에 사용한 것으로 추측된다.

또한 단일 경로인 이미지 파서의 경우, 랜딩 페이지의 JBIG2Bitmap 백업 버퍼에 있는 임의의 오프셋 메모리 영역 간에 AND, OR, XOR 및 XNOR 논리 연산자 적용이 가능해진다. 캔버스가 언바운드되었기 때문에 임의의 오프셋에서 메모리에 대한 논리 연산을 수행할 수 있는 것이다.

이런 방법은 공격자 침입과 미승인 코드의 무단 실행을 허용하는 코딩 문제다. 공격자는 이런 허점을 피할 수 있을 뿐 아니라 피해 기기의 소프트웨어에서 구체적인 무언가를 찾고 차단할 수도 있으므로 심각성이 매우 크다.


범위를 벗어난 공격

구글이 지적한 부분은 또 있다. 구글은 “JBIG2는 스크립트 기능이 없지만, 취약점과 결합하면 임의 메모리에서 작동하는 임의의 논리 게이트 회로를 에뮬레이트할 수 있다. 이 기능을 사용하면 독자적인 컴퓨터 아키텍처를 구축하고 스크립트 할 수 있으며, 페가수스는 바로 이런 점을 악용했다. 논리 비트 연산을 정의하는 7만 개 이상의 세그먼트 명령어를 사용해 공격자는 레지스터와 64비트 가산 및 비교 기능을 갖춘 소형 연산 아키텍처를 정의하여 메모리 검색과 산술 연산에 사용한 것이다. 자바스크립트만큼 빠르지는 않지만 계산상으로는 근본적으로 동일하다. 샌드박스 탈출을 위한 부트스트래핑 연산은 이 논리 회로에서 실행하도록 작성되었으며, JBIG2 스트림을 통한 단일 압축 해제로 생성된 이상하고 에뮬레이트된 환경이 모든 것의 바탕이 됐다”라고 덧붙였다.

제로클릭 공격이 국가 수준의 위협에 가까워지고 있다는 구글의 주장은 합당해 보인다. 구글이 공개한 페가수스 스파이웨어의 세부사항은 CIO와 CISO의 대처에도 도움이 될 것이다. editor@itworld.co.kr

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.