Linux ์ปค๋„ ์ˆ˜์ค€์—์„œ ์ฝ”๋“œ ์‹คํ–‰์„ ํ—ˆ์šฉํ•˜๋Š” eBPF ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ ์ทจ์•ฝ์ 

eBPF ํ•˜์œ„ ์‹œ์Šคํ…œ์—์„œ ์ทจ์•ฝ์ (CVE-2021-4204)์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด JIT๊ฐ€ ํฌํ•จ๋œ ํŠน์ˆ˜ ๊ฐ€์ƒ ๋จธ์‹ ์˜ Linux ์ปค๋„ ๋‚ด๋ถ€์—์„œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ถŒํ•œ์ด ์—†๋Š” ๋กœ์ปฌ ์‚ฌ์šฉ์ž๊ฐ€ ๊ถŒํ•œ ์ƒ์Šน์„ ๋‹ฌ์„ฑํ•˜๊ณ  ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ์ˆ˜์ค€. ์ด ๋ฌธ์ œ๋Š” Linux ์ปค๋„ 5.8๋ถ€ํ„ฐ ๋‚˜ํƒ€๋‚ฌ์œผ๋ฉฐ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฆด๋ฆฌ์Šค 5.16 ํฌํ•จ). ๋ฐฐํฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑ๋˜๋Š” ์—…๋ฐ์ดํŠธ ์ƒํƒœ๋Š” Debian, RHEL, SUSE, Fedora, Ubuntu, Arch ํŽ˜์ด์ง€์—์„œ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 18์›” XNUMX์ผ์— ๊ฒŒ์‹œ๋  ์˜ˆ์ •์ธ ์ž‘๋™ ๊ฐ€๋Šฅํ•œ ์ต์Šคํ”Œ๋กœ์ž‡์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค๊ณ  ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž์™€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ทจ์•ฝ์ ์„ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์ผ์ฃผ์ผ์ด ์ฃผ์–ด์กŒ์Šต๋‹ˆ๋‹ค).

์ด ์ทจ์•ฝ์ ์€ ์‹คํ–‰์„ ์œ„ํ•ด ์ „์†ก๋œ eBPF ํ”„๋กœ๊ทธ๋žจ์˜ ์ž˜๋ชป๋œ ๊ฒ€์ฆ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. eBPF ํ•˜์œ„ ์‹œ์Šคํ…œ์€ ๋ณด์กฐ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ด ๊ธฐ๋Šฅ์˜ ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ์€ ํŠน์ˆ˜ ๊ฒ€์ฆ ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด ํ™•์ธ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ํ•จ์ˆ˜์—์„œ๋Š” PTR_TO_MEM ๊ฐ’์„ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋ฉฐ, ๊ฐ€๋Šฅํ•œ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๊ฒ€์ฆ์ž๋Š” ์ธ์ˆ˜์™€ ๊ด€๋ จ๋œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. bpf_ringbuf_submit ๋ฐ bpf_ringbuf_discard ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ์ „์†ก๋œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฒ€์ฆ์ž์—๊ฒŒ ๋ณด๊ณ ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ์ด๋Š” ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ eBPF ์ฝ”๋“œ ์‹คํ–‰ ์‹œ ๋ฒ„ํผ ๊ฒฝ๊ณ„๋ฅผ ๋„˜์–ด์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋ฎ์–ด์“ฐ๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ BPF ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์ตœ๊ทผ์˜ ๋งŽ์€ Linux ๋ฐฐํฌํŒ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ๊ธฐ๋Šฅ์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค(๋ฆด๋ฆฌ์Šค 5.16๋ถ€ํ„ฐ ์ปค๋„ ์ž์ฒด์—์„œ eBPF์— ๋Œ€ํ•œ ๊ถŒํ•œ ์—†๋Š” ์•ก์„ธ์Šค๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ธˆ์ง€๋˜๋Š” ๊ฒƒ์„ ํฌํ•จ). ์˜ˆ๋ฅผ ๋“ค์–ด, Ubuntu 20.04 LTS์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์—์„œ๋Š” ์ทจ์•ฝ์ ์ด ์•…์šฉ๋  ์ˆ˜ ์žˆ์ง€๋งŒ Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 ๋ฐ Fedora 33 ํ™˜๊ฒฝ์—์„œ๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ์„ค์ •ํ•œ ๊ฒฝ์šฐ์—๋งŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. kernel.unprivileged_bpf_disabled ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ทจ์•ฝ์ ์„ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ "sysctl -w kernel.unprivileged_bpf_disabled=1" ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ถŒํ•œ ์—†๋Š” ์‚ฌ์šฉ์ž๊ฐ€ BPF ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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