-
Android Task HijackingResearch 2024. 2. 14. 12:56
안드로이드 환경에서 AndroidManifest.xml 파일 설정 미흡으로 인해서 Task Hijacking이 발생할 가능성이 있는 취약점에 대한 내용이다.
악용가능한 시나리오를 생각해보면 우선 전제조건이 필요하다. 피해자 환경에서 취약한 APP을 타겟으로 한 공격APP이 설치 및 실행되어야 한다. 피싱 등을 통해 위 환경을 유도 할 수 있을것이다. 악성APP 실행 후 타겟 앱을 실행하여 일련의 행위를 하면(ex. 뒤로 가기) 악성APP이 실행되는데, 해당 악성APP이 타겟 APP의 로그인 페이지와 유사하게 셋팅되어있다고 가정하면 공격자가 피해자의 계정정보를 탈취하는 등 직접적인 공격이 일어날 수 있다.
해당 취약점은 CVE-2021-33699로 통용되며 Android Task Hijacking으로 불리고 있다.
우선 안드로이드 환경에서 Task에 대해 간단히 소개하자면, Task란 어플리케이션에서 실행 되는 액티비티를 기록하는 스택이다. 사용자가 사용하는 액티비티들이 스택에 쌓이고, 뒤로가기 등을 통해 최근의 Task를 벗어나면 해당 액티비티가 pop되어 그 아래에 쌓여있던 액티비티가 보여지는 개념이다.
따라서, 안드로이드 환경에서는 Task를 통해 화면의 순서와 흐름을 관리할 수 있다.해당 취약점은 악성 앱을 통해 타겟 앱의 Task를 탈취하여 마치 공격자가 유도한 화면이 정상 앱의 화면인것처럼 인식하도록 유도하는것이 주된 내용이다.
취약한 APP의 AndroidManifest.xml 파일 예시이다.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zombie.ssa"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:logo="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.SuperSecureApp"> <activity android:name=".LoggedIn"></activity> <activity android:name=".MainActivity" android:launchMode="singleTask"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
android:launchMode가 "singleTask"로 설정되어 있는 환경에서 별도로 taskAffinity 를 지정하지 않으면, 디폴드 값으로 패키지명으로 설정되는데 이를 악용하여 공격 앱이 타겟 앱의 Task Affinity 값을 설정하도록 하여 타겟 앱 실행 시 공격자가 유도한 악성 액티비티가 보여지도록 유도하는 것이다.
실습을 위해 아래 경로에서 테스트앱 소스를 다운받아 빌드를 진행했다.
https://github.com/az0mb13/Task_Hijacking_Strandhogg
GitHub - az0mb13/Task_Hijacking_Strandhogg: A Proof of Concept for demonstrating Task hijacking in Android using an attacker and
A Proof of Concept for demonstrating Task hijacking in Android using an attacker and a victim app. - GitHub - az0mb13/Task_Hijacking_Strandhogg: A Proof of Concept for demonstrating Task hijacking...
github.com
아래와 같이 피해자 디바이스에 "Super Secure App"을 타겟으로 한 "Attacker App"이 설치되었다고 가정해보자.
피해자가 Attacker App을 실행하더라도 잠깐 창이 떴다가 사라지기때문에 대수롭게 여기지 않을 수 있다.
이후 상황에서 Super Secure App을 실행하고, 뒤로 가기와 같은 일련의 행위를 하면
공격자가 유도한 Task로 전환된다. 피해자 입장에서는 단순히 뒤로가기만 했을 뿐이기때문에 별도의 악성 앱이라고 인식하지 못할 가능성이 크고, 공격자 앱의UI가 타겟 앱과 유사하게 셋팅되어있다면 크게 의심하지 않고 ID/PW를 입력하는 등 행위를 할 것이며 해당 정보는 공격자에게 전송되어 탈취될 가능성이 있다.
해당 취약점에 대응하기 위한 대응 방법으로는, 적용이 가능한 상황이라면 액티비티 구동 방식을 SingleInstance 로 설정하하거나 taskAffinity="" 와 같이 설정값을 명시하여 Task Affinity 속성 값을 null 로 설정하는 것이다.
[Android] 태스크(Task)의 개념과 launchMode로 설정하기
태스트(Task)란? 태스크는 어플리케이션에서 실행 되는 액티비티를 기록하는 스택이다. 안드로이드에서는 태스크를 이용해서 화면의 순서와 흐름을 관리할 수 있다. 사용자가 현재 화면으로 보
maejing.tistory.com
https://developer.android.com/guide/components/activities/tasks-and-back-stack?hl=ko
작업 및 백 스택 이해 | Android 개발자 | Android Developers
일반적으로 앱에는 여러 활동이 포함됩니다. 각 활동은 사용자가 실행할 수 있는 특정 종류의 작업을 중심으로 설계되어야 하며 다른 활동을 시작할 수 있어야 합니다. 예를 들어 이메일 앱에는
developer.android.com
https://ciip.kait.or.kr/sub/04/basic_view?bbs_idx=180
정보통신기반시설보호
ciip.kait.or.kr
https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html
Android task hijacking using moveTaskToBack() and excludeFromRecents
What is task hijacking in Android? Task hijacking and it's impact in Android was first presented in 2015 at USENIX. It refers to an attack wherein a malicious app takes over the "back stack" of the vulnerable app, and thereafter whenever the user tries to
blog.takemyhand.xyz
https://blog.dixitaditya.com/android-task-hijacking?x-host=blog.dixitaditya.com
A deep dive into Task Hijacking in Android
This is extensive research done on the Task Hijacking vulnerability along with a proof of concept code and a vulnerable application depicting them.
blog.dixitaditya.com
First React Native App: Task :app:processDebugMainManifest FAILED
Problem I have followed the instructions as specified in https://reactnative.dev/docs/environment-setup, except for choclatey as I already have node etc. But I cannot build my app to reach the ou...
stackoverflow.com
반응형'Research' 카테고리의 다른 글
[CVE-2023-50629] XSS/OpenRedirect Vulnerability Report from Next.js router in vercel/next.js (0) 2023.12.19 Potential Vulnerability in Amazon RedShift..?! (0) 2023.05.17 Next.js router (0) 2023.01.13 XHR(XMLHttpRequest)에서의 CSRF? CORS? (2) 2022.11.07 log4j Vulnerability(CVE-2021-44228) (0) 2021.12.27