hahwul

Offensive Security Engineer, Rubyist/Crystalist/Gopher and H4cker

Posts

Malicious code in xz/liblzma ๐Ÿ˜ฑ

1 min read

๋ฐ”๋กœ ์–ด์ œ ์••์ถ• ์ฒ˜๋ฆฌ๋ฅผ xz ํŒจํ‚ค์ง€์˜ upstream tarballs์—์„œ ์•…์˜์ ์ธ ๋™์ž‘์ด ํ™•์ธ๋˜์–ด ์ด์Šˆ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๋ก ์€ xz ๋‚ด Malicious code๊ฐ€ ์‚ฝ์ž…๋˜์—ˆ๊ณ  ์ด๋กœ ์ธํ•ด ๋งŽ์€ ์‹œ์Šคํ…œ์ด ์˜ํ–ฅ๋ฐ›์„ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. CVE-2024-3093๋ฅผ ํ• ๋‹น๋ฐ›์€ ์ด ์ด์Šˆ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค.

Smuggling with JSON

2 min read

JSON์€ YAML๊ณผ ํ•จ๊ป˜ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํฌ๋งท ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. K:V ํ˜•ํƒœ์˜ ๋‹จ์ˆœํ•œ ๊ตฌ์„ฑ์ด์ง€๋งŒ, JSON์˜ ํŠน์„ฑ์„ ์ด์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆจ๊ธฐ๊ณ  Application์˜ ์ž˜๋ชป๋œ ๋™์ž‘์„ ์œ ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Preventing LLM Prompt Leak

1 min read

ChatGPT๋Š” ์‚ฌ์šฉ์ž ๊ฐœ๊ฐœ์ธ์ด Bot์„ ๋งŒ๋“ค๊ณ  ์„œ๋น„์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณต๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋„ ์ œ ํŽธ์˜๋ฅผ ์œ„ํ•ด ๋ช‡๊ฐ€์ง€ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋„ˆ๋ฌด๋‚˜๋„ ์‰ฌ์šด ๋ฐฉ๋ฒ•์œผ๋กœ Prompt๋ฅผ ์ฝ์–ด๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋„ค์š”.

Prompt Injection via Ascii Art

1 min read

LLM ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค์—์„  Prompt Injection๊ณผ ๊ฐ™์€ LLM Attack์„ ๋ฐฉ์–ด, ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ณดํ˜ธ ๋กœ์ง์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ๊นจ๊ธฐ ์œ„ํ•ด์„œ ๋…์ฐฝ์ ์ธ ๋ฐฉ์‹์˜ Prompt๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

PQ3 and PQC ๐Ÿ—๏ธ

2 min read

Apple์—์„œ ์กฐ๋งŒ๊ฐ„ iMessage์— PQ3๋ผ๋Š” ์•”ํ˜ธํ™” ํ”„๋กœํ† ์ฝœ์„ ์ ์šฉํ•  ์˜ˆ์ •์ด๋ผ๊ณ  ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค.

Do you need a config? Now, Pkl

1 min read

์ตœ๊ทผ์— Apple์ด ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋˜ Configuration language๋ฅผ ์˜คํ”ˆ์†Œ์Šค๋กœ ๊ณต๊ฐœํ—€์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ Pkl(ํ”ผํด)์ธ๋ฐ์š”, ๊ณผ์—ฐ Pkl์€ JSON๊ณผ YAML๊ณผ ํ•จ๊ป˜ Config๊ณ„์˜ ๋Œ€ํ‘œ ์ฃผ์ž๊ฐ€ ๋  ์ˆ˜ ์žˆ์„๊นŒ์š”?

Crystal-Lang is โค๏ธ

2 min read

์ €๋Š” ์ตœ๊ทผ์— Crystal-lang์„ ์ฆ๊ธฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ํ† ์ด ํ”„๋กœ์ ํŠธ๋ถ€ํ„ฐ Noir๋ž€ ์‚ฌ์ด์ฆˆ๊ฐ€ ์ ์  ์ปค์ง€๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๊นŒ์ง€ Crystal์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์ œ๊ฐ€ Crystal์„ ์ข‹์•„ํ•˜๊ฒŒ๋œ ์ด์œ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

DOM Handling with MutationObserver

3 min read

์ตœ๊ทผ ZAP์€ SPA ๊ธฐ๋ฐ˜์˜ ์•ฑ์„ ์‰ฝ๊ฒŒ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด Client Side Integration ์ด๋ž€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ด ๋•Œ DOM์˜ ๋ณ€ํ™”๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์žฅ์น˜๋กœ MutationObserver๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ๋Š”๋ฐ์š”. ์˜ค๋Š˜์€ MutationObserver๊ฐ€ ๋ญ”์ง€ ๊ทธ๋ฆฌ๊ณ  ๋ณด์•ˆ ํ…Œ์ŠคํŒ… ์‹œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„์ง€ ์ด์•ผ๊ธฐํ•ด๋ด…๋‹ˆ๋‹ค.

Lazy-loading iframe in Firefox

~1 min read

์ตœ๊ทผ์— Firefox์ชฝ์—์„œ ํ•˜๋‚˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์˜ˆ๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณง img ํƒœ๊ทธ์—๋งŒ ์กด์žฌํ•˜๋˜ lazy-loading์ด iframe์—๋„ ์ ์šฉ๋˜๋Š”๋ฐ์š”. ์„ฑ๋Šฅ์ ์ธ ์žฅ์ ์€ ๋ถ„๋ช…ํžˆ ์žˆ๊ฒ ์ง€๋งŒ, img์™€ ๋‹ฌ๋ฆฌ XSS์˜ ๋ฆฌ์Šคํฌ๊ฐ€ ๋†’์€ iframe์˜ ๋กœ๋“œ ์‹œ์ ์„ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋ผ ์žฌ๋ฏธ์žˆ๋Š” ์ด์Šˆ๊ฐ€ ๋‚˜์˜ฌ์ง€ ๊ธฐ๋Œ€๋˜๊ธฐ๋„, ๋ฐ˜๋Œ€๋กœ ๋˜ ๊ฑฑ์ •๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

Fiber concurrency

2 min read

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