Linux ์ปค๋„์˜ TIPC ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์›๊ฒฉ ์ทจ์•ฝ์ 

Linux ์ปค๋„์—์„œ ์ œ๊ณต๋˜๋Š” TIPC(Transparent Inter-process Communication) ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์—์„œ ์‹ฌ๊ฐํ•œ ์ทจ์•ฝ์ (CVE-2021-43267)์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ํŒจํ‚ท. ๋ฌธ์ œ์˜ ์œ„ํ—˜์€ ๊ณต๊ฒฉ์ด ์‹œ์Šคํ…œ์—์„œ ๋ช…์‹œ์ ์ธ TIPC ์ง€์› ํ™œ์„ฑํ™”(tipc.ko ์ปค๋„ ๋ชจ๋“ˆ ๋กœ๋“œ ๋ฐ ๊ตฌ์„ฑ)๋ฅผ ์š”๊ตฌํ•œ๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ์ธํ•ด ์™„ํ™”๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ „๋ฌธํ™”๋˜์ง€ ์•Š์€ Linux ๋ฐฐํฌํŒ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

TIPC ํ”„๋กœํ† ์ฝœ์€ Linux ์ปค๋„ 3.19๋ถ€ํ„ฐ ์ง€์›๋˜์—ˆ์ง€๋งŒ ์ทจ์•ฝ์ ์„ ์œ ๋ฐœํ•˜๋Š” ์ฝ”๋“œ๋Š” ์ปค๋„ 5.10์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ทจ์•ฝ์ ์€ ์ปค๋„ 5.15.0, 5.10.77 ๋ฐ 5.14.16์—์„œ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” Debian 11, Ubuntu 21.04/21.10, SUSE(์•„์ง ์ถœ์‹œ๋˜์ง€ ์•Š์€ SLE15-SP4 ๋ถ„๊ธฐ), RHEL(์ทจ์•ฝํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฐฑํฌํŠธ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” ์•„์ง ์ž์„ธํžˆ ์„ค๋ช…๋˜์ง€ ์•Š์Œ) ๋ฐ Fedora์—์„œ ๋‚˜ํƒ€๋‚˜์ง€๋งŒ ์•„์ง ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Arch Linux์šฉ ์ปค๋„ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ด๋ฏธ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Debian 5.10 ๋ฐ Ubuntu 10์™€ ๊ฐ™์ด 20.04 ์ด์ „ ์ปค๋„์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฐํฌํŒ์€ ์ด ๋ฌธ์ œ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

TIPC ํ”„๋กœํ† ์ฝœ์€ ์›๋ž˜ Ericsson์ด ๊ฐœ๋ฐœํ–ˆ์œผ๋ฉฐ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ ์„ ๊ตฌ์„ฑํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ ์ฃผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. TIPC๋Š” ์ด๋”๋„ท์ด๋‚˜ UDP(๋„คํŠธ์›Œํฌ ํฌํŠธ 6118)๋ฅผ ํ†ตํ•ด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋”๋„ท์„ ํ†ตํ•ด ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ ๊ณต๊ฒฉ์€ ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ์—์„œ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, UDP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํฌํŠธ๊ฐ€ ๋ฐฉํ™”๋ฒฝ์œผ๋กœ ๋ณดํ˜ธ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๊ธ€๋กœ๋ฒŒ ๋„คํŠธ์›Œํฌ์—์„œ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ฒฉ์€ ํ˜ธ์ŠคํŠธ์˜ ๊ถŒํ•œ์ด ์—†๋Š” ๋กœ์ปฌ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ์ˆ˜ํ–‰๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. TIPC๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด Tipc.ko ์ปค๋„ ๋ชจ๋“ˆ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  netlink ๋˜๋Š” Tipc ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ทจ์•ฝ์ ์€ Tipc_crypto_key_rc ํ•จ์ˆ˜์—์„œ ๋‚˜ํƒ€๋‚˜๋ฉฐ, ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ์–ป๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” MSG_CRYPTO ์œ ํ˜•์˜ ํŒจํ‚ท์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ๋•Œ ํ—ค๋”์— ์ง€์ •๋œ ๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ์˜ ์‹ค์ œ ํฌ๊ธฐ ๊ฐ„์˜ ์ผ์น˜ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ๊ฒ€์ฆ์ด ๋ถ€์กฑํ•˜์—ฌ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋…ธ๋“œ์—์„œ ์ „์†ก๋œ ๋ฉ”์‹œ์ง€์˜ ํ›„์† ์•”ํ˜ธ ํ•ด๋…์„ ์œ„ํ•ด ํด๋Ÿฌ์Šคํ„ฐ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— ๋ณต์‚ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋Š” ๋ฉ”์‹œ์ง€ ํฌ๊ธฐ์™€ ํ—ค๋” ํฌ๊ธฐ๊ฐ€ ์žˆ๋Š” ํ•„๋“œ ๊ฐ’์˜ ์ฐจ์ด๋กœ ๊ณ„์‚ฐ๋˜์ง€๋งŒ, ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ฆ„์˜ ์‹ค์ œ ํฌ๊ธฐ์™€ ๋‚ด์šฉ์€ ๊ณ ๋ ค๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€์— ํ‚ค๊ฐ€ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ฆ„์˜ ํฌ๊ธฐ๋Š” ๊ณ ์ •๋˜์–ด ์žˆ๊ณ , ํ‚ค์—๋Š” ํฌ๊ธฐ๊ฐ€ ์žˆ๋Š” ๋ณ„๋„์˜ ์†์„ฑ์ด ์ถ”๊ฐ€๋กœ ์ „๋‹ฌ๋˜๋ฉฐ, ๊ณต๊ฒฉ์ž๊ฐ€ ์ด ์†์„ฑ์— ์‹ค์ œ ๊ฐ’๊ณผ ๋‹ค๋ฅธ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ• ๋‹น๋œ ๋ฒ„ํผ๋ฅผ ๋„˜์–ด์„œ๋Š” ๋ฉ”์‹œ์ง€์˜ ๊ผฌ๋ฆฌ. structtipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; ์„œ๋ช…๋˜์ง€ ์•Š์€ int keylen; /* ๋ฐ”์ดํŠธ ๋‹จ์œ„ */ char key[]; };

Linux ์ปค๋„์˜ TIPC ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์›๊ฒฉ ์ทจ์•ฝ์ 


์ถœ์ฒ˜ : opennet.ru

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