🇰🇷 한글 설명
Android CAF Linux 커널의 core_info_read, inst_info_read 함수에서 dbg_buf 관련 변수들이 뮤텍스나 락으로 보호되지 않아 여러 스레드의 동시 접근으로 Race condition이 발생합니다. 이로 인해 버퍼 오버플로우가 가능하며 buffer->curr이 커널 메모리 임의의 위치를 가리킬 수 있어 권한 상승으로 악용될 수 있습니다.
💡 쉬운 설명
안드로이드 기기의 메모리 관리 코드에서 여러 프로그램이 동시에 접근할 때 보호 장치가 없어서 메모리가 손상될 수 있습니다. 공격자가 이를 악용하면 기기의 커널 권한으로 임의 코드를 실행할 수 있습니다.
🇺🇸 원문 (English)
In core_info_read and inst_info_read in all Android releases from CAF using the Linux kernel, variable "dbg_buf", "dbg_buf->curr" and "dbg_buf->filled_size" could be modified by different threads at the same time, but they are not protected with mutex or locks. Buffer overflow is possible on race conditions. "buffer->curr" itself could also be overwritten, which means that it may point to anywhere of kernel memory (for write).
📍 영향받는 시스템
CAF(Code Aurora Forum) Linux 커널을 사용하는 모든 Android 기기 및 릴리스
⚔️ 공격 벡터
여러 스레드가 동시에 dbg_buf 버퍼에 접근하는 Race condition 악용으로 로컬 권한 상승
🛡️ 대응 방법
Android 보안 패치 2017-09-05 이후 버전 설치 또는 kernel 소스 레벨에서 dbg_buf 접근에 대한 뮤텍스 보호 추가
🔧 검증 코드
보안 패치 날짜가 2017-09-05 이후면 패치됨, 이전 버전이면 취약함
adb shell getprop ro.build.version.security_patch | grep -E '2017-(09|1[0-2])|20(18|19|2[0-9])' && echo 'Patched' || echo 'Vulnerable'