๊ถŒํ•œ ์ƒ์Šน์„ ํ—ˆ์šฉํ•˜๋Š” Linux ์ปค๋„์˜ iSCSI ํ•˜์œ„ ์‹œ์Šคํ…œ ์ทจ์•ฝ์„ฑ

Linux ์ปค๋„์˜ iSCSI ํ•˜์œ„ ์‹œ์Šคํ…œ ์ฝ”๋“œ์—์„œ ์ทจ์•ฝ์ (CVE-2021-27365)์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ถŒํ•œ ์—†๋Š” ๋กœ์ปฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ปค๋„ ์ˆ˜์ค€์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹œ์Šคํ…œ์—์„œ ๋ฃจํŠธ ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ต์Šคํ”Œ๋กœ์ž‡์˜ ์ž‘์—… ํ”„๋กœํ† ํƒ€์ž…์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ทจ์•ฝ์„ฑ์€ Linux ์ปค๋„ ์—…๋ฐ์ดํŠธ 5.11.4, 5.10.21, 5.4.103, 4.19.179, 4.14.224, 4.9.260 ๋ฐ 4.4.260์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ปค๋„ ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ๋Š” Debian, Ubuntu, SUSE/openSUSE, Arch Linux ๋ฐ Fedora ๋ฐฐํฌํŒ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง RHEL์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฆด๋ฆฌ์Šค๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” iSCSI ํ•˜์œ„ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ์ค‘ 2006๋…„์— ๋„์ž…๋œ libiscsi ๋ชจ๋“ˆ์˜ iscsi_host_get_param() ํ•จ์ˆ˜ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ํฌ๊ธฐ ํ™•์ธ์ด ๋ถ€์กฑํ•˜์—ฌ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด๋‚˜ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๊ฐ™์€ ์ผ๋ถ€ iSCSI ๋ฌธ์ž์—ด ์†์„ฑ์ด PAGE_SIZE ๊ฐ’(4KB)์„ ์ดˆ๊ณผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ทจ์•ฝ์ ์€ ๊ถŒํ•œ ์—†๋Š” ์‚ฌ์šฉ์ž๊ฐ€ iSCSI ์†์„ฑ์„ PAGE_SIZE๋ณด๋‹ค ํฐ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋Š” Netlink ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ ์•…์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. sysfs ๋˜๋Š” seqfs๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ์†์„ฑ์„ ์ฝ์œผ๋ฉด ์†์„ฑ์„ sprintf ํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜์—ฌ ํฌ๊ธฐ๊ฐ€ PAGE_SIZE์ธ ๋ฒ„ํผ์— ๋ณต์‚ฌ๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌํŒ์˜ ์ทจ์•ฝ์  ์•…์šฉ์€ NETLINK_ISCSI ์†Œ์ผ“ ์ƒ์„ฑ์„ ์‹œ๋„ํ•  ๋•Œ scsi_transport_iscsi ์ปค๋„ ๋ชจ๋“ˆ์˜ ์ž๋™ ๋กœ๋”ฉ ์ง€์›์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ด ๋ชจ๋“ˆ์ด ์ž๋™์œผ๋กœ ๋กœ๋“œ๋˜๋Š” ๋ฐฐํฌํŒ์—์„œ๋Š” iSCSI ๊ธฐ๋Šฅ ์‚ฌ์šฉ๊ณผ ๊ด€๊ณ„์—†์ด ๊ณต๊ฒฉ์ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์ต์Šคํ”Œ๋กœ์ž‡์„ ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ตœ์†Œํ•œ ํ•˜๋‚˜ ์ด์ƒ์˜ iSCSI ์ „์†ก ๋“ฑ๋ก์ด ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ „์†ก์„ ๋“ฑ๋กํ•˜๋ ค๋ฉด ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๊ฐ€ NETLINK_RDMA ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ž๋™์œผ๋กœ ๋กœ๋“œ๋˜๋Š” ib_iser ์ปค๋„ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ต์Šคํ”Œ๋กœ์ž‡ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ๋ชจ๋“ˆ์˜ ์ž๋™ ๋กœ๋”ฉ์€ ์‹œ์Šคํ…œ์— rdma-core ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ๋•Œ CentOS 8, RHEL 8 ๋ฐ Fedora์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ถ€ ์ธ๊ธฐ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ข…์†์„ฑ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ์›Œํฌ์Šคํ…Œ์ด์…˜, ์„œ๋ฒ„ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์— ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. GUI ๋ฐ ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ ๊ฐ€์ƒํ™”. ํ•˜์ง€๋งŒ ์ฝ˜์†” ๋ชจ๋“œ์—์„œ๋งŒ ์ž‘๋™ํ•˜๋Š” ์„œ๋ฒ„ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์™€ ์ตœ์†Œ ์„ค์น˜ ์ด๋ฏธ์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” rdma-core๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŒจํ‚ค์ง€๋Š” Fedora 31 Workstation์˜ ๊ธฐ๋ณธ ๋ฐฐํฌ์—๋Š” ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ Fedora 31 Server์—๋Š” ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Debian๊ณผ Ubuntu๋Š” RDMA ํ•˜๋“œ์›จ์–ด๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ rdma-core ํŒจํ‚ค์ง€๊ฐ€ ๊ณต๊ฒฉ์— ํ•„์š”ํ•œ ์ปค๋„ ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ์— ๋œ ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค.

๊ถŒํ•œ ์ƒ์Šน์„ ํ—ˆ์šฉํ•˜๋Š” Linux ์ปค๋„์˜ iSCSI ํ•˜์œ„ ์‹œ์Šคํ…œ ์ทจ์•ฝ์„ฑ

๋ณด์•ˆ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ libiscsi ๋ชจ๋“ˆ์˜ ์ž๋™ ๋กœ๋”ฉ์„ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: echo "install libiscsi /bin/true" >> /etc/modprobe.d/disable-libiscsi.conf

๋˜ํ•œ ์ปค๋„์—์„œ ๋ฐ์ดํ„ฐ ์œ ์ถœ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋Š” ๋œ ์œ„ํ—˜ํ•œ ๋‘ ๊ฐ€์ง€ ์ทจ์•ฝ์ ์ด iSCSI ํ•˜์œ„ ์‹œ์Šคํ…œ์—์„œ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค: CVE-2021-27363(sysfs๋ฅผ ํ†ตํ•œ iSCSI ์ „์†ก ์„ค๋ช…์ž ์ •๋ณด ์œ ์ถœ) ๋ฐ CVE-2021-27364(๋ฒ”์œ„ ๋ฐ– ๋ฒ„ํผ) ์ฝ๊ธฐ) . ์ด๋Ÿฌํ•œ ์ทจ์•ฝ์ ์€ ํ•„์š”ํ•œ ๊ถŒํ•œ ์—†์ด Netlink ์†Œ์ผ“์„ ํ†ตํ•ด iSCSI ํ•˜์œ„ ์‹œ์Šคํ…œ๊ณผ ํ†ต์‹ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๋Š” iSCSI์— ์—ฐ๊ฒฐํ•˜๊ณ  "์„ธ์…˜ ์ข…๋ฃŒ" ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์„ธ์…˜์„ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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