발표명 : Hey Google, Activate Spyware! – When Google Assistant Uses a Vulnerability as a Feature
단어 정리
💡
Activity : 앱을 구성할 때는 여려개의 화면간의 전환으로 이루어질 때가 많은데, 이 "화면"들이 하나의 Activity라고 보면 됨. Intents : 앱 컴포넌트가 무엇을 할 것인지를 담는 메시지 객체. 대표적인 예시로 Activity간 전환 및 데이터전송을 위해서 Intent를 사용함. - Implicit Intent : 묵시적 인텐트라는 뜻으로, 타겟 컴포넌트의 이름을 명시적으로 지적하여 구동시키는 것을 칭함. 특정 어플을 고르는 것이 아니라, "해당 기능"이 있는 어플리케이션에 연결하는 것임. 아래 캡쳐 참고 - Explicit Intent : 명시적 인텐트라는 뜻이고, Implicit Intent와 반대로 특정 클래스/패키지명을 명시함.
implicit intent의 예시
취약점 구현 과정
0. 배경 지식
::권한(Permission)에 대하여::
안드로이드 어플리케이션의 경우, 모든 권한에 대해서 사용자의 허락을 받아야 한다고 developer.android.com에 명시되어있음.
android.media.action.VIDEO_CAMERA 가 카메라를 실행시키고 즉시 녹화를 시작한다.
android.intent.extra.USE_FRONT_CAMERA는 전면카메라를 실행시킨다.(없는 경우 후면카메라)
android.intent.extra.TIMER_DURATION_SECONDS의 경우에는 최소 3초 이후에 사진을 찍을 수 있도록 하는 기능이다.
2. 취약점 실현
이렇게 발견한 취약점을 가지고는 다음과 같이 활용할 수 있다.
권한이 전혀 없는 rogue application 생성
google assistant 호출을 통해 카메라 실행
결론 : 카메라 관련 권한을 포함한 모든 권한이 없지만, 원할 때 영상/사진 촬영 가능
<< 실제 Checkmarx사에서 만든 rogue app
3. 취약점 활용
이 취약점을 가지고, 실제로 악용이 되면 어떤식일까에 대해서 더 연구함.
우선 몇가지 방해사항이 있었음
카메라가 실행이 되면 화면이 바뀌기 때문에
카메라에서 사진/영상촬영을 할 때 소리가 발생
셔터 소리에 관련하여셔터소리를 한번에 뮤트시키는 방법은 존재하지 않았음. 그러나, adjustStreamVolume함수의 ADJUST_LOWER 플래그를 사용할 경우, 볼륨이 0이 될때까지 조정할 수 있었음.
볼륨을 0으로 만들기 위해 조정한 부분
그리고 이건 의도하지 않았던 부분이라고 판단되어 구글 팀에 문의했고, 이 부분에 대해서 CVE를 인정받음.
화면 상황에 대하여Proximity Sensor를 사용할 경우, 책상 위에 핸드폰을 뒤집어 놓거나, 주머니 안에 넣어놓거나, 핸드폰을 사용하지 않을 때를 알 수 있기 때문에 이를 악용할 수 있다는 것을 알아냈음.
4. 추가 권한 획득 및 시나리오 작성
연구팀은 여기서 그치지 않고, 단순히 카메라를 실행시키는 것 뿐이 아니라 다른 권한도 획득이 가능한지 연구하였다.
저장공간 권한
가장 먼저 저장공간에 대한 탐구를 하였다. 2015년의 조사에 따르면 반 이상의 어플리케이션이 저장공간에 대한 권한을 묻는 것으로 나타났다. 그리고 대부분의 사람들이 이 권한을 큰 고민 없이 허용하기 때문에, 이를 활용하였다.
위치 권한Google Maps에서 Location tags가 켜져있는 상황이라면, 이 정보 또한 google assistant를 통해서 얻어낼 수 있었다고 한다.이 권한이 특히나 더 위험한 이유는, 특정 시간마다 위치를 수집할 경우, 피해자의 이동 경로 모두 수집할 수 있기 때문이다.
Checkmarx사는 추가로 획득할 수 있었던 권한들을 종합하여 악성 날씨 앱을 개발하였습니다.
그 결과 google assistant를 사용한 스크립트를 통해서 카메라는 물론, 현재 기기가 위치하고 있는 위치정보까지 얻어낼 수 있었습니다.
따라서 이 취약점은 구글에서 CVE로 인정을 받았고, 이에 대해서 수정하겠다고 밝혔습니다.
Uploaded by Notion2Tistory v1.1.0