Fortnite Installer를 악용하여 Galaxy 휴대폰에 앱을 자동으로 설치할 수 있음

Android 설치 프로그램의 Fortnite Mobile은 첫 번째 릴리스에서 악용될 수 있었습니다. 삼성 갤럭시 휴대폰에 앱을 자동으로 설치하는 것은 악용될 수 있습니다.

Android에서 Fortnite Mobile의 출시는 특히 그 이후로 그다지 좋지 않았습니다. 지원되는 다양한 장치 정말 허용 가능한 프레임 속도로 게임을 플레이하는 데 어려움을 겪습니다.. 게임으로 출시된 게임 단 3일간 삼성 갤럭시 독점. Fortnite 설치 프로그램은 다음에서 처음 출시되었습니다. 삼성 갤럭시 앱스 Epic Games에서는 삼성이 아닌 플레이어가 Epic 웹 사이트에서 얻은 Fortnite 설치 프로그램에서 전체 게임을 다운로드하고 설치할 수 있도록 허용하기 전에. Fortnite 설치 프로그램이 출시된 직후 Epic Games는 조용히 설치 프로그램에 대한 업데이트를 푸시했습니다. 이제 우리는 그 이유를 알고 있습니다. 맨인더디스크 악성 앱이 다음을 수행할 수 있게 해주는 익스플로잇 자동 설치 그들이 원하는 모든 앱 삼성 갤럭시 스마트폰에서. 이 결함이 어떻게 작동하는지에 대해 약간의 혼란이 있었기 때문에 문제를 해결하도록 노력하겠습니다. 먼저 안드로이드에 앱을 설치하는 기본적인 방법을 설명해야 합니다.


Android 스마트폰에서의 앱 설치 흐름

자사 소스를 통한 자동 설치

사용자에게 권한을 요청하지 않고 Android에 APK를 자동으로 설치하려면 다음과 같은 시스템 수준 애플리케이션이 있어야 합니다. 설치_패키지 허가가 부여되었습니다. 이 권한이 있는 애플리케이션의 예로는 대부분의 Android 기기의 Google Play 스토어가 있습니다. Samsung, Huawei 및 기타 장치 제조업체의 장치에 있는 자사 응용 프로그램 스토어에도 INSTALL_PACKAGES 권한이 부여될 수 있습니다. Google Play 스토어에서 앱을 설치하려는 경우 해당 앱이 다운로드를 처리하고 자동으로 설치됩니다. "설치"를 누른 후 추가 개입 없이 앱을 다운로드할 수 있습니다. (구글 플레이스토어에서도 자동으로 

특정 런타임 권한을 부여합니다. 에 대한 것과 같은 오버레이, Play 스토어 외부에서 설치된 앱은 사용자에게 이러한 권한을 부여하도록 요청해야 합니다.)

기기의 앱에 INSTALL_PACKAGES 권한이 있는지 궁금하다면 ADB 명령을 통해 확인할 수 있습니다.

adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"

예를 들어 Google Play 스토어의 패키지 이름은 'com.android.vending". 이 권한이 있는 다른 앱은 패키지 이름이 있는 Shell입니다. com.android.shell. 이용하시는 분들을 위해 Andromeda 플러그인을 통한 뿌리 없는 하층 Android Oreo에서는 PC에서 실행되는 Andromeda 스크립트가 셸 프로세스를 계속 실행하므로 Substratum은 이를 사용하여 패키지(테마 오버레이)를 설치한 다음 OverlayManager 명령 오버레이를 활성화합니다.

타사 소스의 앱 사이드 로딩

자사 앱 스토어 외부에서 앱을 다운로드하여 설치하려는 경우 먼저 알 수 없는 설치 소스를 활성화해야 합니다. 이를 통해 패키지 관리자 서비스 INSTALL_PACKAGES 권한이 있는 Android 프레임워크 내에서 타사 소스의 앱을 사이드로딩할 때의 위험을 인정한다는 점을 알고 있어야 합니다. Android Oreo 이전 기기에는 알 수 없는 소스로부터의 설치를 허용하는 단일 토글이 보안 설정에 있습니다. Android Oreo 및 이후 버전의 경우, APK 설치를 요청하는 앱은 다음을 선언해야 합니다. REQUEST_INSTALL_PACKAGES 권한을 부여하고 사용자는 해당 앱을 화이트리스트에 추가해야 패키지 관리자 서비스를 통해 앱 설치를 요청할 수 있습니다. REQUEST_INSTALL_PACKAGES는 "appop" 권한이므로 설정의 권한 관리자 내에서 또는 다음을 통해 제어할 수 있는 권한 중 하나가 됩니다. cmd appops 쉘 명령.

알 수 없는 소스로부터의 설치가 전역적으로 또는 요청하는 애플리케이션에 대해 구체적으로 활성화되면 사용자는 앱을 사이드로드할 수 있습니다. 그러나 패키지 관리자는 앱이 자동으로 설치되는 것을 허용하지 않습니다. 대신 사용자에게 앱을 설치할지 여부를 묻는 메시지를 표시하고 설치 시 부여하도록 요청하는 중요한 권한을 나열합니다. 사용자가 수락하면 요청된 비런타임 권한으로 앱이 설치됩니다. OEM은 패키지 관리자를 사용자 정의할 수도 있습니다. 예를 들어 중국어 버전의 패키지 관리자는 Huawei의 EMUI 5에는 APK를 스캔하여 안전한지 결정하고 권한을 제어하는 ​​기능이 있습니다. 부여된 ~ 전에 설치. 나는 중국에서 수입한 EMUI 5를 실행하는 Honor Note 8에서 이것을 관찰했지만, 다른 중국 Huawei 및 Honor 장치에도 패키지 관리자에 이 기능이 있다고 확신합니다.

어쨌든 이는 승인된 자사 소스와 타사 소스에서 앱을 설치하는 것의 차이점을 요약한 것입니다. INSTALL_PACKAGES를 사용하여 Play 스토어 또는 이에 상응하는 앱 스토어에서 앱을 설치하려고 하는 경우 권한이 부여되면 시작한 후 추가 사용자 개입 없이 자체적으로 설치를 모두 자동으로 처리합니다. 다운로드. 그러나 XDA Labs, APKMirror 또는 기타 타사 소스에서 APK를 다운로드하는 경우 표준 패키지 설치 프로그램이 설치를 처리하고 사용자에게 해당 패키지를 설치하라는 메시지를 표시합니다. 그렇다면 Fortnite 설치 프로그램은 어디에서 제공되며 이것이 모두 관련된 이유는 무엇입니까?

Fortnite 설치 프로세스의 결함

오늘 일찍 구글은 취약점을 공개했습니다 그들은 Fortnite 설치 프로그램의 첫 번째 버전을 발견했습니다. 이 취약점은 Exynos Samsung Galaxy S8+(dream2lte)에서 시연되었지만 Samsung Galaxy Note 9 및 Samsung Galaxy Tab S4를 포함한 다른 모든 Samsung Experience 장치에도 영향을 미쳤습니다. 이 취약점은 다음을 허용합니다. 이미 설치된 악성 애플리케이션 Fortnite 설치 프로그램이 Fortnite 설치를 시도하는 방식을 활용합니다. 처음으로 삼성 갤럭시 기기에서. Fortnite 설치 프로그램은 Samsung Galaxy Apps의 비공개 API를 사용하여 표준 패키지 설치 프로그램을 통해 사용자에게 Fortnite를 설치하라는 메시지를 표시할 필요를 우회합니다. Galaxy Apps에는 설치를 자동으로 처리하는 데 필요한 권한이 있기 때문입니다. 자동 설치되는 앱이 실제 Fortnite라면 이 자동 설치 프로세스에는 아무런 문제가 없습니다. 그러나 Fortnite 설치 프로그램이 Fortnite 게임용으로 다운로드한 APK 파일을 저장한 위치로 인해 쉽게 악용될 수 있었습니다.

Samsung Galaxy Apps의 AndroidManifest는 Galaxy Apps가 표준 패키지 설치 프로그램을 우회하여 자체적으로 다른 앱을 설치할 수 있는 권한을 가지고 있음을 보여줍니다.

Issue Tracker의 보고서에 따르면 Fortnite 설치 프로그램은 Fortnite Mobile APK를 다운로드하여 /sdcard/Android/data/com.epicgames.portal/files/downloads/. /sdcard는 다음에 대한 심볼릭 링크이므로 Android에서는 "외부 저장소"로 간주됩니다. /data/media/CURRENT_USER, /sdcard는 앱 데이터가 있던 안드로이드 초기에 사용된 이름이었습니다. 실제 SD 카드에 저장됩니다. 요즘 앱 데이터는 일반적으로 /data/data/의 앱별 디렉터리에 저장되며 각 앱은 자체 /data/data 디렉터리에 있는 파일에만 액세스할 수 있습니다. 따라서 Fortnite 설치 프로그램이 다운로드한 Fortnite APK를 자체 /data/data/ 디렉터리에 저장한 경우 읽기 권한이 없는 모든 앱에서는 불가능합니다(예: 루트 액세스 없이) 이 디렉토리에서 무슨 일이 일어나고 있는지 알 수 있습니다.

그러나 Fortnite 설치 프로그램 이후 다운로드한 APK를 외부 저장소에 저장했습니다., 다음에서 모니터링하고 덮어쓸 수 있습니다. 외부 저장소 읽기 권한이 있는 모든 앱. 일반적으로 앱은 MTP나 다른 앱을 통해 사용자가 액세스해야 하는 파일을 저장할 때 '가상 SD 카드'인 /data/media에 씁니다. 앱이 /data/media를 읽거나 쓰려면 READ_EXTERNAL_STORAGE 및 각각 WRITE_EXTERNAL_STORAGE 권한(둘 다 동일한 권한 그룹에 속하므로 함께 부여됨). Android 4.4 KitKat 이전에는 대부분의 앱이 설치 시 이러한 권한을 요청했습니다. 패키지의 지정된 외부 저장소 디렉터리에 있는 파일을 읽거나 쓸 수 있습니다. /data/media/.../Android/. 의 도입으로 FAT-on-sdcard 스타일 디렉터리 권한을 에뮬레이트하는 FUSE Android 4.4 KitKat에서는 앱에 외부 저장소의 지정된 디렉터리에 있는 파일에 액세스하는 데 더 이상 권한이 필요하지 않습니다. 다른 디렉터리의 파일에 액세스하려면 여전히 외부 저장소 권한이 필요하며, 이는 악성 앱이 Fortnite 설치 프로세스를 가로채기 위해 수행할 수 있는 작업입니다.

아래 영상에서 볼 수 있듯이 READ_EXTERNAL_STORAGE 권한을 가진 악성 앱은 외부 저장소에 있는 Fortnite 설치 프로그램의 다운로드 디렉터리를 모니터링합니다. 다운로드가 완료되었음을 감지하고 지문이 확인되면 WRITE_EXTERNAL_STORAGE 덕분에 자체 악성 패키지와 함께 Fortnite 패키지를 다운로드했습니다. 허가. 하지만 Samsung Galaxy Apps는 설치 전에 Fortnite APK를 확인하는 방식 때문에 (...패키지 이름이 "com.epicgames.fortnite"인지 확인합니다.) Galaxy를 사용할 수도 있습니다. 앱 사용자 개입이나 알림 없이 백그라운드에서 악성 패키지를 자동으로 설치합니다.—악성 패키지 이름이 "com.epicgames.fortnite"인 경우. 더 나쁜 것은 이 악성 패키지가 SDK 레벨 22 이하(Android 5.1 Lollipop 및 이전 버전)를 대상으로 하는 경우 런타임 권한은 SDK 레벨 23 이상(Android 6.0 Marshmallow 및 나중에).

하지만 삼성이 아닌 기기에서는 어떻게 될까요? 음, Samsung Galaxy Apps는 삼성이 아닌 기기에는 설치되지 않기 때문에 악성 APK는 백그라운드에서 자동으로 설치되지 않습니다.. Fortnite 설치 프로그램은 타사 앱이므로 먼저 사용자에게 활성화하라는 메시지를 표시해야 합니다. 알 수 없는 소스에서 설치한 다음 패키지 설치 프로그램에 가짜 설치 요청을 보냅니다. 포트나이트 APK. 그런 다음 앱을 설치할지 여부를 묻는 질문에 "설치"를 탭하는 것은 사용자에 따라 달라집니다. 이는 삼성이 아닌 휴대폰이 백그라운드에 자동으로 악성 앱이 설치될 위험이 없다는 사실과 관계없이 문제가 됩니다. 이름에 "Fortnite"로 제작된 악성 APK와 Fortnite 앱 아이콘이 설치를 위해 표시된다면 일반 사용자는 전혀 현명하지 못할 것입니다.

그럼에도 불구하고 삼성 갤럭시 스마트폰과 삼성이 아닌 스마트폰에서 이 결함을 악용하는 것에는 분명한 차이가 있습니다. 전자는 숨겨진 시스템 API를 활용하여 모든 앱을 자동으로 설치하는 Man-in-the-Disk 공격입니다. 모든 권한이 있고 사용자가 가짜 Fortnite를 설치한다고 생각하도록 속일 필요가 없는 배경 APK. 후자는 APK 또는 기타 중요한 데이터를 외부 저장소 디렉터리에 저장하는 다른 앱에도 발생할 수 있는 표준 Man-in-the-Disk 공격, 최근에 나타난 바와 같이 검문소 우편. 숨겨진 Galaxy Apps API 덕분에 이 Man-in-the-Disk 공격은 Samsung Galaxy 장치에서 더 위험합니다.

결함 수정

Epic Games는 Google Issue Tracker 보고서에 매우 신속하게 응답하고 버전 2.1.0에 대한 업데이트를 최대한 빨리 출시했습니다. 해결 방법은 간단했습니다. 다운로드한 Fortnite APK를 /data/media의 외부 저장소 디렉터리가 아닌 /data/data의 Fortnite 설치 프로그램 내부 저장소 디렉터리에 저장하기만 하면 됩니다. Epic Games의 엔지니어는 90일 후에 결함을 공개해 달라고 요청했지만 Google은 이를 거부하고 수정 사항이 출시된 지 7일 후에 이 문제를 공개했습니다. 에픽게임즈의 CEO 팀 스위니는 ~ 아니다 초기 보안 보고서부터 공개까지 빠른 처리 시간에 만족합니다. 그는 다음과 같은 성명을 제안했다. 안드로이드 센트럴.

Epic은 당사의 조치 직후 Fortnite에 대한 심층적인 보안 감사를 수행하려는 Google의 노력에 진심으로 감사드립니다. Android에 출시하고 결과를 Epic과 공유하면 결함을 수정하기 위한 업데이트를 신속하게 발행할 수 있습니다. 발견되었습니다.

그러나 많은 설치가 아직 업데이트되지 않았고 여전히 취약한 상황에서 결함의 기술적 세부 사항을 너무 빨리 공개한 것은 Google의 무책임한 일이었습니다.

나의 촉구에 따라 Epic 보안 엔지니어는 업데이트가 더 광범위하게 설치될 수 있는 시간을 허용하기 위해 일반적으로 90일 동안 공개 공개를 연기해 줄 것을 Google에 요청했습니다. 구글은 거절했다. 다음에서 모두 읽을 수 있습니다. https://issuetracker.google.com/issues/112630336

Google의 보안 분석 노력은 높이 평가되며 Android 플랫폼에 도움이 되지만 Google만큼 강력한 회사는 더 많은 노력을 기울여야 합니다. 책임 있는 공개 시점을 준수하고 Epic의 Fortnite 외부 배포에 대한 반홍보 노력 과정에서 사용자를 위험에 빠뜨리지 않습니다. 구글 플레이.

기존 Fortnite 설치 프로그램이 아직까지 얼마나 많은 기존 Samsung Galaxy 장치에 있는지 말할 수 없습니다. Epic Games는 이러한 사용자에게 Fortnite Mobile에서 메시지를 보내 설치를 업데이트하도록 알려야 할 수도 있습니다. Firebase의 새롭고 멋진 인앱 메시지 기능 트릭을 할 수 있습니다. 하지만 어쨌든 큰 문제는 아닐 것입니다. 왜냐하면 이전 설치 프로그램을 사용하는 사용자가 이미 합법적인 설치 프로그램을 다운로드한 경우이기 때문입니다. Fortnite의 경우 기존 Fortnite 위에 악성 APK를 설치할 수 없기 때문에 MITD 공격이 작동하지 않습니다. 설치. 어쨌든, Fortnite가 Android에 출시된 후 너무 일찍 이 결함이 발견되었습니다. Epic Games의 Google Play를 버리기로 한 결정—Epic Games의 결정이 부주의했다는 주장을 확실히 뒷받침합니다. 이 문제를 그렇게 빨리 알리는 것이 Google의 의도인지 여부는 알 수 없습니다.