Android ๋ฏธ๋์ด ํ์ดํ๋ผ์ธ ๋ฐ ์ด๋ฏธ์ง ํ์ ์ ์ฉ
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
์ ๋ฌ: ๋ฉ์์ง ์ฑ โ MediaStore โ ํน๊ถ ํ์
ํ๋ OEM ๋น๋๋ โAIโ ๋๋ ๊ณต์ ๊ธฐ๋ฅ์ ์ํด ์ ๊ธฐ์ ์ผ๋ก MediaStore๋ฅผ ์ฌ๊ฒ์ํ๋ ๊ถํ ์๋ ๋ฏธ๋์ด ์ธ๋ฑ์๋ฅผ ์คํํฉ๋๋ค. 2025๋
4์ ํจ์น ์ด์ ์ Samsung ํ์จ์ด์์ com.samsung.ipservice๋ Quram (/system/lib64/libimagecodec.quram.so)์ ๋ก๋ํ๊ณ WhatsApp(๋๋ ๋ค๋ฅธ ์ฑ)์ด MediaStore์ ์ ์ฅํ ๋ชจ๋ ํ์ผ์ ์๋์ผ๋ก ํ์ฑํฉ๋๋ค. ์ค์ ๋ก ๊ณต๊ฒฉ์๋ IMG-*.jpg๋ก ์์ฅํ DNG๋ฅผ ์ ์กํ๊ณ ํผํด์๊ฐ โdownloadโ (1-click)๋ฅผ ๋๋ฅด๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฐ ๋ค์, ์ฌ์ฉ์๊ฐ ๊ฐค๋ฌ๋ฆฌ๋ฅผ ์ด์ง ์์๋ ๊ทธ ํน๊ถ ์๋น์ค๊ฐ ํ์ด๋ก๋๋ฅผ ํ์ฑํฉ๋๋ค.
$ file IMG-2025-02-10.jpeg
TIFF image data ...
$ exiftool IMG-2025-02-10.jpeg | grep "Opcode List"
Opcode List 1 : [opcode 23], [opcode 23], ...
ํต์ฌ ์์ง
- ์ ๋ฌ์ ์์คํ ๋ฏธ๋์ด ์ฌํ์ฑ(์ฑํ ํด๋ผ์ด์ธํธ๊ฐ ์๋๋ผ)์ ์์กดํ๋ฏ๋ก ํด๋น ํ๋ก์ธ์ค์ ๊ถํ(๊ฐค๋ฌ๋ฆฌ์ ๋ํ ์ ์ฒด ์ฝ๊ธฐ/์ฐ๊ธฐ ์ ๊ทผ, ์ ๋ฏธ๋์ด ์ถ๊ฐ ๋ฅ๋ ฅ ๋ฑ)์ ๊ณ์นํ๋ค.
- ๊ณต๊ฒฉ์๊ฐ ๋์์๊ฒ ๋ฏธ๋์ด ์ ์ฅ์ ์ ๋ํ๋ฉด
MediaStore๋ฅผ ํตํด ์ ๊ทผ ๊ฐ๋ฅํ ๋ชจ๋ ์ด๋ฏธ์ง ํ์(vision widgets, ๋ฐฐ๊ฒฝํ๋ฉด, AI ์ด๋ ฅ์ ๊ธฐ๋ฅ ๋ฑ)๊ฐ ์๊ฒฉ์ผ๋ก ๋๋ฌ ๊ฐ๋ฅํด์ง๋ค.
0-click DD+/EAC-3 ๋์ฝ๋ฉ ๊ฒฝ๋ก (Google Messages โ mediacodec sandbox)
ํ๋ ๋ฉ์์ง ์คํ์ ์ ์ฌ/๊ฒ์์ ์ํด audio๋ฅผ ์๋ ๋์ฝ๋ฉํ๊ธฐ๋ ํ๋ค. Pixel 9์์๋ Google Messages๊ฐ ์์ ๋ RCS/SMS ์ค๋์ค๋ฅผ ์ฌ์ฉ์๊ฐ ๋ฉ์์ง๋ฅผ ์ด๊ธฐ ์ ์ /vendor/lib64/libcodec2_soft_ddpdec.so ๋ด๋ถ์ **Dolby Unified Decoder (UDC)**์ ์ ๋ฌํ์ฌ 0-click ๊ณต๊ฒฉ ํ๋ฉด์ ๋ฏธ๋์ด ์ฝ๋ฑ์ผ๋ก ํ์ฅํ๋ค.
์ฃผ์ ํ์ฑ ์ ์ฝ
- ๊ฐ DD+ syncframe์ ์ต๋ 6๊ฐ์ ๋ธ๋ก์ ๊ฐ์ง๋ฉฐ; ๊ฐ ๋ธ๋ก์ ์ต๋
0x1FF๋ฐ์ดํธ์ ๊ณต๊ฒฉ์๊ฐ ์ ์ดํ๋ skip data๋ฅผ skip buffer๋ก ๋ณต์ฌํ ์ ์๋ค(ํ๋ ์ ๋น โ0x1FF * 6๋ฐ์ดํธ). - skip buffer๋ EMDF๋ฅผ ์ฐพ๊ธฐ ์ํด ์ค์บ๋๋ค:
syncword (0xX8)+emdf_container_length(16๋นํธ) + ๊ฐ๋ณ ๊ธธ์ด ํ๋.emdf_payload_size๋ ์ ํ ์๋variable_bits(8)๋ฃจํ๋ก ํ์ฑ๋๋ค. - EMDF ํ์ด๋ก๋ ๋ฐ์ดํธ๋ ํ๋ ์๋ณ ์ปค์คํ
โevo heapโ bump ํ ๋น๊ธฐ์์ ํ ๋น๋ ํ
emdf_container_length๋ก ์ ํ๋ ๋นํธ ๋ฆฌ๋๋ก๋ถํฐ ๋ฐ์ดํธ ๋จ์๋ก ๋ณต์ฌ๋๋ค.
์ ์ ์ค๋ฒํ๋ก โ ํ ์ค๋ฒํ๋ก ์์(primitive) (CVE-2025-54957)
ddp_udc_int_evo_malloc๋total_size += (8 - total_size) % total_size๋ฅผ ํตํดalloc_size+extra๋ฅผ 8๋ฐ์ดํธ ์ ๋ ฌํ์ง๋ง wrap detection ์์ด ์ํ๋๋ค.0xFFFFFFFFFFFFFFF9..FF๊ทผ์ฒ ๊ฐ๋ค์ AArch64์์ ์์total_size๋ก ์ถ์๋๋ค.- ๋ณต์ฌ ๋ฃจํ๋ ์ฌ์ ํ
emdf_payload_size์์ ์จ ๋ ผ๋ฆฌ์ payload_length๋ฅผ ์ฌ์ฉํ๋ฏ๋ก, ๊ณต๊ฒฉ์ ๋ฐ์ดํธ๊ฐ ์ถ์๋ ์ฒญํฌ๋ฅผ ๋์ด evo-heap ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์ด๋ค. - ์ค๋ฒํ๋ก ๊ธธ์ด๋ ๊ณต๊ฒฉ์๊ฐ ์ ํํ
emdf_container_length๋ก ์ ํํ ์ ํ๋๋ฉฐ; ์ค๋ฒํ๋ก ๋ฐ์ดํธ๋ ๊ณต๊ฒฉ์๊ฐ ์ ์ดํ๋ EMDF ํ์ด๋ก๋ ๋ฐ์ดํฐ๋ค. ์ฌ๋ฉ ํ ๋น๊ธฐ๋ ๊ฐ syncframe๋ง๋ค ๋ฆฌ์ ๋์ด ์ธ์ ์ฑ(adjacency)์ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ง๋ ๋ค.
Secondary read primitive
๋ง์ฝ emdf_container_length > skipl๋ผ๋ฉด EMDF ํ์ฑ์ ์ด๊ธฐํ๋ skip ๋ฐ์ดํธ๋ฅผ ๋์ด ์ฝ๋๋ค(OOB read). ๋จ๋
์ผ๋ก๋ zeros/known media๋ฅผ leaksํ์ง๋ง, ์ธ์ ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์ํ ํ์๋ ์์๋ ์์ญ์ ๋ค์ ์ฝ์ด ์ต์คํ๋ก์์ ๊ฒ์ฆํ ์ ์๋ค.
์ต์คํ๋ก์ ๋ ์ํผ
variable_bits(8)๋ฅผ ์ด์ฉํด ๋งค์ฐ ํฐemdf_payload_size๋ฅผ ๊ฐ๋ EMDF๋ฅผ ์ ์ํ์ฌ ํ ๋น๊ธฐ ํจ๋ฉ์ด ๋ํ๋์ด ์์ ์ฒญํฌ๋ก ๋ค์ด๊ฐ๋๋ก ํ๋ค.emdf_container_length์ ์ํ๋ ์ค๋ฒํ๋ก ๊ธธ์ด(โค ์ด skip ๋ฐ์ดํฐ ์์ฐ)๋ก ์ค์ ํ๊ณ ์ค๋ฒํ๋ก ๋ฐ์ดํธ๋ฅผ EMDF ํ์ด๋ก๋์ ๋ฃ๋๋ค.- ํ๋ ์๋ณ evo heap์ ์กฐ์ํ์ฌ ์์ ํ ๋น์ด ๋์ฝ๋์ static ๋ฒํผ(โ693 KB) ๋๋ ๋์ฝ๋ ์ธ์คํด์ค ๋น ํ ๋ฒ ํ ๋น๋๋ dynamic ๋ฒํผ(โ86 KB) ๋ด์ ๋ชฉํ ๊ตฌ์กฐ ์์ ์์นํ๋๋ก ๋ง๋ ๋ค.
- ์ ํ์ ์ผ๋ก
emdf_container_length > skipl์ ์ ํํด ์์ ํ skip ๋ฒํผ์์ ๋ฎ์ด์ด ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฝ์ ์ ์๋ค.
Quram์ DNG Opcode ์ธํฐํ๋ฆฌํฐ ๋ฒ๊ทธ
DNG ํ์ผ์ ์๋ก ๋ค๋ฅธ ๋์ฝ๋ ๋จ๊ณ์์ ์ ์ฉ๋๋ ์ธ ๊ฐ์ opcode ๋ฆฌ์คํธ๋ฅผ ํฌํจํ๋ค. Quram์ Adobe์ API๋ฅผ ๋ณต์ ํ์ง๋ง, Stage-3์ DeltaPerColumn (opcode ID 11) ํธ๋ค๋ฌ๋ ๊ณต๊ฒฉ์๊ฐ ์ ๊ณตํ plane ๊ฒฝ๊ณ๋ฅผ ์ ๋ขฐํ๋ค.
DeltaPerColumn์ ์คํจํ plane ๊ฒฝ๊ณ
- ๊ณต๊ฒฉ์๋ Stage-3 ์ด๋ฏธ์ง๊ฐ plane 0โ2(RGB)๋ง ๋
ธ์ถํจ์๋ ๋ถ๊ตฌํ๊ณ
plane=5125์planes=5123์ ์ค์ ํ๋ค. - Quram์
opcode_last_plane = image_planes + opcode_planes๋ฅผ ๊ณ์ฐํ๋ฉฐplane + count๋์ ์ฌ์ฉํ๊ณ , ๊ฒฐ๊ณผ plane ๋ฒ์๊ฐ ์ด๋ฏธ์ง ์์ ๋ง๋์ง ๊ฒ์ฌํ์ง ์๋๋ค. - ๋ฐ๋ผ์ ๋ฃจํ๋ ์์ ํ ์ ์ด ๊ฐ๋ฅํ ์คํ์
์ผ๋ก
raw_pixel_buffer[plane_index]์ ๋ธํ๋ฅผ ์์ฑํ๋ค(์: plane 5125 โ ์คํ์ 5125 * 2 bytes/pixel = 0x2800). ๊ฐ opcode๋ ๋์ ์์น์ 16๋นํธ ํ๋กํธ ๊ฐ(0x6666)์ ๋ํด ์ ํํ ํ OOB add primitive๋ฅผ ๋ง๋ ๋ค.
์ฆ๋ถ์ ์์ ์ฐ๊ธฐ๋ก ๋ณํํ๊ธฐ
- ์ต์คํ๋ก์์ ๋จผ์ 480๊ฐ์ ์๋ชป๋
DeltaPerColumn์ฐ์ฐ์ ์ฌ์ฉํด Stage-3QuramDngImage.bottom/right๋ฅผ ์์์์ผ ์ดํ opcode๋ค์ด ๊ฑฐ๋ํ ์ขํ๋ฅผ in-bounds๋ก ์ฒ๋ฆฌํ๊ฒ ๋ง๋ ๋ค. MapTableopcode(opcode 7)๋ ๊ทธ๋ฐ ๊ฐ์ง ๊ฒฝ๊ณ๋ฅผ ๋์์ผ๋ก ์ผ๋๋ค. ์ ์ฒด๊ฐ 0์ธ ์นํ ํ ์ด๋ธ ๋๋-Inf๋ธํ๋ฅผ ๊ฐ์งDeltaPerColumn์ ์ฌ์ฉํด ๊ณต๊ฒฉ์๋ ์์ ์์ญ์ 0์ผ๋ก ๋ง๋ ๋ค์ ์ถ๊ฐ ๋ธํ๋ฅผ ์ ์ฉํด ์ ํํ ๊ฐ์ ์ด๋ค.- opcode ๋งค๊ฐ๋ณ์๊ฐ DNG ๋ฉํ๋ฐ์ดํฐ ๋ด๋ถ์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ํ์ด๋ก๋๋ ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๋ ์์ญ๋ง ๊ฑด์ ์ฐ๊ธฐ๋ฅผ ์ธ์ฝ๋ฉํ ์ ์๋ค.
Scudo ํ์ ํ ์ ฐ์ดํ
Scudo๋ ํฌ๊ธฐ๋ณ๋ก ํ ๋น์ ๋ฒํทํํ๋ค. Quram์ ์ฐ์ฐํ ๋ค์ ๊ฐ์ฒด๋ค์ ๋์ผํ 0x30๋ฐ์ดํธ ์ฒญํฌ ํฌ๊ธฐ๋ก ํ ๋นํ์ฌ ๋์ผ ์์ญ์ ๋ฐฐ์น๋๋ค(ํ ์์์ 0x40๋ฐ์ดํธ ๊ฐ๊ฒฉ):
QuramDngImagedescriptors for Stage 1/2/3QuramDngOpcodeTrimBoundsand vendorUnknownopcodes (ID โฅ14, including ID 23)
์ต์คํ๋ก์์ ์ฒญํฌ๋ฅผ ๊ฒฐ์ ๋ก ์ ์ผ๋ก ๋ฐฐ์นํ๊ธฐ ์ํด ํ ๋น์ ์์ฐจ์ ์ผ๋ก ์กฐ์ํ๋ค:
- Stage-1
Unknown(23)opcode(20,000๊ฐ ํญ๋ชฉ)๊ฐ 0x30 ์ฒญํฌ๋ฅผ ์คํ๋ ์ดํ๊ณ ์ดํ ํด์ ๋๋ค. - Stage-2๋ ํด๋น opcode๋ค์ ํด์ ํ๊ณ ํด์ ๋ ์์ญ ์์ ์๋ก์ด
QuramDngImage๋ฅผ ๋ฐฐ์นํ๋ค. - 240๊ฐ์ Stage-2
Unknown(23)ํญ๋ชฉ์ด ํด์ ๋๊ณ , Stage-3๋ ์ฆ์ ์์ ์QuramDngImage์ ๋์ผ ํฌ๊ธฐ์ ์๋ก์ด raw pixel buffer๋ฅผ ํ ๋นํด ๊ทธ ์๋ฆฌ๋ฅผ ์ฌ์ฌ์ฉํ๋ค. - ์กฐ์๋
TrimBoundsopcode๊ฐ ๋ฆฌ์คํธ 3์์ ๋จผ์ ์คํ๋์ด Stage-2 ์ํ๋ฅผ ํด์ ํ๊ธฐ ์ ์ ๋ ๋ค๋ฅธ raw pixel buffer๋ฅผ ํ ๋นํจ์ผ๋ก์จ โraw pixel buffer โ QuramDngImageโ์ ์ธ์ ์ฑ์ ๋ณด์ฅํ๋ค. - ์ถ๊ฐ 640๊ฐ์
TrimBoundsํญ๋ชฉ์minVersion=1.4.0.1๋ก ํ์๋์ด dispatcher๊ฐ ๊ฑด๋๋ฐ์ง๋ง, ํด๋น ๊ฐ์ฒด๋ค์ ์ค์ ํ ๋น์ ์ ์ง๋์ด ๋์ค์ primitive ๋์์ด ๋๋ค.
์ด ์ฐ์ถ์ Stage-3 raw ๋ฒํผ๋ฅผ Stage-3 QuramDngImage ๋ฐ๋ก ์์ ๋ฐฐ์นํ๋ฏ๋ก, plane ๊ธฐ๋ฐ ์ค๋ฒํ๋ก๊ฐ ๋ฌด์์ ์ํ๋ฅผ ์ถฉ๋์ํค์ง ์๊ณ ๋์คํฌ๋ฆฝํฐ ๋ด๋ถ์ ํ๋๋ฅผ ๋ค์ง๋๋ค.
Vendor โUnknownโ Opcode๋ฅผ ๋ฐ์ดํฐ ๋ธ๋กญ์ผ๋ก ์ฌ์ฌ์ฉ
Samsung์ ๊ณต๊ธ์ ์ฒด ์ ์ฉ opcode ID(์: ID 23)์์ ์์ ๋นํธ๋ฅผ ์ค์ ํด ์ธํฐํ๋ฆฌํฐ์๊ฒ ๊ตฌ์กฐ์ฒด๋ฅผ allocateํ๋ ์คํ์ ๊ฑด๋๋ฐ๋๋ก ํ๋ค. ์ต์คํ๋ก์์ ๊ทธ๋ฐ ํด๋ฉด ๊ฐ์ฒด๋ค์ ๊ณต๊ฒฉ์๊ฐ ์ ์ดํ๋ ํ์ผ๋ก ์ ์ฉํ๋ค:
- Opcode ๋ฆฌ์คํธ 1๊ณผ 2์
Unknown(23)ํญ๋ชฉ๋ค์ ํ์ด๋ก๋ ๋ฐ์ดํธ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์ฐ์ ์คํฌ๋์นํจ๋๋ก ์ฌ์ฉ๋๋ค(raw ๋ฒํผ ๊ธฐ์ค ์คํ์ 0xf000์ JOP ์ฒด์ธ๊ณผ 0x10000์ ์ ๋ช ๋ น ๋ฑ). - ์ธํฐํ๋ฆฌํฐ๋ ๋ฆฌ์คํธ 3 ์ฒ๋ฆฌ ์์๋ ๊ฐ ๊ฐ์ฒด๋ฅผ opcode๋ก ์ทจ๊ธํ๊ธฐ ๋๋ฌธ์, ๋์ค์ ํ ๊ฐ์ฒด์ vtable์ ์ฅ์ ํ๋ ๊ฒ๋ง์ผ๋ก ๊ณต๊ฒฉ์ ๋ฐ์ดํฐ๋ฅผ ์คํํ ์ ์๋ค.
๊ฐ์ง MapTable ๊ฐ์ฒด ์ ์ ๋ฐ ASLR ์ฐํ
MapTable ๊ฐ์ฒด๋ TrimBounds๋ณด๋ค ํฌ์ง๋ง, ๋ ์ด์์ ์์์ด ์ผ์ด๋๋ฉด ํ์๊ฐ ์ถ๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ OOB๋ก ๊ธฐ๊บผ์ด ์ฝ๋๋ค:
- ์ ํ ์ฐ๊ธฐ ํ๋ฆฌ๋ฏธํฐ๋ธ๋ฅผ ์ฌ์ฉํด
TrimBounds์ vtable ํฌ์ธํฐ ์ผ๋ถ๋ฅผ ์ด์ํTrimBoundsvtable์ ํ์ 2๋ฐ์ดํธ๋ฅผMapTablevtable๋ก ๋งคํํ๋ ์กฐ์๋MapTable์นํ ํ ์ด๋ธ๋ก ๋ฎ์ด์ด๋ค. ์ง์๋๋ Quram ๋น๋ ๊ฐ์๋ ํ์ ๋ฐ์ดํธ๋ง ๋ค๋ฅด๋ฏ๋ก ๋จ์ผ 64K ๋ฃฉ์ ํ ์ด๋ธ๋ก 7๊ฐ ํ์จ์ด ๋ฒ์ ๊ณผ ๋ชจ๋ 4 KB ASLR ์ฌ๋ผ์ด๋๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค. TrimBoundsํ๋ ๋๋จธ์ง(top/left/width/planes)๋ฅผ ํจ์นํด ๊ฐ์ฒด๊ฐ ๋์ค์ ์คํ๋ ๋ ์ ํจํMapTable์ฒ๋ผ ๋์ํ๊ฒ ํ๋ค.- ์ ๋ก ์ฒ๋ฆฌ๋ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ง opcode๋ฅผ ์คํํ๋ค. ์นํ ํ
์ด๋ธ ํฌ์ธํฐ๊ฐ ์ค์ ๋ก ๋ค๋ฅธ opcode์ vtable์ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์ ์ถ๋ ฅ ๋ฐ์ดํธ๋
libimagecodec.quram.so๋๋ ๊ทธ GOT์ ์ ์ฐจ ์ฃผ์๋ค์ด leaked ๋๋ค. - ์ถ๊ฐ
MapTableํจ์ค๋ฅผ ์ ์ฉํด ๊ทธ 2๋ฐ์ดํธ leaks๋ฅผ__ink_jpeg_enc_process_image+64,QURAMWINK_Read_IO2+124,qpng_check_IHDR+624, libc์__system_property_get์ง์ ์ ๊ฐ์ ๊ฐ์ ฏ์ ํฅํ ์คํ์ ์ผ๋ก ๋ณํํ๋ค. ๊ณต๊ฒฉ์๋ ๋ค์ดํฐ๋ธ ๋ฉ๋ชจ๋ฆฌ ์ ์ถ API ์์ด๋ ์คํ๋ ์ด๋ opcode ์์ญ ์์์ ์ ์ฒด ์ฃผ์๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ๊ตฌ์ฑํ๋ค.
JOP โ system() ์ ํ ํธ๋ฆฌ๊ฑฐ
๊ฐ์ ฏ ํฌ์ธํฐ์ ์ ๋ช ๋ น์ด opcode ์คํ๋ ์ด ๋ด๋ถ์ ์ค๋น๋๋ฉด:
- ๋ง์ง๋ง
DeltaPerColumn์ฐ๊ธฐ ๋ฌผ๊ฒฐ์ด Stage-3QuramDngImage์ ์คํ์ 0x22์0x0100์ ๋ํ์ฌ raw ๋ฒํผ ํฌ์ธํฐ๋ฅผ 0x10000๋งํผ ์ด๋์ํค๊ณ ์ด์ ๊ณต๊ฒฉ์ ๋ช ๋ น ๋ฌธ์์ด์ ์ฐธ์กฐํ๊ฒ ํ๋ค. - ์ธํฐํ๋ฆฌํฐ๋ 1040๊ฐ์
Unknown(23)opcode์ ๊ผฌ๋ฆฌ๋ฅผ ์คํํ๊ธฐ ์์ํ๋ค. ์ฒซ ๋ฒ์งธ ์์๋ ํญ๋ชฉ์ vtable์ด ์คํ์ 0xf000์ ์์กฐ ํ ์ด๋ธ๋ก ๊ต์ฒด๋์ดQuramDngOpcode::aboutToApply๊ฐ ๊ฐ์ง ํ ์ด๋ธ์ 4๋ฒ์งธ ํญ๋ชฉ์ธqpng_read_data๋ฅผ ํด์ํ๋ค. - ์ฐ๊ฒฐ๋ ๊ฐ์ ฏ๋ค์ ๋ค์์ ์ํํ๋ค:
QuramDngImageํฌ์ธํฐ๋ฅผ ๋ก๋ํ๊ณ raw ๋ฒํผ ํฌ์ธํฐ๋ฅผ ๊ฐ๋ฆฌํค๋๋ก 0x20์ ๋ํ๊ณ , ์ญ์ฐธ์กฐํ์ฌ ๊ฒฐ๊ณผ๋ฅผx19/x0์ ๋ณต์ฌํ ๋ค์system์ผ๋ก ์ฌ์์ฑ๋ GOT ์ฌ๋กฏ์ ํตํด ์ ํํ๋ค. raw ๋ฒํผ ํฌ์ธํฐ๊ฐ ์ด์ ๊ณต๊ฒฉ์ ๋ฌธ์์ด๊ณผ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ต์ข ๊ฐ์ ฏ์com.samsung.ipservice๋ด์์system(<shell command>)๋ฅผ ์คํํ๋ค.
ํ ๋น๊ธฐ(allocator) ๋ณํ์ ๋ํ ์ฃผ์
๋ ๊ฐ์ง ํ์ด๋ก๋ ๊ณ์ด์ด ์กด์ฌํ๋ค: jemalloc์ฉ์ผ๋ก ์กฐ์ ๋ ๊ฒ๊ณผ scudo์ฉ. ์ด๋ค์ ์ธ์ ์ฑ์ ๋ฌ์ฑํ๊ธฐ ์ํด opcode ๋ธ๋ก์ ์์๋ฅผ ๋ค๋ฅด๊ฒ ํ์ง๋ง ๋์ผํ ๋ ผ๋ฆฌ์ ํ๋ฆฌ๋ฏธํฐ๋ธ(DeltaPerColumn ๋ฒ๊ทธ โ MapTable zero/write โ bogus vtable โ JOP)๋ฅผ ๊ณต์ ํ๋ค. Scudo์ quarantine ๋นํ์ฑํ๋ 0x30๋ฐ์ดํธ freelist ์ฌ์ฌ์ฉ์ ๊ฒฐ์ ๋ก ์ ์ผ๋ก ๋ง๋ค๊ณ , jemalloc์ tile/subIFD ํฌ๊ธฐ ์กฐ์ ์ผ๋ก size-class๋ฅผ ์ ์ดํ๋ค.
์ฐธ๊ณ ์๋ฃ
- Project Zero โ A look at an Android ITW DNG exploit
- Project Zero โ Pixel 0-click: CVE-2025-54957 in Dolby UDC
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


