
Huawei 강화 커널용 CVE-2019-2215 PoC
CVE-2019-2215를 이용한 Huawei 보안 강화 커널용 임시 루트
이 코드는 P20 Pro(CLT-AL00)용으로 작성되었으며, 커널 오프셋은 빌드 지문이 'HUAWEI/CLT-AL00/HWCLT:8.1.0/HUAWEICLT-AL00/176(C00):user/release-keys'인 펌웨어에서 가져왔습니다.
삼성의 KNOX와 마찬가지로, Huawei는 해커의 악용을 방지하고 '보안'을 강화하기 위해 많은 메커니즘을 추가했습니다.
kti_offset(KASLR과 유사)으로 난독화되어 있습니다.get_fs()는 KERNEL_DS 또는 USER_DS를 반환하므로, current_thread_info()->addr_limit을 변경해도 작동하지 않습니다.commit_creds()를 사용하지 않고 root가 되면 접근 검사 중 프로세스가 즉시 종료됩니다.CONFIG_SECURITY_SELINUX_DEVELOP가 설정되지 않았으므로, SeLinux를 전역 permissive 상태로 전환할 수 없습니다.ss_initialized, policydb->permissive_map, security_hook_heads를 포함한 많은 중요 변수는 초기화 후 읽기 전용이거나 하이퍼바이저에 의해 보호됩니다.이러한 메커니즘 덕분에 오래된 Huawei 기기가 CVE-2019-2215에 취약하더라도 악용하기가 어렵습니다.
먼저 patch_system.c를 컴파일하고 실행합니다. 그러면 selinux 매핑을 교란하고 avc_ss_reset()을 호출하여 selinux를 무력화합니다.
그런 다음 poc.c를 컴파일하고 실행하여 root 셸을 얻습니다.
(선택 사항) su 데몬을 컴파일하고 poc로 시작하여 다른 앱이 root를 사용할 수 있게 합니다(scripts/termux-boot 참조).
su 데몬은 https://github.com/corellium/sud 에서 가져와 수정했습니다.