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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2019-2107 — CVE-2019-2107에 대한 개념 증명 익스플로잇으로, 조작된 HEVC 비디오를 통해 Android 미디어 프레임워크에서 원격 코드 실행을 시연합니다. 크래시 분석 및 페이로드 개발 가이드를 포함합니다. | Kitploit
도구/GitHubGitHub/infiniteloopers/cve-2019-2107
Android SecurityVulnerability AnalysisExploitationFuzzingPayload DevelopmentRemote Access TrojanBinary Exploitation
GitHubinfiniteloopers/cve-2019-2107

CVE-2019-2107

CVE-2019-2107에 대한 개념 증명 익스플로잇으로, 조작된 HEVC 비디오를 통해 Android 미디어 프레임워크에서 원격 코드 실행을 시연합니다. 크래시 분석 및 페이로드 개발 가이드를 포함합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2019-2107

CVE-2019-2107

CVE-2019-2107 - 무섭게 보입니다. 아직도 Stagefright와 PNG 버그 취약점을 기억합니다. CVE-2019-2107을 사용하면 디코더/코덱이 mediacodec 사용자로 실행되며, 적절히 조작된 비디오(타일 활성화 - ps_pps->i1_tiles_enabled_flag)를 통해 RCE를 수행할 수 있습니다. 영향을 받는 코덱은 HVEC(일명 H.265 및 MPEG-H Part 2)입니다. #exploit #rce #android #stagefright #cve

대체 텍스트

추가 정보

LineageOS (Android):

root@kitploit:~
02-11 20:18:48.238   260   260 D FFmpegExtractor: ffmpeg detected media content as 'video/hevc' with confidence 0.08
02-11 20:18:48.239   260   260 I FFMPEG  : [hevc @ 0xb348f000] Invalid tile widths.
02-11 20:18:48.239   260   260 I FFMPEG  : [hevc @ 0xb348f000] PPS id out of range: 0
02-11 20:18:48.240   260   260 I FFMPEG  : [hevc @ 0xb348f000] Invalid tile widths.
02-11 20:18:48.240   260   260 I FFMPEG  : [hevc @ 0xb348f000] PPS id out of range: 0
02-11 20:18:48.240   260   260 I FFMPEG  : [hevc @ 0xb348f000] Error parsing NAL unit #5.
02-11 20:18:48.240   260   260 I FFMPEG  : [hevc @ 0xb348f000] Invalid tile widths.

mplayer (laptop)

root@kitploit:~
id: 0
[hevc @ 0x7f0bf58a7560]Decoding VPS
[hevc @ 0x7f0bf58a7560]Main profile bitstream
[hevc @ 0x7f0bf58a7560]Decoding SPS
[hevc @ 0x7f0bf58a7560]Main profile bitstream
[hevc @ 0x7f0bf58a7560]Decoding VUI
[hevc @ 0x7f0bf58a7560]Decoding PPS
[hevc @ 0x7f0bf58a7560]Invalid tile widths.
[hevc @ 0x7f0bf58a7560]Decoding SEI
[hevc @ 0x7f0bf58a7560]Skipped PREFIX SEI 5
[hevc @ 0x7f0bf58a7560]PPS id out of range: 0
[hevc @ 0x7f0bf58a7560]Error parsing NAL unit #5.
Error while decoding frame!

이 작업은 타일 너비가 허용된 것보다 클 때 중단됩니다: https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg/blob/ebf648d490448d511b5fe970d76040169e65ef74/libavcodec/hevc_ps.c#L1526

따라서 검사가 있습니다.

기본/구글 안드로이드에서는 VideoPlayer를 사용할 때 ffmpeg 대신 libhevc를 사용할 것 같습니다.

https://www.droidviews.com/enjoy-hevc-h-265-video-playback-on-android/

구글 코덱이 있습니다:

OMX.google.hevc.decoder

하지만 왜 충돌하지 않는지 궁금합니다....

이 조건을 트리거해야 하는 비디오(videopoc.mp4)를 첨부합니다:

root@kitploit:~
if (value >= ps_sps->i2_pic_wd_in_ctb - start)
+                        {
+                            return IHEVCD_INVALID_HEADER;
+                        }

아마 누군가 더 운이 좋을 수도 있습니다.

추가 정보 2

우후후.... 해냈습니다 :)

개념 증명은 hevc-crash-poc.mp4에 있으며, 다른 비디오는 안드로이드가 아닌 플레이어용입니다.

Hvec-"공포"가 가능합니다. 페이로드가 포함된 비디오를 시청하여 모바일을 장악할 수 있습니다. 제 예시에는 실제 페이로드를 포함하지 않았습니다.

root@kitploit:~
07-13 21:50:59.000  3351  3351 I /system/bin/tombstoned: received crash request for pid 24089
07-13 21:50:59.006 24089 24089 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
07-13 21:50:59.006 24089 24089 F DEBUG   : Build fingerprint: 'samsung/hero2ltexx/hero2lte:8.0.0/R16NW/G935FXXS4ESC3:user/release-keys'
07-13 21:50:59.006 24089 24089 F DEBUG   : Revision: '9'
07-13 21:50:59.006 24089 24089 F DEBUG   : ABI: 'arm64'
07-13 21:50:59.006 24089 24089 F DEBUG   : pid: 24089, tid: 24089, name: media.extractor  >>> mediaextractor <<<
07-13 21:50:59.006 24089 24089 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x7ccb800050
07-13 21:50:59.009 24089 24089 F DEBUG   :     x0   00000000ffffff36  x1   0000000000000000  x2   00000000000000f0  x3   0000000000000001
07-13 21:50:59.009 24089 24089 F DEBUG   :     x4   0000000000000001  x5   0000007ccb5df1b8  x6   0000007cc927363e  x7   0000007cc8e7bd04
07-13 21:50:59.009 24089 24089 F DEBUG   :     x8   0000000000004170  x9   0000000000004160  x10  00000000ffffffff  x11  0000007ccb7fbef0
07-13 21:50:59.010 24089 24089 F DEBUG   :     x12  0000007ccb5d3ce0  x13  000000000000001e  x14  0000000000000003  x15  0000000000000001
07-13 21:50:59.010 24089 24089 F DEBUG   :     x16  0000007cc99f5f50  x17  0000007ccb88885c  x18  0000007ccb566225  x19  0000007ccb562020
07-13 21:50:59.010 24089 24089 F DEBUG   :     x20  0000007ccb4f18a0  x21  0000007ccb468c6c  x22  0000000000000000  x23  0000000000000006
07-13 21:50:59.010 24089 24089 F DEBUG   :     x24  000000000000001e  x25  0000000000000094  x26  0000000000004160  x27  0000000000000001
07-13 21:50:59.010 24089 24089 F DEBUG   :     x28  0000007ccb55e750  x29  0000007fd6d39d90  x30  0000007cc99c4438
07-13 21:50:59.010 24089 24089 F DEBUG   :     sp   0000007fd6d39d20  pc   0000007cc99c44c4  pstate 0000000080000000
07-13 21:50:59.013 24089 24089 F DEBUG   : 
--

대체 텍스트

추가 정보 3

RCE(원격 명령 실행)를 얻기 위해 더 나아가고 싶다면

디버그 빌드가 포함된 LineageOS ROM을 구하는 것부터 시작하겠습니다(루팅된 대상 전화기가 없으면 디스어셈블리로 인해 골치 아플 수 있으며, 작업하기가 훨씬 쉬울 것입니다), 가능하면 메모리 할당자를 jemalloc으로 변경합니다(최신 모바일을 대상으로 하기 위해).

BoardConfig에서 설정할 수 있습니다:

device/samsung/msm8226-common/BoardConfigCommon.mk

root@kitploit:~
# Memory
#MALLOC_IMPL := dlmalloc
MALLOC_IMPL := jemalloc

제 삼성 모바일은 jemalloc을 사용하고 있었습니다. 더 오래된/새로운 모바일에 대해서는 확실하지 않습니다. 아마도 동일하기를 바랍니다.

jemalloc/dlmalloc에 대한 추가 정보: https://blog.nsogroup.com/a-tale-of-two-mallocs-on-android-libc-allocators-part-1-dlmalloc/

여기서는 libavcodec.so에서 검사를 제거했습니다.

삼성 S3 Neo+에서 LineageOS 7.1.2로 테스트

보시다시피 미디어 플레이어가 처리되지 않은 이벤트로 충돌/사라졌습니다 (MediaPlayer: mediaplayer went away with unhandled events). 네이티브로 충돌하지 않는 이유는 확실하지 않습니다. 여기서 목표는 실행 흐름을 장악하는 것입니다. 행운을 빕니다!

root@kitploit:~
02-25 16:44:15.008  2954  2954 I art     : Explicit concurrent mark sweep GC freed 4988(521KB) AllocSpace objects, 1(40KB) LOS objects, 25% free, 6MB/8MB, paused 484us total 43.471ms
02-25 16:44:15.011  2954  2954 I art     : Starting a blocking GC Explicit
02-25 16:44:15.046  2954  2954 I art     : Explicit concurrent mark sweep GC freed 435(17KB) AllocSpace objects, 0(0B) LOS objects, 24% free, 6MB/8MB, paused 523us total 34.700ms
02-25 16:44:15.083  2954  2954 W MediaPlayer: mediaplayer went away with unhandled events
도구 다운로드