2024 ์ƒ๋ฐ˜๊ธฐ Hot๐Ÿ”ฅ๋ณด์•ˆ ์‚ฌ๊ฑด ์‚ฌ๊ณ 

2024๋…„ ์ƒ๋ฐ˜๊ธฐ ๊ฐ€์žฅ ํฐ ๋ณด์•ˆ ์‚ฌ๊ฑด๊ณผ ์ทจ์•ฝ์  ๋ถ„์„! LockBit ๋žœ์„ฌ์›จ์–ด ์กฐ์ง์˜ ์žฅ์•…(Operation Cronos), XZ ๋ฐฑ๋„์–ด, Telegram RCE, PDF.js XSS ์ทจ์•ฝ์  ๋“ฑ ์ฃผ์š” ๋ณด์•ˆ ์ด์Šˆ๋ฅผ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๋ณด์•ˆ ํŠธ๋ Œ๋“œ๋ฅผ ํ™•์ธํ•˜๊ณ , ์กฐ์ง์„ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€์‘ ๋ฐฉ์•ˆ์„ ์•Œ์•„๋ณด์„ธ์š”!
Frontier Squad's avatar
Jun 27, 2024
2024 ์ƒ๋ฐ˜๊ธฐ Hot๐Ÿ”ฅ๋ณด์•ˆ ์‚ฌ๊ฑด ์‚ฌ๊ณ 

๊ฐœ์š”

2024๋…„๋„ ์ƒ๋ฐ˜๊ธฐ์—๋„ ๋งŽ์€ ๋ณด์•ˆ ์‚ฌ๊ฑด/์‚ฌ๊ณ ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ํ‹ฐ์˜ค๋ฆฌ Security Assessment ํŒ€์˜ ์—ฐ๊ตฌ์›๋“ค์ด ์„ ์ •ํ•œ 2024๋…„ ์ƒ๋ฐ˜๊ธฐ์˜ ์ฃผ์š” ๋ณด์•ˆ ์‚ฌ๊ฑด/์‚ฌ๊ณ ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


1. LockBit Takedown

๊ฐ€์žฅ ๋จผ์ € ์‚ดํŽด๋ณผ ์‚ฌ๊ฑด์€ LockBit Takedown์ž…๋‹ˆ๋‹ค. LockBit์€ 2020๋…„์— ํ™œ๋™์„ ์‹œ์ž‘ํ•œ Ransomware as a Service(RaaS)๋กœ, ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋žœ์„ฌ์›จ์–ด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. LockBit ๋žœ์„ฌ์›จ์–ด์— ์˜ํ•ด ๋ฐœ์ƒํ•œ ํ”ผํ•ด์ž๋Š” 2,500๋ช…์ด ๋„˜๊ณ , ๊ทธ๋“ค์ด ์ž…์€ ํ”ผํ•ด์•ก์€ 1์–ต 5์ฒœ๋งŒ ๋‹ฌ๋Ÿฌ๊ฐ€ ๋„˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

LockBit์€ ๋žœ์„ฌ์›จ์–ด์˜ ์ด๋ฆ„์ด์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” LockBit ๋žœ์„ฌ์›จ์–ด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฒ”์ฃ„ ์กฐ์ง๋„ LockBit์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋ฒˆ 2023 Hot๐Ÿ”ฅ ๋ณด์•ˆ ์‚ฌ๊ฑด ์‚ฌ๊ณ  โ€” ์ƒ๋ฐ˜๊ธฐ์—์„œ๋„ ์†Œ๊ฐœํ•ด๋“œ๋ ธ๋˜ LockBit ๋žœ์„ฌ์›จ์–ด ์กฐ์ง์ด ๋ฐ”๋กœ ์ด LockBit ๋žœ์„ฌ์›จ์–ด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฒ”์ฃ„ ์กฐ์ง์ž…๋‹ˆ๋‹ค.

2024๋…„ 2์›” 20์ผ, ๋ฏธ๊ตญ๊ณผ ์˜๊ตญ์„ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ ๊ตญ๊ฐ€์˜ ์ˆ˜์‚ฌ ๊ธฐ๊ด€๋“ค์ด ๊ณต์กฐํ•˜์—ฌ LockBit ๋žœ์„ฌ์›จ์–ด ์กฐ์ง์„ ์žฅ์•…ํ–ˆ์Šต๋‹ˆ๋‹ค.

Operation Cronos๊ฐ€ ์ง„ํ–‰ํ•œ LockBit ์›น์‚ฌ์ดํŠธ ์žฅ์•…
Operation Cronos๊ฐ€ ์ง„ํ–‰ํ•œ LockBit ์›น์‚ฌ์ดํŠธ ์žฅ์•…

LockBit ์›น์‚ฌ์ดํŠธ ์žฅ์•… ํ›„ ์ •๋ณด ๊ณต๊ฐœ
LockBit ์›น์‚ฌ์ดํŠธ ์žฅ์•… ํ›„ ์ •๋ณด ๊ณต๊ฐœ

LockBit ์กฐ์ง์˜ ์ˆ˜์žฅ์œผ๋กœ ์•Œ๋ ค์ง„ LockBitSupp์€ ์ž…์žฅ๋ฌธ์—์„œ PHP 8.1.2 ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์€ ์„œ๋ฒ„๊ฐ€ ํƒˆ์ทจ๋˜์—ˆ๋‹ค๊ณ  ๋ฐํžˆ๋ฉฐ, ์ˆ˜์‚ฌ ๊ธฐ๊ด€๋“ค์ด CVE-2023โ€“3824 ๋˜๋Š” 0-day ๊ณต๊ฒฉ์„ ์‚ฌ์šฉํ–ˆ์„ ๊ฐ€๋Šฅ์„ฑ์„ ์ œ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.

CVE-2023โ€“3824๋Š” phar(PHP Archive) ํŒŒ์ผ์„ ์ฝ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์ทจ์•ฝ์ ์œผ๋กœ, phar ๋‚ด๋ถ€ ํŒŒ์ผ ์ด๋ฆ„์˜ ๊ธธ์ด์— ๋Œ€ํ•œ ๊ฒ€์ฆ์ด ๋ฏธํกํ•˜์—ฌ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น CVE์˜ PoC๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$phar = new Phar('myarchive.phar');
$phar->startBuffering();
$phar->addFromString(str_repeat('A', PHP_MAXPATHLEN - 1).'B', 'This is the content of the file.');
$phar->stopBuffering();
?>
$handle = opendir("phar://./myarchive.phar");
$x = readdir($handle);
closedir($handle);
var_dump($x);
?>

LockBitSupp์— ๋”ฐ๋ฅด๋ฉด, ์ˆ˜์‚ฌ ๊ธฐ๊ด€์€ ์ด๋ฒˆ ์žฅ์•…์„ ํ†ตํ•ด ์›น ์„œ๋ฒ„์˜ ์ „์ฒด ์†Œ์Šค ์ฝ”๋“œ์™€ LockBit ์ „์ฒด ๋ณตํ˜ธํ™” ํ‚ค์˜ 2.5%์— ํ•ด๋‹นํ•˜๋Š” ์•ฝ 1,000๊ฐœ์˜ ๋ณตํ˜ธํ™” ํ‚ค๋ฅผ ํš๋“ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์ด๋Ÿฌํ•œ ์„ฑ๊ณผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  LockBit์€ 5์ผ ๋งŒ์— ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณต๊ตฌํ•˜๊ณ  ํ™œ๋™์„ ์žฌ๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

LockBitSupp์˜ ์ •์ฒด์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฏธ๊ตญ ๊ตญ๋ฌด๋ถ€๋Š” LockBitSupp์˜ ์ •์ฒด๋ฅผ ๋Ÿฌ์‹œ์•„ ๊ตญ์ ์˜ Dmitry Yuryevich Khoroshev๋ผ๊ณ  ๋ฐํžˆ๋ฉฐ, ์ตœ๋Œ€ ์ฒœ๋งŒ ๋‹ฌ๋Ÿฌ(ํ•œํ™” ์•ฝ 139์–ต์›)์˜ ํ˜„์ƒ๊ธˆ์„ ์ œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, Khoroshev๋Š” Click Here ํŒŸ์บ์ŠคํŠธ์™€์˜ ์ธํ„ฐ๋ทฐ์—์„œ ์ž์‹ ์ด LockBitSupp์ด ์•„๋‹ˆ๋ผ๊ณ  ์ฃผ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ดํ›„ FBI๋Š” 2024๋…„ ๋ณด์Šคํ„ด ์‚ฌ์ด๋ฒ„ ๋ณด์•ˆ ์ปจํผ๋Ÿฐ์Šค์—์„œ Khoroshev๊ฐ€ LockBit์˜ ์ˆ˜์žฅ์ž„์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋ฐํžˆ๊ณ , ์ž์‹ ๋“ค์ด 7,000๊ฐœ์˜ ๋ณตํ˜ธํ™” ํ‚ค๋ฅผ ํ™•๋ณดํ–ˆ๋‹ค๊ณ  ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค.

๋žœ์„ฌ์›จ์–ด ์กฐ์ง ์žฅ์•…์„ ์œ„ํ•œ ์ˆ˜์‚ฌ ๊ธฐ๊ด€์˜ ๋…ธ๋ ฅ์ด ์žˆ์—ˆ์ง€๋งŒ, LockBit์ด ์„œ๋ฒ„๋ฅผ ์žฅ์•…๋‹นํ•œ ๋’ค์—๋„ ๋ฐ”๋กœ ํ™œ๋™์„ ์žฌ๊ฐœํ•œ ๋งŒํผ, ๊ธฐ์—…/๊ธฐ๊ด€/๊ฐœ์ธ์€ ๋žœ์„ฌ์›จ์–ด ๊ณต๊ฒฉ์— ๊ณ„์†ํ•ด์„œ ๋Œ€๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐฑ์—…ํ•˜๊ณ  ํ™˜๊ฒฝ์„ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ๋žœ์„ฌ์›จ์–ด ๊ณต๊ฒฉ์˜ ํ”ผํ•ด๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๊ธฐ์ ์ธ ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ์‚ฌ์šฉ์ž์˜ ์ฃผ์˜๊ฐ€ ๋žœ์„ฌ์›จ์–ด ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ์ตœ์„ ์˜ ๋ฐฉ์–ด์ž…๋‹ˆ๋‹ค.

Reference


2. XZ Backdoor

๋‹ค์Œ์œผ๋กœ ์‚ดํŽด๋ณผ ์‚ฌ๊ฑด์€ XZ Backdoor์ž…๋‹ˆ๋‹ค. XZ Backdoor๋Š” XZ ํ”„๋กœ์ ํŠธ์˜ ๋ฉ”์ธํ…Œ์ด๋„ˆ ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ”„๋กœ์ ํŠธ์— ๋ฐฑ๋„์–ด๋ฅผ ์‹ฌ์—ˆ๋˜ ์‚ฌ๊ฑด์œผ๋กœ, 2024๋…„ ์ƒ๋ฐ˜๊ธฐ์— ๊ฐ€์žฅ ์ด์Šˆ๊ฐ€ ๋˜์—ˆ๋˜ ๋ณด์•ˆ ์‚ฌ๊ฑด/์‚ฌ๊ณ ์ž…๋‹ˆ๋‹ค.

XZ๋Š” ์œ ๋‹‰์Šค ๋ฐ ์œˆ๋„์šฐ ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์••์ถ• ์œ ํ‹ธ๋ฆฌํ‹ฐ๋กœ, LZMA2 ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋†’์€ ์••์ถ•๋ฅ ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค. XZ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ๋งŽ์€ ์ด์šฉ์ž๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ ๋„๊ตฌ์˜€๊ธฐ์— ์ด๋ฒˆ ๋ฐฑ๋„์–ด๋Š” ํฐ ์ด์Šˆ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฑ๋„์–ด๋ฅผ ์‹ฌ์€ ๋ฉ”์ธํ…Œ์ด๋„ˆ๋Š” Jia Tan(JiaT75)์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. Jia Tan์€ 2021๋…„๋ถ€ํ„ฐ XZ ํ”„๋กœ์ ํŠธ์— ํŒจ์น˜๋ฅผ ์ œ์ถœํ•˜๋ฉฐ ๊ธฐ์—ฌํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ๊พธ์ค€ํžˆ ํŒจ์น˜๋ฅผ ๋ณด๋‚ด๋ฉฐ ์‹ ๋ขฐ๋ฅผ ์Œ“์•˜๊ณ , 2023๋…„ 1์›”์— Lasse Collin์œผ๋กœ๋ถ€ํ„ฐ ๋ฉ”์ธํ…Œ์ด๋„ˆ ๊ถŒํ•œ์„ ๋ถ€์—ฌ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ดํ›„ Jia Tan์€ ํ”„๋กœ์ ํŠธ์—์„œ ๋” ํฐ ์—ญํ• ์„ ๋งก๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ์ด ์‹œ์ ๋ถ€ํ„ฐ ๋ฐฑ๋„์–ด๋ฅผ ๊ต๋ฌ˜ํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธ์— ์ถ”๊ฐ€ํ•˜๊ณ , ๋ฆฌ๋ˆ…์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋ฆด๋ฆฌ์ฆˆ ์—…๋ฐ์ดํŠธ๋ฅผ ์žฌ์ด‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ์— ๋ฐํ˜€์ง„ XZ ๋ฐฑ๋„์–ด๋Š” XZ Utils 5.6.0/5.6.1 ๋ฒ„์ „์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์กŒ์Šต๋‹ˆ๋‹ค(์ฐธ๊ณ : CVE-2024โ€“3094). ๋ฐฑ๋„์–ด๋ฅผ ์ด์šฉํ•˜๋ฉด, sshd์—์„œ ์‚ฌ์šฉํ•˜๋Š” RSA_public_decrypt ํ•จ์ˆ˜๋ฅผ ํ•˜์ด์žฌํ‚นํ•˜์—ฌ sshd ์„œ๋น„์Šค์˜ ์ธ์ฆ์„œ ์ธ์ฆ์„ ์šฐํšŒํ•˜๊ณ  ์›๊ฒฉ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ๋„์–ด๋Š” ์ •๊ตํ•˜๊ณ  ๋ณต์žกํ•˜๊ฒŒ ๋‚œ๋…ํ™”๋˜์–ด ์ค€๋น„์— ์˜ค๋žœ ์‹œ๊ฐ„์ด ํ•„์š”ํ–ˆ์„ ๊ฒƒ์ด๋ผ๋Š” ์ถ”์ •์ด ์žˆ์—ˆ๋Š”๋ฐ, ์‹ค์ œ๋กœ ๊ณต๊ฒฉ์ž๊ฐ€ ํ•ด๋‹น ๋ฐฑ๋„์–ด๋ฅผ ํ”„๋กœ์ ํŠธ์— ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œ 2๋…„์˜ ์ค€๋น„๋ฅผ ํ•œ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ๋ฐฑ๋„์–ด์˜ ์ •๊ตํ•จ ๋•Œ๋ฌธ์—, Jia Tan์˜ ๊ณ„์ •์ด ํƒˆ์ทจ๋˜์—ˆ๊ฑฐ๋‚˜, Jia Tan ํ˜ผ์ž๊ฐ€ ์•„๋‹Œ ๋‹จ์ฒด๊ฐ€ ์ด ๋ฐฑ๋„์–ด ์•…์„ฑ์ฝ”๋“œ๋ฅผ ์ค€๋น„ํ–ˆ์„ ๊ฐ€๋Šฅ์„ฑ๋„ ์ œ๊ธฐ๋œ ๋ฐ” ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฑ๋„์–ด๋Š” 2024๋…„ 3์›” 29์ผ Microsoft์˜ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด Andres Freund๊ฐ€ ๋งˆ์ดํฌ๋กœ๋ฒค์น˜๋งˆํ‚น์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ค‘ ๋ฐœ๊ฒฌํ•˜์—ฌ ์ œ๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. Andres๋Š” ๋งˆ์ดํฌ๋กœ๋ฒค์น˜๋งˆํ‚น์„ ํ†ตํ•ด sshd ํ”„๋กœ์„ธ์Šค์˜ CPU ์‚ฌ์šฉ๋Ÿ‰์ด ๋†’์€ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ๊ณ , liblzma ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ”„๋กœํŒŒ์ผ๋ง์„ ํ†ตํ•ด CPU ์‹œ๊ฐ„์˜ ๋Œ€๋ถ€๋ถ„์ด ๋ฐฑ๋„์–ด๊ฐ€ ์ˆจ๊ฒจ์ ธ ์žˆ๋˜ liblzma ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

XZ์— ๋ฐฑ๋„์–ด๊ฐ€ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ๋ฐํ˜€์ง„ ์ดํ›„, ๋งŽ์€ ํ•ด์ปค ๋ฐ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ•ด๋‹น ์•…์„ฑ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค. thesamesam์€ ์ž์‹ ์˜ gist์— XZ ๊ด€๋ จ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ฆฌํ•˜์—ฌ ๊ณต์œ ํ•˜์˜€๊ณ , ํ•ด๋‹น ๊ธ€์„ ํ†ตํ•ด ์„ธ๊ณ„์˜ ํ•ด์ปค๋“ค๊ณผ ๋ถ„์„ ๊ณผ์ •์„ ๊ณต์œ ํ•œ ๋•์— XZ ๋ฐฑ๋„์–ด๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, knownsec 404 team์„ ๋น„๋กฏํ•œ ์—ฌ๋Ÿฌ ๋งค์ฒด์—์„œ XZ 5.6.0/5.6.1 ๋ฒ„์ „์— ์‚ฝ์ž…๋œ ๋ฐฑ๋„์–ด์˜ ๋™์ž‘ ๊ณผ์ •์„ ๋ถ„์„ํ•œ ๋‚ด์šฉ์„ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” Thomas Roccia๊ฐ€ ๊ณต์œ ํ•œ XZ ์‚ฌ๊ฑด์„ ์„ค๋ช…ํ•˜๋Š” ์‚ฌ์ง„์ž…๋‹ˆ๋‹ค.

Summary post from Thomas Roccia
Summary post from Thomas Roccia

์œ„ ์‚ฌ์ง„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, m4/build-to-host.m4 ํŒŒ์ผ์„ ํ†ตํ•ด XZ 5.6.0/5.6.1 ๋ฒ„์ „์— ์•…์„ฑ ์ฝ”๋“œ๊ฐ€ ์‚ฝ์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํŒŒ์ผ์€ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋˜๋Š” ๋งคํฌ๋กœ๋กœ, ์•…์„ฑ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ๋Š” ํŠน์ˆ˜๊ฐ’ ๋งคํ•‘์„ ํ†ตํ•ด tests/files/bad-3-corrupt_lzma2.xz ํŒŒ์ผ์„ ๋ณตํ˜ธํ™”ํ•˜๋ฉฐ, ์ด ๊ณผ์ •์—์„œ ์•…์„ฑ ์ฝ”๋“œ๋Š” ๋ณตํ˜ธํ™”๋œ ํŒŒ์ผ์— ์‚ฝ์ž…๋˜์–ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ๋Š” test/files/good-large-compressed.lzma ํŒŒ์ผ์—์„œ ์ถ”์ถœ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ liblzma_la-crc64-fast.o ํŒŒ์ผ์˜ ์ปดํŒŒ์ผ ๋ฐ ๋งํ‚น ๊ณผ์ •์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” test/files/ ๋””๋ ‰ํ† ๋ฆฌ์— ์กด์žฌํ•˜๋Š” ํŒŒ์ผ๋“ค์˜ ์„œ๋ช…์„ ํ™•์ธํ•˜๊ณ , ํƒ์ง€๋œ ํŒŒ์ผ๋“ค์˜ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณ‘ํ•ฉํ•œ ํ›„, ๋ฐ”์ดํŠธ ๋งคํ•‘์„ ํ†ตํ•ด ๋ณตํ˜ธํ™”ํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”๋œ ๋ฐฑ๋„์–ด๋Š” m4/build-to-host.m4 ํŒŒ์ผ์—์„œ ์‹คํ–‰๋˜๋„๋ก ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

Identity Authentication Function RSA_public_decrypt
Identity Authentication Function RSA_public_decrypt

๊ณต๊ฒฉ์ž๋Š” ๋ฐฑ๋„์–ด์˜ ์€๋ฐ€ํ•œ ๋™์ž‘์„ ์œ„ํ•ด, sshd์—์„œ ์‚ฌ์šฉํ•˜๋Š” RSA_public_decrypt ํ•จ์ˆ˜๋ฅผ ํ•˜์ด์žฌํ‚นํ•˜๋Š” ๋ณต์žกํ•œ ๊ตฌํ˜„ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” XZ Utils ์†Œ์Šค ์ฝ”๋“œ์— ๋ฐฑ๋„์–ด๋ฅผ ์ˆจ๊ธฐ๊ณ , ์ปดํŒŒ์ผ ์Šคํฌ๋ฆฝํŠธ ์ˆ˜์ •์„ ํ†ตํ•ด ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ liblzma5.so ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋ฐฑ๋„์–ด ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ sshd ์‹œ์ž‘ ์‹œ liblzma5.so ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ„์ ‘์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ํ•˜์˜€๊ณ , IFUNC์™€ rtdl-audit ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ด์šฉํ•˜์—ฌ RSA_public_decrypt ํ•จ์ˆ˜์˜ ํ•˜์ด์žฌํ‚น์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ํ•ด๋‹น ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜์—ฌ, ์ธ์ฆ์„ ํ†ต๊ณผํ•œ ๊ฒฝ์šฐ ์›๊ฒฉ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ธ์ฆ ์„œ๋ช… ๊ฒ€์ฆ ๊ณผ์ •์— ์ƒ์„ฑํ•œ ๊ณต๊ฐœํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ, ๊ณต๊ฒฉ์ž๊ฐ€ ์ž์‹ ์˜ ๋น„๋ฐ€ํ‚ค๋กœ sshd ์ธ์ฆ์„ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

XZ ๋ฐฑ๋„์–ด์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ๋จผ์ € XZ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ๋ฐฑ๋„์–ด์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š” 5.6.0/5.6.1 ๋ฒ„์ „์ธ์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ์•ˆ์ •์ ์ธ ๋ฒ„์ „์œผ๋กœ ๋˜๋Œ๋ฆฌ๊ฑฐ๋‚˜ ๋ณด์•ˆ ํŒจ์น˜๊ฐ€ ์ ์šฉ๋œ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒค๋”์˜ ๋ณด์•ˆ ์ „๋ฌธ๊ฐ€๋“ค์€ ์ด๋ฒˆ ์ด์Šˆ์— ๋ณด๋‹ค ์ฒด๊ณ„์ ์œผ๋กœ ๋Œ€์‘ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํšŒ์‚ฌ์˜ ์ž์‚ฐ ๋ชฉ๋ก๋“ค์˜ ์ทจ์•ฝํ•œ ๋ฒ„์ „ ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ์กฐ์‚ฌํ•˜๊ณ , ์ƒํ™ฉ์— ๋งž๋Š” ์ ์ ˆํ•œ ์กฐ์น˜(์˜ˆ: ์‹ ์†ํ•œ ๋กค๋ฐฑ, ๋„คํŠธ์›Œํฌ ์ฐจ๋‹จ)๋ฅผ ์ทจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์‹œ์Šคํ…œ ๋กœ๊ทธ์™€ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์—ฌ ํ•ด๋‹น ์ด์Šˆ๊ฐ€ ์•…์šฉ์ด ๋œ ์ด๋ ฅ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ ์ด์Šˆ ์ด์ „์—๋„, ์˜คํ”ˆ์†Œ์Šค์— ๋ฐฑ๋„์–ด๋ฅผ ์‹ฌ์—ˆ๋˜ ์‚ฌ๋ก€๋Š” ๋งŽ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ, PHP Git ์ €์žฅ์†Œ(Repository)์— ๋ฐฑ๋„์–ด๋ฅผ ์‹ฌ์—ˆ๋˜ ์‚ฌ๊ฑด์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด์— ๋ฐฑ๋„์–ด ์•…์„ฑ ์ฝ”๋“œ๊ฐ€ ์‹ฌ์–ด์ง„ ๊ฒฝ์šฐ, ๊ณต๊ฒฉ์ž๋ฅผ ํฌํ•จํ•ด ํ•ด๋‹น ์•…์„ฑ ์ฝ”๋“œ์˜ ์กด์žฌ๋ฅผ ์•„๋Š” ๋ชจ๋“  ์ด์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ์— ๋ฌด๋‹จ์œผ๋กœ ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ถœํ•˜๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋‹ค์ˆ˜์˜ ๊ธฐ์—…์—์„œ ์ด์šฉํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค์ผ ๊ฒฝ์šฐ์—๋Š” ํ•˜๋‚˜์˜ ์ €์žฅ์†Œ์— ์‹ฌ์€ ๋ฐฑ๋„์–ด๊ฐ€ ๋‹ค์ˆ˜์˜ ๊ธฐ์—…์„ ๊ณต๊ฒฉํ•˜๋Š” ๊ณต๊ธ‰๋ง ๊ณต๊ฒฉ(Supply chain attack)์œผ๋กœ ์‰ฝ๊ฒŒ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋•Œ๋ฌธ์— ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ฐฑ๋„์–ด ๋ฌธ์ œ๋Š” ๊ทธ ํŒŒ๊ธ‰๋ ฅ๊ณผ ์‹ฌ๊ฐ์„ฑ์ด ๋งค์šฐ ๋†’์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์œ„ํ˜‘์€ ๋ชจ๋“  ์ด์šฉ์ž์—๊ฒŒ ํฐ ํ”ผํ•ด๋ฅผ ์ฃผ๊ณ , ํ•ด๋‹น ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ์‹ ๋ขฐ์„ฑ์„ ํฌ๊ฒŒ ํ›ผ์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์˜คํ”ˆ์†Œ์Šค ๋‹ด๋‹น์ž๋“ค์€ ๋ฉ”์ธํ…Œ์ด๋„ˆ๋ฅผ ๋น„๋กฏํ•œ ๊ด€๋ฆฌ์ž๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ์„ ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

XZ ๋ฐฑ๋„์–ด ์‚ฌ๊ฑด์€ ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด ๋ณด์•ˆ ๊ด€๋ฆฌ์˜ ์ค‘์š”์„ฑ์„ ์ผ๊นจ์›Œ์ฃผ๋Š” ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด์— ๋Œ€ํ•ด ์ตœ์‹  ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ๋ฅผ ์ง€์†์ ์œผ๋กœ ์ ์šฉํ•˜๊ณ , ์˜์‹ฌ์Šค๋Ÿฌ์šด ํ™œ๋™์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ์™€ ์„ค์ • ํŒŒ์ผ์„ ์ฒ ์ €ํžˆ ๊ฒ€ํ† ํ•˜์—ฌ ์•…์„ฑ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Reference


3. Telegram RCE

์Šค๋งˆํŠธํฐ์ด ๋ณดํŽธํ™”๋œ ํ›„, ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ฉ”์‹ ์ € ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(์ดํ•˜ ์•ฑ)์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ด์Šˆ๊ฐ€ ๋ฐœ๊ฒฌ๋œ Telegram์€ ์„ธ๊ณ„์—์„œ 4๋ฒˆ์งธ๋กœ ๋งŽ์€ ์ด์šฉ์ž(์•ฝ 9์–ต ๋ช…)๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์‹ ์ € ์•ฑ์ž…๋‹ˆ๋‹ค.

์˜ฌํ•ด 4์›”, X(ํŠธ์œ„ํ„ฐ)์—์„œ ์œˆ๋„์šฐ ์šฉ Telegram์—์„œ ์›๊ฒฉ ์ฝ”๋“œ ์‹คํ–‰(RCE)์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์˜์ƒ์ด ์˜ฌ๋ผ์™”์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ์˜์ƒ์€ ์œˆ๋„์šฐ์šฉ Telegram์˜ ์ฑ„ํŒ… ์ฐฝ์—์„œ ๋™์˜์ƒ์„ ๋ˆ„๋ฅด์ž ๊ณ„์‚ฐ๊ธฐ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ชจ์Šต์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜์ƒ์ด ์˜ฌ๋ผ์˜จ ํ›„, Telegram ์ธก์€ "๊ทธ๋Ÿฐ ์ทจ์•ฝ์ ์ด ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค"๋ฉฐ ๋™์˜์ƒ์ด ๊ฑฐ์ง“์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๊ณ  ๋ฐ˜๋ฐ•ํ–ˆ์Šต๋‹ˆ๋‹ค.

Telegram์˜ ํŠธ์œ—
Telegram์˜ ํŠธ์œ—

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ ๋‚ , XSS ํ•ดํ‚น ํฌ๋Ÿผ์— ํ•ด๋‹น ์ทจ์•ฝ์ ์˜ Proof of Concept (PoC)๊ฐ€ ๊ณต๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. PoC๋Š” ์†Œ์Šค์ฝ”๋“œ ์ƒ์˜ ์˜คํƒ€๋กœ ์ธํ•˜์—ฌ .pyzw ํŒŒ์ผ ์ „์†ก ์‹œ ๋ณด์•ˆ ๊ฒฝ๊ณ  ์ฐฝ์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ ์„ ์ด์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, .pyzw ํŒŒ์ผ์„ ์ „์†กํ•  ๋•Œ MIME type์„ video/mp4์œผ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋™์˜์ƒ์„ ๋ณด๋‚ธ ๊ฒƒ์ฒ˜๋Ÿผ ์œ„์žฅํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์˜คํƒ€๊ฐ€ ๋‚œ ์ฒ ์ž๋ฅผ ์ˆ˜์ •ํ•˜๋Š” git commit
์˜คํƒ€๊ฐ€ ๋‚œ ์ฒ ์ž๋ฅผ ์ˆ˜์ •ํ•˜๋Š” git commit

Telegram์€ ์˜คํƒ€๊ฐ€ ๋‚œ ๋ถ€๋ถ„์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์˜€๊ณ , ํ•ด๋‹น ์ทจ์•ฝ์ ์ด ๋ฐœํ˜„์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์—์„œ .pyzw ํŒŒ์ผ ์ „์†ก ์‹œ untrusted ํ™•์žฅ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํŒŒ์ผ์„ ๋ณด๋‚ด๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด ํŒจ์น˜๋Š” ํŒŒ์ผ์ด Python์—์„œ ์ž๋™ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด, ์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ์—ด ๊ฒƒ์ธ์ง€ ํ™•์ธํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ์— ์‚ดํŽด๋ณธ Telegram RCE๋Š” ๊ฐœ๋ฐœ์ž์˜ ์‚ฌ์†Œํ•œ ์‹ค์ˆ˜(์˜คํƒ€)๋กœ ์ธํ•˜์—ฌ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์˜คํƒ€๋Š” ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ํ”ํžˆ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ฐœ๋ฐœ์ž๋Š” ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์ž‘์„ฑํ•˜๊ณ  ์ฝ”๋“œ ๊ฒ€ํ†  ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฐ•ํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์‚ฌ์šฉ์ž๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค์—์„œ ์˜ค๋Š” ์‚ฌ์ง„, ๋™์˜์ƒ, ํŒŒ์ผ์„ ์—ด๊ฑฐ๋‚˜ ๋‹ค์šด๋กœ๋“œํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•˜๋ฉฐ, ๋ณด์•ˆ ๋ฌธ์ œ ์˜ˆ๋ฐฉ์„ ์œ„ํ•ด ์ •๊ธฐ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Reference


4. XSS in PDF.js

์ง€๋‚œ 2024๋…„ 5์›” 20์ผ Codean Labs์—์„œ PDF.js์˜ XSS ์ทจ์•ฝ์ (CVE-2024โ€“4367)์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. PDF.js๋Š” Mozilla Corporation์ด ์ฃผ๋„ํ•˜๊ณ  ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ, HTML5 canvas element๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PDF ๋ Œ๋”๋ง์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ํŒŒ์ด์–ดํญ์Šค์™€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, electron ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค์—์„œ PDF.js๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ์ทจ์•ฝ์ ์€ ํฐํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. PDF๋Š” ๋‹ค์ˆ˜์˜ ํฐํŠธ๋“ค์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด PDF ํ‘œ์ค€์— ์ •์˜๋œ ํฐํŠธ ์™ธ์˜ ํฐํŠธ๋“ค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ stream์œผ๋กœ ์ „๋‹ฌ ๋ฐ›๊ฑฐ๋‚˜, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด์„œ ์ „๋‹ฌ ๋ฐ›์•„ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด ํฐํŠธ๋ฅผ ๋ Œ๋”๋งํ•  ๊ฒฝ์šฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ์ „๋‹ฌ๋œ glyph๋ฅผ ํŽ˜์ด์ง€์— ๋ Œ๋”๋งํ•˜๋Š”๋ฐ, ์ด๋•Œ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด pre-compile๋œ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

// If we can, compile cmds into JS for MAXIMUM SPEED...
if (this.isEvalSupported && FeatureTest.isEvalSupported) {
  const jsBuf = [];
  for (const current of cmds) {
    const args = current.args !== undefined ? current.args.join(",") : "";
    jsBuf.push("c.", current.cmd, "(", args, ");\n");
  }
  // eslint-disable-next-line no-new-func
  console.log(jsBuf.join(""));
  return (this.compiledGlyphs[character] = new Function(
    "c",
    "size",
    jsBuf.join("")
  ));
}

์œ„ ์ฝ”๋“œ๋Š” ํŽ˜์ด์ง€์— ํฐํŠธ๋ฅผ ์ ์šฉํ•˜๊ธฐ ์ „์— ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ํ•จ์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด c(CanvasRenderingContext2D)๋ฅผ ํฌ๋งทํŒ…ํ•ฉ๋‹ˆ๋‹ค.

(function anonymous(c,size
) {
c.save();
c.transform(0.1,0,0,0.1,0,1);
c.scale(size,-size);
c.restore();
})

transform์—๋Š” PDF์—์„œ FontMatrix ๋ฐฐ์—ด๋กœ ์ „๋‹ฌ๋œ ํฐํŠธ์˜ glyph ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ์ด๋•Œ FontMatrix์— ๋ฌธ์ž์—ด์ด ์กด์žฌํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์ž„์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์˜ ์‚ฝ์ž…์ด ์ด๋ฃจ์–ด์ ธ ํฐํŠธ๊ฐ€ ์ ์šฉ๋˜๊ธฐ ์ „์— ์ž„์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

/FontMatrix [0.1 0 0 0.1 0 (1\);
debugger
//)]

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณต๊ฒฉ์ž๊ฐ€ ์œ„์™€ ๊ฐ™์€ FontMatrix๋ฅผ PDF์˜ ํฐํŠธ ์ •๋ณด์— ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ, pre-compile๋œ ํ•จ์ˆ˜์— debugger๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. PDF ๋ Œ๋”๋ง ๊ฒฐ๊ณผ๋กœ pre-compile๋œ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ ๋ชจ์Šต์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์กฐ์ž‘๋œ FontMatrix๊ฐ€ ํฌํ•จ๋œ PDF๋ฅผ ๋ Œ๋”๋งํ•˜์—ฌ pre-compile๋œ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ ๋ชจ์Šต
์กฐ์ž‘๋œ FontMatrix๊ฐ€ ํฌํ•จ๋œ PDF๋ฅผ ๋ Œ๋”๋งํ•˜์—ฌ pre-compile๋œ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ ๋ชจ์Šต

ํ•ด๋‹น ์ทจ์•ฝ์ ์€ ํ˜„์žฌ ํŒจ์น˜๊ฐ€ ์ด๋ฃจ์–ด์ ธ Firefoxโ‰ฅ126, Firefox ESRโ‰ฅ115.11, PDF.jsโ‰ฅ4.2.67์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜์กด์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, PDF.js์˜ wrapper ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์˜ˆ: react-pdf)์—์„œ๋„ ์ ์ ˆํ•œ ํŒจ์น˜๊ฐ€ ์ด๋ฃจ์–ด์กŒ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด, isEvalSupported ์˜ต์…˜์„ false๋กœ ์„ค์ •ํ•˜์—ฌ ์ทจ์•ฝํ•œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ์ทจ์•ฝ์ ์€ Akasec CTF์—์„œ ๋ฌธ์ œ๋กœ ์ถœ์ œ๋˜๊ธฐ๋„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ง์ ‘ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋ฉด์„œ, ์ทจ์•ฝ์ ์„ ํ™•์ธํ•˜๊ณ  ์ดํ•ดํ•˜๋Š”๋ฐ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Reference


Git์€ ๋ฆฌ๋ˆ…์Šค๋ฅผ ๊ฐœ๋ฐœํ•œ ๋ฆฌ๋ˆ„์Šค ํ† ๋ฅด๋ฐœ์Šค๊ฐ€ ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ์†Œ์Šค์ฝ”๋“œ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋งŒ๋“  ํ˜•์ƒ ๊ด€๋ฆฌ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ„์Šค ํ† ๋ฅด๋ฐœ์Šค๊ฐ€ 2์ฃผ๋งŒ์— ์™„์„ฑ์‹œ์ผฐ๋˜ Git์€ ๊ณ„์†๋œ ๋ฐœ์ „ ๊ฒฐ๊ณผ ํ˜„์žฌ ์ „ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ˜•์ƒ ๊ด€๋ฆฌ ๋„๊ตฌ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ด์œ ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋งŒ๋“  Git ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ๋ณต์ œ๋งŒ์œผ๋กœ ์ž„์˜์˜ ์•…์„ฑ ๋ช…๋ น์–ด ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๊ฐœ๋ฐœ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ํฐ ํ˜ผ๋ž€์ด ์ƒ๊ธธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ตœ๊ทผ ๋ฐœ๊ฒฌ๋œ CVE-2024โ€“32002 ์ทจ์•ฝ์ ์€ ํ•ด๋‹น ์œ„ํ—˜์ด ํ˜„์‹คํ™”๋œ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ์ทจ์•ฝ์ ์„ ์ด์šฉํ•˜๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ ์•…์˜์ ์œผ๋กœ ์กฐ์ž‘๋œ Git ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค์–ด, ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๋ฅผ git clone โ€” recurse-submodules ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณต์ œํ•  ๋•Œ Remote Code Execution (RCE) ์ทจ์•ฝ์ ์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ์ทจ์•ฝ์ ์€ Git์˜ ์„œ๋ธŒ๋ชจ๋“ˆ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ ๋ฐ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํŠน์„ฑ์„ ๊ต๋ฌ˜ํ•˜๊ฒŒ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ์„œ๋ธŒ๋ชจ๋“ˆ ๊ฒฝ๋กœ์™€ ๋™์ผํ•œ ์ด๋ฆ„์˜ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋งŒ๋“ค์–ด Git ์ž์ฒด์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” .git ๋””๋ ‰ํ† ๋ฆฌ์— ์ ‘๊ทผํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์•…์„ฑ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ Git ํ›…์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ทจ์•ฝ์ ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ผ์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ €์žฅ์†Œ ๋ณต์ œ ์ž‘์—…๋งŒ์œผ๋กœ๋„ ์‹œ์Šคํ…œ์„ ์œ„ํ—˜์— ๋…ธ์ถœ์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด ํŠนํžˆ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ์ž๋“ค์€ ํ•ญ์ƒ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ถœ์ฒ˜์˜ ์ €์žฅ์†Œ๋งŒ์„ ๋ณต์ œํ•ด์•ผ ํ•˜๋ฉฐ, Git ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น CVE์™€ Git ํŒจ์น˜๋ฅผ ๋ถ„์„ํ•œ Amal Murali์˜ ๊ธ€์—์„œ ์ƒ์„ธํ•œ ๋ถ„์„๊ณผ์ •๊ณผ ํ•จ๊ป˜ ์ทจ์•ฝ์  PoC๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” Github ์ €์žฅ์†Œ ๋งํฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Reference


6. Chrome & Safari XXE

XML external entity (XXE) ๊ณต๊ฒฉ์€ ์•…์˜์ ์œผ๋กœ ์กฐ์ž‘๋œ XML ์ž…๋ ฅ์„ XML ์ฒ˜๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ œ๊ณตํ•˜์—ฌ, XML ํŒŒ์„œ๊ฐ€ ๊ฐœ๋ฐœ์ž์˜ ์˜๋„์™€ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ์œ ๋„ํ•˜๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต XML์˜ external entity ๊ธฐ๋Šฅ์„ ์•…์šฉํ•˜์—ฌ ๊ณต๊ฒฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— XXE๋ผ๋Š” ์ด๋ฆ„์ด ๋ถ™์—ฌ์กŒ์Šต๋‹ˆ๋‹ค.

XML์—์„œ๋Š” entity๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ํŠน์ • ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ๋‹จ์ถ•์–ด ์ง€์ • ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

// XML ๋ฌธ์„œ ํƒ€์ž… ์ •์˜์— ์ž‘์„ฑ
<!ENTITY writer "someone@theori.io">
<!ENTITY copyright "Copyright Theori.">
// XML ๋ณธ๋ฌธ์— ์ž‘์„ฑ
<author>&writer; &copyright;</author>

XML์ด ํ•ด์„๋˜๋Š” ๊ณผ์ •์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด entity๊ฐ€ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.

<author>someone@theori.io Copyright Theori.</author>

XML์ด๋‚˜ XML์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์ธ HTML์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” <, >๋„ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋œ entity์ž…๋‹ˆ๋‹ค.

entity๋Š” ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ฌธ์„œ ํƒ€์ž… ์ •์˜์— ๋‹จ์ถ•์–ด๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜์—ฌ ์„ ์–ธํ•˜๋Š” internal entity์™€, ๋ฌธ์„œ ํƒ€์ž… ์ •์˜์— ์„ ์–ธ๋˜์–ด ์žˆ์ง€๋งŒ ๋‹จ์ถ•์–ด๋Š” ์™ธ๋ถ€์— ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š” external entity๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. external entity์˜ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// XML ๋ฌธ์„œ ํƒ€์ž… ์ •์˜์— ์ž‘์„ฑ
<!ENTITY writer โ€‹SYSโ€‹TEM "http://example.com/email">
// XML ๋ณธ๋ฌธ์— ์ž‘์„ฑ
<author>&writer;</author>

XML์ด ํ•ด์„๋˜๋Š” ๊ณผ์ •์—์„œ external entity๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— http://example.com/email๋กœ ์š”์ฒญ์„ ์ „์†กํ•˜์—ฌ ํ•ด๋‹น ๋‚ด์šฉ์„ ์ฝ์–ด ์ €์žฅํ•˜๊ณ , XML ๋ณธ๋ฌธ์˜ ๋‚ด์šฉ์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ http ํ”„๋กœํ† ์ฝœ ์™ธ์—๋„ file ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์œ„์น˜์˜ ํŒŒ์ผ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

XML์„ ํ•ด์„ํ•˜๋Š” ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์˜ ์ž„์˜ ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜, ์™ธ๋ถ€๋กœ ์ž„์˜ ์š”์ฒญ์„ ์ „์†กํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— XXE ๊ณต๊ฒฉ์€ ํ•œ ๋•Œ ์›น ์„œ๋ฒ„ ์žฅ์•…์— ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋˜ ํŒŒ๊ธ‰๋ ฅ์ด ๋†’์€ ์ทจ์•ฝ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ณด์•ˆ์˜ ์ค‘์š”์„ฑ์ด ์ปค์ง€๊ณ , ๊ฐœ๋ฐœ์ž๋“ค์˜ ๋Œ€์‘๊ณผ ๋”๋ถˆ์–ด XML ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‹จ์—์„œ XXE ์ทจ์•ฝ์ ๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์„ ์ œํ•œํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋ฉฐ ์–ด๋А ์ˆœ๊ฐ„๋ถ€ํ„ฐ ๋ฐœ์ƒ ๋นˆ๋„๊ฐ€ ๋งŽ์ด ์ค„์—ˆ๋‹ค๊ณ  ์•Œ๋ ค์ ธ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

CVE-2023โ€“4357, CVE-2023โ€“40415๋Š” ์ด๋Ÿฐ ์ƒ๊ฐ์„ ๋ฐ”๊พธ๊ฒŒ ํ•œ ์ทจ์•ฝ์ ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ XXE ๊ณต๊ฒฉ์€ ์›น ์„œ๋ฒ„๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ด๋ฃจ์–ด์ง€์ง€๋งŒ, ํ•ด๋‹น ์ทจ์•ฝ์ ๋“ค์€ ๊ฐ๊ฐ Chrome๊ณผ Safari๋ฅผ ๋Œ€์ƒ์œผ๋กœ XXE ๊ณต๊ฒฉ์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•˜๊ฒŒ ์ƒ๊ฐํ•ด๋ณด๋ฉด, ์›น๋ธŒ๋ผ์šฐ์ €๋Š” XML์„ ํ•ด์„ํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๋Š” ๋Œ€ํ‘œ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๊ธฐ์— XXE ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ๋ณด์•ˆ์— ๋Œ€ํ•œ ์—ฐ๊ตฌ์™€ ๊ฐœ์„ ์ด ์ด๋ฃจ์–ด์ง„ ์›น๋ธŒ๋ผ์šฐ์ €๋“ค์ด ์ด๋Ÿฐ ๊ธฐ๋ณธ์ ์ธ ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ๋งŽ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Igor Sak-Sakovskiy๊ฐ€ ๋ฐœ๊ฒฌํ•œ ์ด๋ฒˆ ์ทจ์•ฝ์ ๋“ค(CVE-2023โ€“4357, CVE-2023โ€“40415)์€ ์›น๋ธŒ๋ผ์šฐ์ € ์—ญ์‹œ XML์„ ํ•ด์„ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ธ ์ด์ƒ, XXE ์ทจ์•ฝ์ ์— ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

CVE-2023โ€“4357(Chrome)๊ณผ CVE-2023โ€“40415(Safari)๋Š” ๊ฐ๊ฐ Chrome๊ณผ Safari ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐœ๊ฒฌ๋œ XXE ์ทจ์•ฝ์ ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ์ทจ์•ฝ์ ๋“ค์€ XML์˜ ํ‘œํ˜„ ๋ฐฉ์‹์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” eXtensible Stylesheet Language (XSL)์„ ์ด์šฉํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐœ๊ฒฌ๋˜์—ˆ์œผ๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €์˜ XML ํŒŒ์‹ฑ ๊ณผ์ •์ด ์™ธ๋ถ€ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ ์ ˆํžˆ ์ œํ•œํ•˜์ง€ ์•Š์•„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ์ด๋ฅผ ์•…์šฉํ•˜์—ฌ ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Javascript๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋œ Chrome์—์„œ XXE ์ทจ์•ฝ์ ์„ ํ†ตํ•ด /etc/passwd ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ฝ์€ ๋ชจ์Šต
Javascript๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋œ Chrome์—์„œ XXE ์ทจ์•ฝ์ ์„ ํ†ตํ•ด /etc/passwd ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ฝ์€ ๋ชจ์Šต

์ด๋ฒˆ ๋ฐœ๊ฒฌ์€ XXE ๊ณต๊ฒฉ์ด ์—ฌ์ „ํžˆ ํ˜„์žฌ ์ง„ํ–‰ํ˜•์˜ ์œ„ํ˜‘์ด๋ฉฐ, ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ตœ์‹  ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด๋Š” ๋ณด์•ˆ ์ „๋ฌธ๊ฐ€๋“ค์—๊ฒŒ XXE ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ์ฃผ์˜์™€ ์ ๊ฒ€์˜ ํ•„์š”์„ฑ์„ ์ƒ๊ธฐ์‹œ์ผœ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

Igor Sak-Sakovskiy์˜ ๊ธ€์—์„œ ์ทจ์•ฝ์ ์„ ์ฐพ๊ณ ์ž ํ•œ ๋™๊ธฐ๋ถ€ํ„ฐ, ChatGPT์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด ์ž์‹ ์˜ ๊ฐ€์„ค๋“ค์— ๋Œ€ํ•œ PoC๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ฐœ์ „์‹œ์ผœ ๋‚˜๊ฐ„ ๊ณผ์ •๋“ค์„ ์ƒ์„ธํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Reference


๋งˆ์น˜๋ฉฐ

๋ณธ ํฌ์ŠคํŒ…์„ ํ†ตํ•ด 2024๋…„ ์ƒ๋ฐ˜๊ธฐ์— ๋ฐœ์ƒํ•œ ๋ณด์•ˆ ์‚ฌ๊ฑด/์‚ฌ๊ณ ๋ฅผ ๋‹ค๋ฃจ์–ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. 2024๋…„ ํ•˜๋ฐ˜๊ธฐ์—๋„ ํ‹ฐ์˜ค๋ฆฌ Security Assessment ํŒ€์€ ๊พธ์ค€ํ•œ ์‚ฌ๋ก€ ์กฐ์‚ฌ์™€ ๊ธฐ์ˆ  ์—ฐ๊ตฌ๋ฅผ ํ†ตํ•ด ์ฆ‰๊ฐ์ ์ธ ์œ„ํ˜‘๋ถ€ํ„ฐ ์ž ์žฌ์ ์ธ ์œ„ํ˜‘๊นŒ์ง€ ์„ ์ œ์ ์œผ๋กœ ๋Œ€์‘ํ•ด๋‚˜๊ฐˆ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.


About Theori Security Assessment

ํ‹ฐ์˜ค๋ฆฌ Security Assessment ํŒ€์€ ์‹ค์ œ ํ•ด์ปค๋“ค์˜ ์˜คํŽœ์‹œ๋ธŒ ๋ณด์•ˆ ๊ฐ์‚ฌ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ๊ณ ๊ฐ์˜ ์„œ๋น„์Šค์™€ ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ๋”์šฑ ์•ˆ์ „ํ•œ ์„ธ์ƒ์„ ์œ„ํ•ด ๋‚œ์ œ๊ธ‰ ์‚ฌ์ด๋ฒ„๋ณด์•ˆ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์„ ์ฆ๊ธฐ๋ฉฐ, ์˜คํŽœ์‹œ๋ธŒ ์‚ฌ์ด๋ฒ„๋ณด์•ˆ์˜ ๋ฆฌ๋”๋กœ์„œ, ๊ณต๊ฒฉ์ž๋ณด๋‹ค ํ•œ๋ฐœ ์•ž์„œ ๋Œ€์‘ํ•˜๊ณ  ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์—ฌ๊ฒจ์ง€๋Š” ๋ฌธ์ œ๋ฅผ ๊ธฐ์ˆ ์ค‘์‹ฌ์ ์œผ๋กœ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

Share article

๊ด€๋ จ ์ฝ˜ํ…์ธ 

See more posts

Theori ยฉ 2025 All rights reserved.