기타 Lobsters · 2026-09-29

아무 권한 없는 앱 하나 깔았더니 최신폰 루트 권한이 뚫리는 기적의 보안 수준

핵심 요약
  • 원플러스 15 순정 기기에서 특수 권한이 전혀 없는 일반 APK 앱으로 최고 관리자(루트) 권한을 획득하는 취약점 연쇄 공격이 입증되었습니다.
  • 오디오 디버그 서비스의 셸 커맨드 인젝션과 호출자가 uid 0이면 무조건 셸을 띄워주는 벤더 HAL의 허술한 설계가 결합되어 발생했습니다.
  • 원플러스 및 오포의 150대 이상 기기가 영향을 받았으며, 최신 펌웨어 업데이트를 통해 순차적으로 패치가 진행 중입니다.
요약 한 보안 연구원이 원플러스 15(OnePlus 15) 기기에서 권한이 전혀 없는 일반 앱 하나로 최고 관리자 권한(루트)을 획득하는 취약점 연쇄 공격(Exploit Chain)을 발견해 공개했습니다. 연구원은 OxygenOS 16 기반의 원플러스 15 순정 펌웨어 상태에서, 외부에서 설치한 일반 APK 앱이 루트 권한을 얻을 수 있는지 분석을 시작했습니다. 실사용 폰을 건드리지 않기 위해 사전에 루팅해 둔 원플러스 12 Pro 기기에서 기드라(Ghidra) 등을 통해 리버스 엔지니어링 및 공격 코드를 개발한 뒤, 원플러스 15 기기에 그대로 설치해 단번에 루트 권한 탈취에 성공했습니다. 이번 취약점은 두 가지 결함의 결합으로 이루어졌습니다. 첫 번째는 OxygenOS의 텔레메트리 및 디버그 이벤트 수집 서비스인 'AtlasService'의 결함입니다. 이 서비스는 모든 UID의 바인더 호출을 허용하며, 오디오 덤프 이벤트 처리 과정에서 공격자가 입력한 시스템 프로퍼티 값을 이스케이프 처리 없이 시스템 셸 명령(`system("chmod 777 " + prefix)`)에 그대로 이어 붙여 실행하는 구조적 허점이 있었습니다. 이를 통해 일반 샌드박스 앱(untrusted_app)이 세미콜론(;)을 이용한 커맨드 인젝션으로 uid 0(dumpstate 도메인) 권한의 명령을 실행할 수 있었습니다. 두 번째는 벤더 HAL 서비스인 'olc2 HAL'의 어처구니없는 설계였습니다. 이 서비스는 호출자의 UID가 0이기만 하면 인자로 전달받은 임의의 명령어를 셸(`/vendor/bin/sh`)을 통해 그대로 실행해 주는 `doShell` 함수를 열어두고 있었습니다. 결국 앞선 첫 번째 취약점으로 uid 0 권한을 얻은 뒤 이 함수를 호출함으로써 완전한 루트 권한을 확보하게 됩니다. 원플러스 측은 이번 취약점이 원플러스 및 오포(OPPO)의 다양한 기기 전반에 영향을 미친다고 확인했습니다. 보안 팀에 따르면 유지보수 대상 기기 중 151개 모델에 보안 패치가 배포되었으며 18개 모델은 업데이트 대기 중이라고 전했습니다. 연구원의 원플러스 15 기기에서는 최신 16.0.10.500(EX01) 버전에서 해당 문제가 해결된 것으로 확인되었습니다.
Sponsored · 광고