먼저, 프로세스는 PDF 파일 압축 폰트 포맷 취약점(CVE - 2010-1797)을 이용합니다. 놀랍게도, 그것은 간단한 스택 기반의 버퍼 오버플로입니다. 이 취약점을 통해 지나치게 긴 CFF charString 항목으로 공격자가 $PC를 제어할 수 있다. 많은 사람들은 ROP의 다소 미숙한 기술로 복잡한 작업을 사용할 것으로 생각한다. 하지만 jailbreakme shellcode는 총 150회 이상 API를 호출하여 ROP를 실행한다. 이것은 메모리 손상과 같은 공격에 대해 방어하지 않은 실행 메모리를 의미한다. 이처럼 아이폰의 착취에 대한 현재 ROP 기법은 매우 성숙하고 안정적이다.
Apple IOSurface 구성 요소의 공개되지 않은 커널 취약점으로 ROP payload를 남용한다. 그 취약점은 정상적인 프로세스가 커널 메모리에 쓰기 권한을 접근할 수 있는 것 같다. 그것은 보안 검사를 우회하여 커널 공간의 데이터를 수정 후 "setuid (0)"를 호출하여 root 권한을 얻는다. 그럼, 그 이상을 할 수 있다. root 사용자한을 가진 Safari 프로세스로 무엇이든 원하는대로 할 수 있다.
이 다음 단계로, 공유 라이브러리에 로드한 "installui.dylib"를 내리고, 라이브러리에서 "iui_go" 함수를 실행한다. 이것은 사용자의 화면에 jailbreaking로 이동하는 요청 메세지가 표시된다. 그럼 jailbreakme 사이트에서 "wad.bin" 파일을 다운로드하고 "install.dylib"에 필요한 파일을 추출한다. 그리고 "do_install" 함수를 실행하여 jailbreaking 과정을 진행한다. Safari 프로세스가 커널 버그를 이용한 인수에 root 액세스 권한이 있기 때문에 이러한 모든 작업이 가능하다.
jailbreaking 단계는 일부 시스템 디렉토리를 이동 및 "/etc/fstab" 와 같은 필수 시스템 파일을 수정 같은 것을 포함한다. 또한 "/dev/kmem" 장치에서 커널 패치 플래스 또는 코드를 직접 엑세스한다. 그리고 마지막으로 "Cydia" 설치 관리자 패키지를 설치하고 "uicache" 명령을 사용하여 SpringBoard를 다시 시작한다.
여기 모든 내용은 그것이 jailbreakme 사이트가 제공하는 PDF 문서를 통해 원래 하려고 했던 더 많은 작업을 보다 쉽게 할 수 있도록 한다. 아이폰에 이런 유형의 공격에 대한 어떠한 실질적인 방어 메커니즘이 없기문에 충격적으로 곧 현실로 돌아올 것이다. 지금부터 아이폰 브라우저에 의심스러운 링크는 클릭하지 않아야 한다. 그리고 아이폰 메일이 수정될 때까지 PDF 첨부파일은 체크하지 않는 것이 좋다. 곧 패치가 나올이고 모두 설치하는 것이 좋다.
출처 : community.websense.com
728x90
댓글