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