Google은 2016 년 3 월 18 일 (미국 시간) 루트 권한 획득 (루팅) 용 앱이되는 심각한 취약점 ' CVE-2015-1805 '에 대해 " Android Security Advisory '에서 발표했다. 이 취약점은 당시 위험도 평가에서 중간으로 인식 된 것으로, 2014 년 4 월에 Linux 커널에서 복구 된 것이 었습니다. 그러나 그 후, 2015 년 2 월이 취약점의 심각도에 따라 'CVE-2015-1805'로 CVE 식별 번호를 할당 할 수있게되었습니다. 2016 년 2 월에이 취약성을 악용 익스플로잇 코드가 확인되고 아직 공격에 이용 가능하다 밝혀졌다. 이러한 배경에서 가장 높은 위험도로 수정되고 Google은 3 월 16 일,이 취약점에 대한 업데이트를 공개했습니다. 또한, 회사는 문제의 취약점을 이용하는 루팅 애플리케이션 정보도 삭제 대응하고 있습니다.
'CVE-2015-1805'는 커널 버전 3.18 미만의 Android 단말 모두에 영향을 미칩니다. 현재 데스크탑 용 Linux 커널의 최신 버전은 4.5입니다. 반면 Android OS는 최신 Marshmallow 만 커널 3.18 버전을 사용하고 있으며, 이전 버전에서는 모든 3.18 미만의 커널을 사용하고 있습니다. 즉, Android OS를 최신 Marshmallow에 업데이트하지 않은 단말기는 영향을 받게됩니다. Google이 발표 한 3 월 7 일 시점에서 Android의 버전 별 점유율에 따르면 Marshmallow의 점유율은 전체의 2.3 %에 지나지 않습니다. 이 상황은 Android 단말의 OS 및 하드웨어 업데이트는 단말기 업체에 크게 의존하고 업데이트를 쉽게 적용 할 수없는, 출시까지 시간이 걸리는 등의 문제를 감안하면 매우 어려운 상황이라고 할 수있다 것입니다.
당사는 3 월 8 일, Snapdragon 프로세서를 탑재 한 Android에 이용 된 경우뿐만 아니라 루팅이 가능해진다 여러 취약점에 대해보고 했습니다. 루트 권한을 얻을 "TowelRoot ( CVE-2014-3153 )」나 「PingPongRoot ( CVE-2015-3636 ) '같은 루팅을 이용하는 공격이 확인되고있는 가운데도이 새롭게 확인 된 취약점은 사이버 범죄자들이 노리는 쉬운 큰 취약점을 나타내고 있습니다. 이미이 취약점을 공격하는 다양한 익스플로잇 코드가 확인되고있어 이러한 취약점은 루팅 앱 개발자 익스플로잇 코드를 만들 수있는 기회를주게됩니다.
■ 취약점 CVE-2015-1805에 대한 자세한
이 취약점은 경쟁 상태에서 I / O 벡터 "iovec"배열 오버런을 일으킬 위험이 있습니다. 그러나 특별히 구성된 iovec 구조가 있으면, 커널에 임의 쓰기가 가능합니다.
그림 1 : 루팅 어플 다운로드 수가 1,500 만 달성
악명 높은 루팅 응용 프로그램 작성 팀은 Android에 취약점이 존재하는 것으로 나타 루트 화 도구 "PingPongRoot"를 사용할 수 없게 된 후, 그 대신 루팅 도구로 구현했습니다. 당사는 현재 존재하는 익스플로잇 코드를 모니터링하고, 또 다른 이번 취약점을 이용하는 공격이 발생할 것으로 예상하고 있습니다.
그림 2 : 함수 "pipe_iov_copy_from_user"재실행을 일으키는 경쟁 조건
그림 3 : 쓰기 대상 커널 주소를 iovec 구조에 마킹하는
취약점의 유래는 Linux 커널 파일 "fs / pipe.c"의 pipe 함수 "pipe_iov_copy_to_user"에 따를 수 있습니다. "pipe_iov_copy_to_user '에 실패했을 경우, 함수는 같은 소스 버퍼를 이용하여 복사에 실패한 위치 후 복사를 다시 실행합니다. 따라서 먼저 복사 된 데이터의 길이의 대상 버퍼 iovec 배열 오버런이 생성됩니다.
그림 4 : iovec 배열 오버런
상기 오버런 상태는 정의되지 않은 메모리 액세스가 원인으로, "Denial of Service (DoS 서비스 거부) 공격 '이 발생합니다. 그러나 여기에서이 취약점을 이용하는 익스플로잇 코드는 시스템 오류를 방지하는 방법을 사용합니다. 예를 들어, iovec 배열의 길이를 기본이 4,096 바이트 PIPE_BUF 인 소스 버퍼보다 길게 설정하면 다시 실행시 오버런을 방지 할 수있는 것입니다.
그림 5 : 다시 실행하여 충돌을 방지하는 방법
익스플로잇 코드는 남아있는 데이터를 복사하기 위해 3 번째 반복된다 "pipe_iov_copy_to_user"를 실행합니다. 그리고 이번에는 대상 커널 주소로 설정 한 iovec과 iov_base에 마킹 한 iovec 버퍼의 마지막 부분에 액세스 오버런을 일으 킵니다. 다시 실행할 때와 달리이 단계에서 커널 메모리 영역에 임의 쓰기 위해 보호용 "copy_to_user"대신 "_ copy_to_user_inatomoc"를 이용합니다. 이것이 다시 실행시에는 오버런을 일으키지 않은 이유입니다.
그림 6 : 취약점을 코드
참고 기사 :
- ' Critical'CVE-2015-1805 'Vulnerability Allows Permanent Rooting of Most Android Phones "
by Veo Zhang (Mobile Threats Analyst)
'malware ' 카테고리의 다른 글
네이버 계정 탈취 주의! (0) | 2016.08.18 |
---|---|
새로운 암호화 된 랜섬웨어 'R980'을 확인 일회용 이메일 주소로 자신의 추적을 피하기 (0) | 2016.08.15 |
일본을 노리는 악성 광고 사례에서 DV 인증서 악용 확인 (0) | 2016.01.26 |
온라인에 게시 된 랜섬웨어의 코드를 악용. 정보 공유는 적절한 범위와 방법의 선택이 중요 (0) | 2016.01.26 |
스마트 폰 암호를 사용할 수 없게. 인터넷 뱅킹을 노리는 '에멘탈 작전'을 다시 확인 (0) | 2016.01.26 |