Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ServiceCheater — CVE-2020-0113 및 CVE-2020-0108의 Poc | Kitploit
도구/GitHubGitHub/xdo0/servicecheater
Android SecurityPrivilege EscalationVulnerability AnalysisExploitationMobile SecurityBinary Exploitation
GitHubxdo0/servicecheater

ServiceCheater

CVE-2020-0113 및 CVE-2020-0108의 Poc

저장소 보기
2315년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ServiceCheater

Poc of CVE-2020-0113 & CVE-2020-0108

Android 포그라운드 서비스 권한 상승 취약점 분석

취약점 배경

AOSP의 2020-08 패치에서 프레임워크 계층 AMS의 취약점이 공개되었습니다. 번호는 CVE-2020-0108이며 등급은 높음(High)입니다. 또 다른 취약점은 CVE-2020-0313이며 등급은 중간(Medium)입니다. AMS의 포그라운드 서비스 처리 과정에서 논리적 취약점이 발생하며, 이 취약점을 성공적으로 악용한 공격자는 포그라운드 서비스의 알림 표시를 우회하고 계속해서 백그라운드에서 실행될 수 있습니다. 공격은 로컬의 악성 앱에 의해 시작되어야 하며 사용자 상호작용이 필요하지 않습니다. 사용자가 앱에 다른 권한을 부여한 경우 지속적인 위치 추적이나 무음 녹음 등 더 큰 피해를 입힐 수 있습니다.

포그라운드 서비스는 Google이 Android 8.0에서 도입한 개념입니다. Android 8.0은 백그라운드에서 백그라운드 서비스를 시작하는 것을 허용하지 않기 때문에 포그라운드 서비스 개념이 설계되었습니다. 포그라운드 서비스는 우선순위가 높아 오랫동안 백그라운드에서 실행될 수 있지만, 시작 후 5초 이내에 알림을 바인딩해야 하며 그렇지 않으면 종료됩니다. 실제로 포그라운드 서비스는 여전히 '백그라운드'에서 실행되지만, 사용자가 볼 수 있는 알림이 바인딩되어 있기 때문에 Google은 이를 '포그라운드 서비스'라고 부릅니다.

취약점 세부 정보 및 악용

  • CVE-2020-0113

NotificationManagerService의 onNotificationError 메서드에서 알림 표시 중 예외 상황을 올바르게 처리하지 않습니다. 이 메서드는 단순히 cancelNotification 메서드를 호출하여 알림을 취소할 뿐, 서비스를 종료하거나 전체 애플리케이션을 종료하지 않기 때문에 포그라운드 서비스가 알림을 표시하지 않은 상태로 계속 실행될 수 있습니다.

root@kitploit:~
cancelNotification(callingUid, callingPid, pkg, tag, id, 0, 0, false, userId,REASON_ERROR, null);}
  • MalServiceA

RemoteViews 객체를 생성할 때 Layout ID를 -1로 지정합니다. 이는 분명히 유효하지 않은 값이므로 onNotificationError 콜백을 트리거할 수 있습니다.

root@kitploit:~
RemoteViews remoteViews = new RemoteViews(getPackageName(), -1);
  • CVE-2020-0108

ServiceRecord.java의 postNotification 메서드에서 알림 표시 중 예외 상황을 올바르게 처리하지 않고 예외를 사용자 프로그램에 던집니다.

root@kitploit:~
ams.crashApplication(appUid, appPid, localPackageName, -1,
                        "Bad notification for startForeground: " + e);
  • MalServiceB

유효하지 않은 Channel ID를 사용하여 Notification을 구성합니다.

root@kitploit:~
Notification notification = new NotificationCompat.Builder(this, "InvalidInvalidInvalid")

또한 두 서비스 모두 메인 스레드의 예외를 캐치해야 앱이 충돌하지 않습니다.

취약점 검증

  • 환경

Genymotion 에뮬레이터, Android 8.0, 2017년 9월 5일 패치

  • 백그라운드 녹음

MediaRecord를 사용하여 10초 녹음 구현

  • 지리적 위치 업데이트

LocationManager를 사용하여 획득

  • 비교

정상적인 포그라운드 서비스(NormalService)는 알림 표시줄에 상주 알림이 있지만, Poc에는 이 알림이 없습니다.

취약점 패치

onNotificationError 콜백에서 앱을 강제로 충돌시키고, postNotification 메서드의 예외 처리에서도 앱을 강제로 충돌시킵니다.

참고 문헌

[1] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-0108

[2] https://github.com/wrlu/vulnerabilities/tree/master/CVE-2020-0108

[3] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-0313

도구 다운로드