[보안뉴스] “해결 방법 없다” 구글이 본 제로클릭 공격의 위험
“해결 방법 없다” 구글이 본 제로클릭 공격의 위험
7일 전
구글의 연구결과에서 가장 놀라운 점은 페가수스가 보안 알람의 불문율, 즉 ‘효과적인 방어책이 없는 공격은 그 세부사항을 보고하는 것이 차선책’이라는 규칙을 깨뜨렸다는 점이다. 구글은 업계가 제로클릭 공격에 대한 방어책을 신속하게 마련할 수 있도록 세부 논의가 필요하다고 강조했다.
구글은 “NSO가 개발한 제로클릭 공격 기술은 어떠한 상호작용도 필요 없다. 따라서 평소에 피싱 링크를 클릭하지 않는, 기술에 능숙한 사람도 공격 대상이 되었다는 점을 모른다. 공격자는 피싱 메시지를 전송하지 않고 휴대폰 백그라운드에서 조용히 공격을 진행한다. 기기를 사용하지 않는 것 외에는 예방 방법이 없다. 방어할 수 없는 무기인 셈이다”라고 설명했다.
공격 수단은 ‘가짜 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)에서 진행된다.
이미지 압축 기술의 취약점
정확한 캔버스 좌표에 4바이트 비트맵을 렌더링함으로써 공격자는 w, h, 라인 위치에 신중하게 새로운 값을 선택해 페이지 JBIG2Bitmap의 모든 필드에 덮어쓸 수 있으며, 페이지 백업 버퍼에서 임의의 오프셋에 작성할 수 있다. 이때 페이지 백업 버퍼의 오프셋을 알고 있으면 절대 메모리 주소를 임의로 작성하는 것도 가능하다.
오프셋을 계산하는 방법은 무엇일까? 구글에 따르면, 페가수스 공격은 자바스크립트에서 메모리에 액세스할 수 있는 언바운드 어레이버퍼(ArrayBuffer) 개체로 끝나는 표준 스크립트 언어를 악용하는 방법과 매우 유사한 방식으로 진행됐다. 하지만 페가수스 공격자는 임의의 자바스크립트를 가동할 수 있었고, 이를 임의의 연산과 오프셋 계산에 사용한 것으로 추측된다.
또한 단일 경로인 이미지 파서의 경우, 랜딩 페이지의 JBIG2Bitmap 백업 버퍼에 있는 임의의 오프셋 메모리 영역 간에 AND, OR, XOR 및 XNOR 논리 연산자 적용이 가능해진다. 캔버스가 언바운드되었기 때문에 임의의 오프셋에서 메모리에 대한 논리 연산을 수행할 수 있는 것이다.
이런 방법은 공격자 침입과 미승인 코드의 무단 실행을 허용하는 코딩 문제다. 공격자는 이런 허점을 피할 수 있을 뿐 아니라 피해 기기의 소프트웨어에서 구체적인 무언가를 찾고 차단할 수도 있으므로 심각성이 매우 크다.
범위를 벗어난 공격
제로클릭 공격이 국가 수준의 위협에 가까워지고 있다는 구글의 주장은 합당해 보인다. 구글이 공개한 페가수스 스파이웨어의 세부사항은 CIO와 CISO의 대처에도 도움이 될 것이다. editor@itworld.co.kr