특정 Marshmallow 장치는 앱이 사용자를 속이기 위해 권한 대화 상자 위에 텍스트를 오버레이하는 탭재킹에 취약합니다.
우리 중 많은 사람들이 새로 출시된 Nexus 기기용 Android Nougat에 군침을 흘리고 있지만 대다수의 사용자는 여전히 Android Marshmallow를 사용하고 있습니다. 그 존재가 이후 문서화되어 있는 익스플로잇 적어도 2015년 중반 여전히 많은 최신 Android 기기에 영향을 미치고 있습니다.
악성 애플리케이션은 다음과 같은 작업을 수행할 수 있습니다. 탭잭 당신의 행동을 명시적으로 부여하지 않은 권한을 부여합니다. 익스플로잇의 작동 방식은 다음과 같습니다.
탭재킹의 귀환
인스타그램을 열고 최근 휴가 중에 찍은 사진을 공유하려고 한다고 상상해 보세요. 갤러리에서 사진을 탐색하도록 선택하면 Instagram은 저장 공간에 액세스할 수 있는 권한을 부여하도록 요청합니다. 하지만 "예"를 탭하면 오류 메시지가 나타납니다.
활성 화면 오버레이가 활성화되어 있으므로 Instagram에 대한 저장 권한을 부여할 수 없습니다. 이 경우는 밤에도 눈부심 없이 휴대전화를 사용할 수 있도록 화면에 색조를 적용하는 많은 애플리케이션 중 하나입니다. 당신 자신. 안드로이드 권한 시스템의 사례입니다. 의도한 대로 작동: 애플리케이션에 민감한 권한을 부여하려면 기기에 있는 모든 화면 오버레이를 비활성화해야 합니다.
화면 위에 그림을 그리는 기능이 있는 애플리케이션은 민감한 데이터를 제공하도록 속일 수 있습니다. 예를 들어, 화면 오버레이는 비밀번호를 수집하기 위해 실제 로그인 화면 위에 가짜 비밀번호 입력을 배치할 수 있습니다. 이와 같은 익스플로잇을 익스플로잇이라고 합니다. '탭재킹' 수년에 걸쳐 다양한 Android 버전에 등장하고 패치되었습니다. Android 4.0.3까지 지속된 최악의 사례 중 하나. 그러나 최근에 이 익스플로잇은 다음과 같이 돌아왔습니다. Android Marshmallow의 런타임 권한 모델.
이름이 개발자 이오 바나스 생성 애플리케이션 익스플로잇을 보여줍니다. 작동 방식은 매우 간단합니다. 애플리케이션이 권한 대화 상자를 표시하면 악성 애플리케이션이 설치하면 권한 대화 상자의 텍스트 블록을 어떤 텍스트로든 가리기 위해 시스템 오버레이가 표시됩니다. 원한다. 권한 대화 상자에서 "허용"을 클릭하는 무의식적인 사용자는 요청된 권한을 부여하도록 속이게 됩니다. 그러나 해당 요청은 사용자 보기에서 숨겨져 있습니다. 이러한 공격은 Android Marshmallow 권한 시스템의 목적을 완전히 무너뜨립니다. 새로운 모델은 사용자가 명시적으로 동의한 권한만 허용하도록 되어 있었습니다..
이제 나는 당신이 무슨 생각을 하는지 알아요. Android가 시스템 오버레이를 감지하고 인스타그램 저장소 권한 부여를 차단한다면 이러한 악용이 발생하는 것을 방지할 수 있지 않을까요? 내 대답은 아니오 야, 테스트 결과 특정 장치에서 권한 대화 상자 위에 텍스트 오버레이를 표시해도 안전 메커니즘이 실행되지 않는 것으로 나타났습니다. 개념 증명 탭재킹 애플리케이션의 개발자는 이 공격이 효과적이라고 말합니다. 사용자가 API 레벨 22 이하를 대상으로 하는 보조 악성 애플리케이션을 설치해야 합니다. (마시멜로 이전). 이는 Android Marshmallow 이전에는 설치 중에 모든 애플리케이션에 권한이 부여되었기 때문입니다.
좋아요, Marshmallow를 사용 중이라면 오버레이 그리기 권한을 요청하는 신뢰할 수 없는 앱을 설치하지 않기만 하면 됩니다. 그렇죠? Android의 권한 모델이 원래 계획대로 작동했다면 귀하가 옳을 것입니다. 하지만 이 취약점이 발견된 이후로 API 레벨 23을 대상으로 하는 앱도 마찬가지입니다. (마시멜로) 오버레이 권한을 요청하는 것은 잠재적인 위험이 있습니다.
권한 모델의 격차?
당신이 친구들과 채팅하기 위해 Facebook Messenger를 사용하는 수백만 명의 사람들 중 하나라면, 그러다가 당신은 Android 최고의 기능 중 하나, 즉 앱이 다른 앱 위에 앱을 그리는 기능을 발견하게 되었습니다. 스크린. 즐겨찾는 Facebook 그룹 채팅을 통해 사용자가 연 애플리케이션 위에서 사용자를 팔로우할 수 있다는 것이 얼마나 멋진가요? Facebook의 메신저가 '플로팅 앱' 아이디어를 주류로 끌어들였음에도 불구하고 이 개념은 Android에서 한동안 존재해 왔습니다. 애플리케이션은 한동안 앱 위에 오버레이를 생성할 수 있었습니다. TYPE_SYSTEM_OVERLAY 안드로이드의 WindowManager에서.
Android Marshmallow 이전에는 애플리케이션에서 다음과 같은 권한을 요청해야 했습니다. SYSTEM_ALERT_WINDOW 설치하는 동안 화면 상단에 오버레이가 표시되기 전에. 하지만 6.0의 세분화된 런타임 권한 모델이 도입되면서 이러한 상황이 바뀌었습니다. 이제 사용자는 실제로 앱을 실행할 때 애플리케이션에 권한을 부여해야 하며, 이로 인해 평균이 향상될 수 있습니다. 기능적으로 관련이 없어 보이는 의심스러운 요청을 하는 애플리케이션으로부터 사용자가 자신의 개인 데이터를 보호하도록 합니다. 권한.
그러나 SYSTEM_ALERT_WINDOW는 다른 권한과 다릅니다. 개발자는 Marshmallow를 대상으로 하는 앱에 대한 대부분의 다른 권한과 마찬가지로 최종 사용자가 부여할 권한을 프로그래밍 방식으로 요청하는 대화 상자를 표시할 수 없습니다. 대신 수동으로 설정 화면으로 이동하여 권한을 직접 활성화해야 합니다. 물론 Facebook Messenger와 같은 일부 앱이 프로세스를 진행하는 데 도움이 될 것입니다.
Google은 '특히 민감합니다."
특별 허가
정상 권한과 위험한 권한처럼 작동하지 않는 몇 가지 권한이 있습니다. SYSTEM_ALERT_WINDOW 및 WRITE_SETTINGS는 특히 민감하므로 대부분의 앱에서는 이를 사용해서는 안 됩니다. 앱에 이러한 권한 중 하나가 필요한 경우 매니페스트에서 권한을 선언하고 사용자의 승인을 요청하는 인텐트를 보내야 합니다. 시스템은 사용자에게 상세한 관리 화면을 보여줌으로써 의도에 응답합니다.
위에서 탭재킹에 대해 알고 있는 내용을 고려하면 이는 의미가 있습니다. 하지만 여기에 문제가 있습니다. Google은 자체 규칙도 따르지 않습니다. 위에 보여드린 SYSTEM_ALERT_WINDOW 권한을 부여하는 과정을 안내하는 Facebook 메신저의 스크린샷이요? 이는 Google Play 스토어 외부에서 APK를 설치한 경우에만 발생합니다. Google Play 스토어에서 애플리케이션을 설치하면 SYSTEM_ALERT_WINDOW 권한이 자동으로 부여됩니다..
Google은 편의를 위해 안전을 희생했습니다.
Android Marshmallow 이전에는 오랫동안 SYSTEM_ALERT_WINDOW가 "위험한" 허가. Android Marshmallow 6.0에서는 권한이 다음으로 변경되었습니다. 서명|시스템|앱 이는 처음에 개발자가 권한을 부여하기 위해 사용자를 설정 화면으로 안내해야 했던 것입니다. 하지만 Android 버전 6.0.1에서는 SYSTEM_ALERT_WINDOW가 수정되었습니다. Google Play 스토어에 자동으로 권한을 부여할 수 있습니다.사용자에게 알리지 않고. Google이 이러한 변경을 한 이유는 명확하지 않습니다. Google 자체에서는 왜 이러한 변경을 했는지 밝히지 않았습니다. 이는 웹페이지에 여전히 존재하는 SYSTEM_ALERT_WINDOW에 대한 언어를 고려하면 특히 이상합니다.
그럴 수도 있지 충분한 개발자들이 분노했습니다 SYSTEM_ALERT_WINDOW에 대한 초기 변경으로 인해 Google이 자동으로 부여한 권한을 사용자가 수동으로 부여하고 이를 요청한 모든 애플리케이션에 부여했습니다. 하지만 그렇게 함으로써 Google은 편리함을 위해 안전을 희생하다. 구글 스스로가 오랫동안 권한을 위험하다고 생각한 데에는 이유가 있다. 그리고 Marshmallow 권한 탭재킹 익스플로잇의 존재는 모든 앱에 이 권한을 자동으로 부여하는 데 내재된 위험이 있다는 충분한 증거입니다.
이 탭재킹 익스플로잇은 수개월 동안 존재해 왔지만 최근에야 주목을 받았습니다. XDA Portal 팀의 내부 장치 테스트에서 우리는 다음을 확인했습니다. 이 익스플로잇은 Android Marshmallow를 실행하는 많은 최신 기기에서 작동합니다.. 다음은 각 장치에 대해 사용 가능한 최신 소프트웨어 버전과 탭재킹 익스플로잇 작동 여부에 대해 테스트한 장치에 대한 간략한 요약입니다. "취약함"으로 표시된 장치는 탭재킹 공격에 취약한 반면, "취약함"으로 표시된 장치는 탭재킹 공격에 취약합니다. 취약함'은 오버레이를 표시하는 앱을 감지하고 그 전에 비활성화하도록 요청할 수 있습니다. 계속.
- Nextbit Robin - 6월 보안 패치가 포함된 Android 6.0.1 - 취약한
- Moto X Pure - 5월 보안 패치가 포함된 Android 6.0 - 취약한
- Honor 8 - 7월 보안 패치가 포함된 Android 6.0.1 - 취약한
- Motorola G4 - 5월 보안 패치가 포함된 Android 6.0.1 - 취약한
- OnePlus 2 - 6월 보안 패치가 포함된 Android 6.0.1 - 취약하지 않음
- Samsung Galaxy Note 7 - 7월 보안 패치가 포함된 Android 6.0.1 - 취약하지 않음
- Google Nexus 6 - 8월 보안 패치가 포함된 Android 6.0.1 - 취약하지 않음
- Google Nexus 6P - 8월 보안 패치가 적용된 Android 7.0 - 취약하지 않음
지금까지 팀에서 테스트할 수 있었던 모든 장치는 다음과 같습니다. 보안 패치 버전과 익스플로잇 사이의 상관 관계를 찾을 수 없습니다. 당신이 우리의에서 알 수 있듯이 Android 보안 업데이트에 관한 최신 토론, 어쨌든 많은 사람들이 최신 보안 패치를 실행하지 않고 있으므로 이 악용 및 다음에 설명된 다른 악용에 취약할 가능성이 있습니다. Android 보안 게시판.
앞으로 나아가 다
귀하의 장치에서 이 익스플로잇을 직접 테스트하여 귀하가 취약한지 확인하시기 바랍니다.. 우리는 다음에서 APK를 컴파일했습니다. 위에 링크된 소스코드 (직접 할 수도 있습니다) AndroidFileHost에 업로드했습니다. 익스플로잇을 테스트하려면 두 가지를 모두 설치해야 합니다. 주요 탭재킹 애플리케이션 뿐만 아니라 그 도우미 서비스. 그런 다음 기본 애플리케이션을 실행하고 "테스트" 버튼을 클릭하기만 하면 됩니다. 권한 대화 상자 위에 텍스트 상자가 떠 있고 "허용"을 클릭하면 장치의 연락처 목록이 표시되면 장치가 탭재킹에 취약하다는 의미입니다. 권한 대화 상자를 완전히 덮지 않는 부동 텍스트 상자에 대해 걱정하지 마십시오. 이 개념 증명 앱은 권한 대화 상자를 완전히 덮지 않습니다. 권한 대화 상자를 깔끔하게 하이재킹하는 방법을 완벽하게 보여주기 위한 것이 아니라 실제로 그것이 실제로 가능하다는 것을 증명하기 위한 것입니다. 가능한.
모든 Marshmallow 장치에서 이 악용을 패치하는 수정 사항이 도입되고 OEM이 모든 장치를 최신 보안 패치로 업데이트하기를 바랍니다. 현실적으로 대부분의 약속된 장치에서 Nougat를 다운로드하는 데 수개월이 걸리기 때문에 대부분의 경우 유일한 방법입니다. 사용자가 위험을 피하려면 최신 보안 패치를 설치하거나 모니터 앱 권한을 얻는 것입니다. 그들 자신. 그러나 잠재적으로 위험한 SYSTEM_ALERT_WINDOW 권한을 자동으로 부여하기로 한 Google의 결정으로 인해 많은 사람들이 사용자는 점점 더 위험한 권한을 부여하기 위해 잠재적으로 휴대폰을 탈취할 수 있는 앱을 무의식적으로 실행하고 있습니다. 권한.