Wayland์˜ ๋ฐ”๋กœ๊ฐ€๊ธฐ ๊ด€๋ฆฌ์ž์ธ swhkd์˜ ์ทจ์•ฝ์ 

์ž„์‹œ ํŒŒ์ผ, ๋ช…๋ น์ค„ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ Unix ์†Œ์ผ“์˜ ์ž˜๋ชป๋œ ์ž‘์—…์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” swhkd(Simple Wayland HotKey Daemon)์—์„œ ์ผ๋ จ์˜ ์ทจ์•ฝ์ ์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์€ Rust๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ Wayland ํ”„๋กœํ† ์ฝœ(X11 ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜๋Š” sxhkd ํ”„๋กœ์„ธ์Šค์˜ ๊ตฌ์„ฑ ํŒŒ์ผ ํ˜ธํ™˜ ์•„๋‚ ๋กœ๊ทธ) ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์—์„œ ํ•ซํ‚ค ๋ˆ„๋ฅด๊ธฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€์—๋Š” ํ•ซํ‚ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ถŒํ•œ ์—†๋Š” swhks ํ”„๋กœ์„ธ์Šค์™€ ๋ฃจํŠธ๋กœ ์‹คํ–‰๋˜๊ณ  uinput API ์ˆ˜์ค€์—์„œ ์ž…๋ ฅ ์žฅ์น˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ swhkd ํ”„๋กœ์„ธ์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Unix ์†Œ์ผ“์€ swhk์™€ swhkd ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Polkit ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๋กœ์ปฌ ์‚ฌ์šฉ์ž๊ฐ€ /usr/bin/swhkd ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฃจํŠธ๋กœ ์‹คํ–‰ํ•˜๊ณ  ์ž„์˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™•์ธ๋œ ์ทจ์•ฝ์ :

  • CVE-2022-27815 โ€“ ํ”„๋กœ์„ธ์Šค PID๋ฅผ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์˜ ํŒŒ์ผ๊ณผ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ(/tmp/swhkd.pid)์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ์šฉ์ž๋Š” /tmp/swhkd.pid ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์•ˆ์— ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค์˜ pid๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋กœ ์ธํ•ด swhkd๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. /tmp์— ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ์ƒ์„ฑ์— ๋Œ€ํ•œ ๋ณดํ˜ธ ์žฅ์น˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์ทจ์•ฝ์ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์‹œ์Šคํ…œ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ฎ์–ด์“ฐ๊ฑฐ๋‚˜(PID๊ฐ€ ํŒŒ์ผ์— ๊ธฐ๋ก๋จ) ์‹œ์Šคํ…œ์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(swhkd๋Š” PID ํŒŒ์ผ์˜ ์ „์ฒด ๋‚ด์šฉ์„ ํ‘œ์ค€ ์ถœ๋ ฅ์œผ๋กœ ์ถœ๋ ฅ). ๋ฆด๋ฆฌ์Šค๋œ ์ˆ˜์ • ์‚ฌํ•ญ์—์„œ๋Š” PID ํŒŒ์ผ์ด /run ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์•„๋‹Œ /etc ๋””๋ ‰ํ„ฐ๋ฆฌ(/etc/swhkd/runtime/swhkd_{uid}.pid)๋กœ ์ด๋™๋˜์—ˆ์œผ๋ฉฐ ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์—๋„ ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๋งŒํ•ฉ๋‹ˆ๋‹ค.
  • CVE-2022-27814 - ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” "-c" ๋ช…๋ น์ค„ ์˜ต์…˜์„ ์กฐ์ž‘ํ•˜๋ฉด ์‹œ์Šคํ…œ์— ํŒŒ์ผ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด /root/.somefile์„ ํ™•์ธํ•˜๋ ค๋ฉด "pkexec /usr/bin/swhkd -d -c /root/.somefile"์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํŒŒ์ผ์ด ์—†์œผ๋ฉด "/root/.somefile์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. "๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ทจ์•ฝ์ ์˜ ๊ฒฝ์šฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์€ ์ˆ˜์ˆ˜๊ป˜๋ผ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์€ ์™ธ๋ถ€ ์œ ํ‹ธ๋ฆฌํ‹ฐ โ€œcatโ€ ('Command::new(โ€œ/bin/catโ€)).arg(path)๋ผ๋Š” ์‚ฌ์‹ค๋กœ ๊ท€๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ด์ œ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ฝ๊ธฐ ์œ„ํ•ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.output()').
  • CVE-2022-27819 โ€“ ์ด ๋ฌธ์ œ๋Š” ํŒŒ์ผ์˜ ํฌ๊ธฐ์™€ ์œ ํ˜•์„ ํ™•์ธํ•˜์ง€ ์•Š๊ณ  ์ „์ฒด ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋Š” "-c" ์˜ต์…˜ ์‚ฌ์šฉ๊ณผ๋„ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๊ณ  ์ž˜๋ชป๋œ I/O๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์„œ๋น„์Šค ๊ฑฐ๋ถ€๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋ ค๋ฉด ์‹œ์ž‘ ์‹œ ๋ธ”๋ก ์žฅ์น˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค("pkexec /usr/bin/swhkd -d -c /dev/sda"). ๋ฌดํ•œํ•œ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฌธ์ž ์žฅ์น˜์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ์—ด๊ธฐ ์ „ ๊ถŒํ•œ์„ ์žฌ์„ค์ •ํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์œผ๋‚˜, ์‚ฌ์šฉ์ž ID(UID)๋งŒ ์žฌ์„ค์ •๋˜๊ณ  ๊ทธ๋ฃน ID(GID)๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜์–ด ์ˆ˜์ •์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • CVE-2022-27818 โ€“ ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ƒ์„ฑ๋œ /tmp/swhkd.sock ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ Unix ์†Œ์ผ“์ด ์ƒ์„ฑ๋˜์–ด ์ฒซ ๋ฒˆ์งธ ์ทจ์•ฝ์ ๊ณผ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค(๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ /tmp/swhkd.sock์„ ์ƒ์„ฑํ•˜๊ณ  ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ์Œ). ํ‚ค ๋ˆ„๋ฅด๊ธฐ ์ด๋ฒคํŠธ).
  • CVE-2022-27817 - ์ž…๋ ฅ ์ด๋ฒคํŠธ๋Š” ๋ชจ๋“  ์žฅ์น˜ ๋ฐ ๋ชจ๋“  ์„ธ์…˜์—์„œ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ Wayland ์„ธ์…˜์ด๋‚˜ ์ฝ˜์†”์˜ ์‚ฌ์šฉ์ž๋Š” ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹จ์ถ•ํ‚ค๋ฅผ ๋ˆ„๋ฅผ ๋•Œ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • CVE-2022-27816 swhkd์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ swhks ํ”„๋กœ์„ธ์Šค๋Š” ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ /tmp ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” PID ํŒŒ์ผ /tmp/swhks.pid๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ฒซ ๋ฒˆ์งธ ์ทจ์•ฝ์ ๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ swhks๊ฐ€ ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„ํ—˜ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€