2024-04-25 17:35 (목)
안드로이드 단말 97% 위협하는 심각한 취약점 'CVE-2015-1085' 분석
상태바
안드로이드 단말 97% 위협하는 심각한 취약점 'CVE-2015-1085' 분석
  • 길민권
  • 승인 2016.04.09 16:49
이 기사를 공유합니다

커널 버전 3.18 미만의 모든 안드로이드 단말에 영향 미쳐

2016년 3월 18일, 구글은 심각한 보안 취약점인 ‘CVE-2015-1085’에 대한 안드로이드 보안 권고사항을 발표했다. 루팅 애플리케이션에 활용되는 이 취약점은 2014년 4월 리눅스 커널에서 초기 발견되어 위험도 ‘중’으로 인식되었으나, 2015년 2월 심각도 상승으로 ‘CVE-2015-1805’로 CVE 식별 번호를 할당 받았다. 2016년 2월 해당 취약점을 악용한 익스플로잇 코드가 확인되어, 안드로이드 기기 보안 침해 가능성이 높아짐에 따라, 위험도 ‘최상’으로 수정되었다. 구글은 지난 3월 16일 해당 취약점에 대한 업데이트를 공개하고, 이를 악용해 루팅하는 애플리케이션 정보를 삭제하는 등의 조치를 취하고 있다. (트렌트마이크로 공식 블로그)


'CVE-2015-1805'는 커널 버전 3.18 미만의 모든 안드로이드 단말에 영향을 미친다. 현재 데스크탑 용 리눅스 커널의 최신 버전은 4.5인 반면, Android OS는 최신 마쉬멜로우만 커널 3.18 버전을 사용하고 있으며, 이전 버전에서는 모두 3.18 미만의 커널을 사용하고 있다. 즉, 안드로이드OS를 최신 마쉬멜로우로 업데이트하지 않은 단말기는 보안 위협에 놓이게 된다. 구글이 3월 7일 발표한 안드로이드 버전별 점유율 자료에 따르면, 마쉬멜로우의 점유율은 전체 2.3%에 지나지 않는다. 안드로이드 단말 OS 및 하드웨어 업데이트는 제조사에 의존되어 있는 만큼, 매우 심각한 상황이라 할 수 있다.
 

3월 초 트렌드마이크로는, Snapdragon 프로세서를 탑재한 안드로이드 단말에 루팅을 허용하는 취약점(CVE-2016-0819와 CVE-2016-0805) 을 발표했다. 루트 권한을 얻을 수 있는 Towel 루트(CVE-2014-3153), PingPong 루트(CVE-2015-3636)와 같은 익스플로잇이 확인되는 가운데, 이번에 새롭게 확인된 취약점의 경우 사이버 범죄자가 더 쉽게 침입할 수 있는 보안 취약점이다. 다양한 루팅 익스플로잇 코드가 알려지면서, 앱 개발자들이 자신들만의 익스플로잇을 개발할 수 있는 기회가 생기고 있다.
 

트렌드마이크로 분석에 따르면, 이번 취약점은 레이스 컨디션(Race Condition)에서 iovec 배열의 오버런을 초래한다. 특별 구성된 iovec struct을 이용하면 커널에 임의 쓰기가 가능하다.
 

그림 1 : 루팅 어플 1,500만 다운로드

그림 1. 루팅 어플 1,500만 다운로드


악명 높은 루팅 앱 개발팀은, PinPong 루트를 더 이상 사용할 수 없게 되자, 위와 같은 취약점을 이용하였다. 당사는 현재 활동 중인 익스플로잇을 지속적으로 모니터링 하고 있으며, 위 취약점을 이용한 공격이 계속될 것이라 예상하고 있다.
 

그림 2. 함수 “pipe_iov_copy_from_user” 재실행을 일으키는 경쟁 조건

그림 2. 함수 “pipe_iov_copy_from_user” 재실행을 일으키는 경쟁 조건
 

그림 3. 쓰기 대상 커널 주소를 iovec struc에 마킹

그림 3. 쓰기 대상 커널 주소를 iovec struc에 마킹
 

리눅스 커널 파일 "fs / pipe.c"의 pipe 함수 "pipe_iov_copy_to_user"로부터 유래한 해당 취약점은, "pipe_iov_copy_to_user “이 실패할 경우, 같은 소스 버퍼를 이용한 재실행 루틴 함수를 이용하여 복사에 실패한 위치로 이동하여 다시 복사를 실행한다. 이 경우, 첫 단계 복사 데이터의 크기는 최종 iovec 배열 오버런이 생성된다.
 

그림 4. iovec 오버런

그림 4. iovec 오버런


위 오버런 상태는 정의되지 않은 메모리 액세스를 초래하여, "Denial of Service (DoS 서비스 거부)가 발생된다. 여기서 익스플로잇은 시스템 오류를 방지하는 기술을 사용한다. 예를 들어, iovec 배열의 길이가 기본 4,096 바이트 PIPE_BUF 인 소스버퍼보다 길게 설정될 경우, 재실행시 오버런을 방지 할 수 있는 것이다.
 

그림 5. 재실행시 오류 방지

그림 5. 재실행시 오류 방지


익스플로잇 코드는 남아있는 데이터를 복사하기 위해 "pipe_iov_copy_to_user"를 3번 반복하여 실행한다. 그 후 대상 커널 주소로 설정 한 iovec과 iov_base에 마킹한 iovec 버퍼의 마지막 부분에 액세스 오버런을 일으킨다. 재실행 시와 달리 이 단계에서 커널 메모리 영역에 임의로 쓰기 위해 보호용 "copy_to_user" 대신 "_ copy_to_user_inatomoc"를 이용하기 때문에 다시 재실행시 오버런을 일으키지 않게 된다.
 

그림 6. 취약 코드

그림 6. 취약 코드


트렌드마이크로 관계자는 "이 취약점은 DoS 공격을 일으키는 오류로 여겨지지만, 해당 취약점을 이용한 익스플로잇 코드가 나올 경우, 안드로이드 단말의 보안이 심각하게 침해될 위험이 있다"며 "사이버 범죄자들은 루트 권한을 얻는 것으로 안드로이드 단말에서 다양한 악의적인 활동을 수행 할 수 있다. 단말기를 보호하기 위해 응용 프로그램은 공식 구글 플레이 사이트에서 다운로드하여 설치하는 것을 권장한다"고 말했다.

★정보보안 대표 미디어 데일리시큐!★
 
데일리시큐 길민권 기자 mkgil@dailysecu.com

■ 보안 사건사고 제보 하기

▷ 이메일 : mkgil@dailysecu.com

▷ 제보 내용 : 보안 관련 어떤 내용이든 제보를 기다립니다!

▷ 광고문의 : jywoo@dailysecu.com

★정보보안 대표 미디어 데일리시큐 / Dailysecu, Korea's leading security media!★