
설치된 앱에서 CVE-2024-48336(Magisk Bug #8279)을 통한 루트 권한 상승 익스플로잇 및 라이트업, 권한 상승 / 임의 코드 실행 취약점
이것은 Magisk 앱의 취약점 CVE-2024-48336을 악용하는 익스플로잇으로, 로컬 앱이 사용자 동의 없이 조용히 루트 액세스 권한을 획득할 수 있게 합니다.
취약점은 처음에 @vvb2060에 의해 보고되었고, @canyie에 의해 PoC가 작성되었습니다. Canary 27007에서 수정되었습니다.
이 취약점을 악용하여 조용히 루트 권한을 획득하고 임의의 앱에 루트를 부여하는 데모 비디오: https://github.com/canyie/MagiskEoP/blob/main/screen-20220302-093745.mp4
이 취약점을 재현하는 단계:
이름: Magisk 앱 임의 코드 실행 취약점
별칭: Magisk 권한 상승 취약점
제품: Magisk
CVE: CVE-2024-48336
보고자: @vvb2060
최초 보고 날짜: 2024-08-01
패치 날짜: 2024-08-21
공개 날짜: 2024-08-24
영향을 받는 버전: Manager v7.0.0 ~ Canary 27006
최초 패치 버전: Canary 27007
이슈/버그 보고서: https://github.com/topjohnwu/Magisk/issues/8279
패치 CL: https://github.com/topjohnwu/Magisk/commit/c2eb6039579b8a2fb1e11a753cea7662c07bec02
버그 유발 CL: https://github.com/topjohnwu/Magisk/commit/920b60da19212dd8d54d27ada77a30067ce50de6
버그 클래스: 안전하지 않은 동적 외부 코드 로딩
약점 열거:
Canary 버전 27007 이전의 Magisk 앱에 포함된 ProviderInstaller.java의 install() 함수는 GMS 앱을 로드하기 전에 이를 검증하지 않습니다. 이로 인해 추가 권한이 없는 로컬의 신뢰할 수 없는 앱이 Magisk 앱 내에서 조용히 임의 코드를 실행하고, 제작된 패키지를 통해 루트로 권한을 상승시킬 수 있습니다. 일명 Bug #8279. 악용에는 사용자 상호 작용이 필요하지 않습니다.
오래된 Android 버전은 일부 알고리즘을 지원하지 않습니다. 이러한 플랫폼에서 Magisk가 올바르게 작동하도록 하기 위해 createCallingContext()를 호출하여 GMS에서 conscrypt를 로드하려고 시도합니다. 자세한 내용은 다음 링크를 확인하세요: https://t.me/vvb2060Channel/692
그러나 GMS가 모든 기기에 사전 설치되어 있는 것은 아닙니다. Magisk는 GMS에서 코드를 로드하는 것이 항상 안전하다고 가정하지만, 공격자는 동일한 패키지 이름으로 가짜 악성 앱을 만들 수 있습니다. Magisk 앱이 실행되면 악성 코드가 Magisk 앱에서 실행됩니다. Magisk 앱에는 항상 루트 액세스 권한이 부여되므로, 공격자는 사용자 동의 없이 조용히 루트 액세스 권한을 획득하고 루트 권한으로 임의 코드를 실행할 수 있습니다.
참고: 이 문제는 GMS를 로드하기 전에 시스템 앱인지 확인함으로써 Canary 27007에서 수정되었습니다. 그러나 GMS가 사전 설치된 기기에서도 서명 검증 구현이 손상된 경우(예: CorePatch) 이 문제를 악용하는 것이 여전히 가능합니다.
참고 2: 공식 Magisk 앱에는 이 문제에 대한 수정 사항이 포함되어 있지만, 다른 많은 앱에도 적절한 수정 없이 유사한 코드 인스턴스가 존재합니다. 예: 이것 및 이것. 이로 인해 취약한 앱에서 임의 코드 실행이 가능해질 수 있으며, 피해자 앱에 루트 권한이 부여된 경우 공격자가 다시 루트 액세스 권한을 획득할 가능성도 있습니다.