๋ธ”๋ฃจํˆฌ์Šค๋ฅผ ํ†ตํ•ด ์›๊ฒฉ์œผ๋กœ ์•…์šฉ๋˜๋Š” Linux ์ปค๋„์˜ ์ทจ์•ฝ์ 

Linux ์ปค๋„์—์„œ ์ทจ์•ฝ์ (CVE-2022-42896)์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ทจ์•ฝ์ ์€ Bluetooth๋ฅผ ํ†ตํ•ด ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ L2CAP ํŒจํ‚ท์„ ์ „์†กํ•˜์—ฌ ์ปค๋„ ์ˆ˜์ค€์—์„œ ์›๊ฒฉ ์ฝ”๋“œ ์‹คํ–‰์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์ž ์žฌ์ ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ L2022CAP ํ•ธ๋“ค๋Ÿฌ์—์„œ ๋˜ ๋‹ค๋ฅธ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(CVE-42895-2). ์ด๋กœ ์ธํ•ด ๊ตฌ์„ฑ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ํŒจํ‚ท์—์„œ ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์šฉ์ด ๋ˆ„์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ทจ์•ฝ์ ์€ 2014๋…„ 3.16์›”(์ปค๋„ 2011) ์ดํ›„ ๋‚˜ํƒ€๋‚ฌ๊ณ , ๋‘ ๋ฒˆ์งธ ์ทจ์•ฝ์ ์€ 3.0๋…„ 6.1.0์›”(์ปค๋„ 6.0.8) ์ดํ›„ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด ์ทจ์•ฝ์„ฑ์€ Linux ์ปค๋„ ๋ฆด๋ฆฌ์Šค 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154, 5.15.78, XNUMX ๋ฐ XNUMX์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch ํŽ˜์ด์ง€์—์„œ ๋ฐฐํฌํŒ์˜ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›๊ฒฉ ๊ณต๊ฒฉ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ์„ฑ์„ ์ž…์ฆํ•˜๊ธฐ ์œ„ํ•ด Ubuntu 22.04์—์„œ ์ž‘๋™ํ•˜๋Š” ํ”„๋กœํ† ํƒ€์ž… ์ต์Šคํ”Œ๋กœ์ž‡์ด ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ Bluetooth ๋ฒ”์œ„ ๋‚ด์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ „ ํŽ˜์–ด๋ง์€ ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ์ปดํ“จํ„ฐ์—์„œ Bluetooth๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์˜ ๊ฒฝ์šฐ ํ”ผํ•ด์ž ์žฅ์น˜์˜ MAC ์ฃผ์†Œ๋ฅผ ์•„๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์Šค๋‹ˆํ•‘์„ ํ†ตํ•ด ํ™•์ธํ•˜๊ฑฐ๋‚˜ ์ผ๋ถ€ ์žฅ์น˜์—์„œ๋Š” Wi-Fi MAC ์ฃผ์†Œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์ทจ์•ฝ์ (CVE-2022-42896)์€ l2cap_connect ๋ฐ l2cap_le_connect_req ํ•จ์ˆ˜ ๊ตฌํ˜„ ์‹œ ์ด๋ฏธ ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(use-after-free)์— ์•ก์„ธ์Šคํ•˜์—ฌ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. new_connection ์ฝœ๋ฐฑ์„ ํ†ตํ•ด ์ฑ„๋„์„ ์ƒ์„ฑํ•œ ํ›„ ์ž ๊ธˆ์ด ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ํƒ€์ด๋จธ๊ฐ€ ์„ค์ •๋˜์—ˆ์ง€๋งŒ(__set_chan_timer), ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋งŒ๋ฃŒ๋˜๋ฉด l2cap_chan_timeout ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  l2cap_le_connect* ํ•จ์ˆ˜์˜ ์ฑ„๋„ ์ž‘์—… ์™„๋ฃŒ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š๊ณ  ์ฑ„๋„์„ ์ง€์›๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ํƒ€์ž„์•„์›ƒ์€ 40์ดˆ์ด๊ณ  ์ด ์ •๋„ ์ง€์—ฐ์œผ๋กœ ์ธํ•ด Race Condition์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ๋Š”๋ฐ, SMP ํ•ธ๋“ค๋Ÿฌ์˜ ๋˜ ๋‹ค๋ฅธ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ํƒ€์ด๋จธ์— ๋Œ€ํ•œ ์ฆ‰๊ฐ์ ์ธ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๊ฒฝ์Ÿ ์กฐ๊ฑด. l2cap_le_connect_req์˜ ๋ฌธ์ œ๋Š” ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, l2cap_connect์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์šฉ์„ ๋ฎ์–ด์“ฐ๊ณ  ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์œ ํ˜•์˜ ๊ณต๊ฒฉ์€ Bluetooth LE 4.0(2009๋…„ ์ดํ›„)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‘ ๋ฒˆ์งธ ๊ณต๊ฒฉ ์œ ํ˜•์€ Bluetooth BR/EDR 5.2(2020๋…„ ์ดํ›„)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์ทจ์•ฝ์ (CVE-2022-42895)์€ l2cap_parse_conf_req ํ•จ์ˆ˜์˜ ์ž”์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ํŠน๋ณ„ํžˆ ์ œ์ž‘๋œ ๊ตฌ์„ฑ ์š”์ฒญ์„ ์ „์†กํ•˜์—ฌ ์ปค๋„ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์›๊ฒฉ์œผ๋กœ ์–ป๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. l2cap_parse_conf_req ํ•จ์ˆ˜๋Š” ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‚ฌ์ „ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ l2cap_conf_efs ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ FLAG_EFS_ENABLE ํ”Œ๋ž˜๊ทธ๋ฅผ ์กฐ์ž‘ํ•˜์—ฌ ์Šคํƒ์˜ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํŒจํ‚ท์— ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ปค๋„์ด CONFIG_BT_HS ์˜ต์…˜(๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€๋งŒ Ubuntu์™€ ๊ฐ™์€ ์ผ๋ถ€ ๋ฐฐํฌํŒ์—์„œ๋Š” ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Œ)์œผ๋กœ ๋นŒ๋“œ๋œ ์‹œ์Šคํ…œ์—์„œ๋งŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์ด ์„ฑ๊ณตํ•˜๋ ค๋ฉด ๊ด€๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด HCI_HS_ENABLED ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ true(๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ)๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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