Linux ์ปค๋„์˜ eBPF ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ ์ทจ์•ฝ์ 

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

์ทจ์•ฝ์ ์„ ํ™•์ธํ•œ ์—ฐ๊ตฌ์›์— ๋”ฐ๋ฅด๋ฉด, ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” 32๋น„ํŠธ ๋ฐ 64๋น„ํŠธ x86 ์‹œ์Šคํ…œ์šฉ ์ต์Šคํ”Œ๋กœ์ž‡์˜ ์ž‘์—… ํ”„๋กœํ† ํƒ€์ž…์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Red Hat์€ ๋ฌธ์ œ์˜ ์‹ฌ๊ฐ๋„๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ eBPF ์‹œ์Šคํ…œ ํ˜ธ์ถœ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค๋Š” ์ ์„ ์ง€์ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, RHEL ๋ฐ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์˜ ๋Œ€๋ถ€๋ถ„์˜ ๋‹ค๋ฅธ Linux ๋ฐฐํฌํŒ์—์„œ BPF JIT๊ฐ€ ํ™œ์„ฑํ™”๋˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ CAP_SYS_ADMIN ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ทจ์•ฝ์ ์ด ์•…์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด echo 0 > /proc/sys/net/core/bpf_jit_enable ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ BPF JIT๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ฌธ์ œ๋Š” JIT ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ ์ƒ์„ฑ ๊ณผ์ •์—์„œ ๋ถ„๊ธฐ ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์˜คํ”„์…‹ ๊ณ„์‚ฐ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ๋ถ„๊ธฐ ๋ช…๋ น์„ ์ƒ์„ฑํ•  ๋•Œ ์ตœ์ ํ™” ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นœ ํ›„ ์˜คํ”„์…‹์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฐํ•จ์€ ๋น„์ •์ƒ์ ์ธ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ์ปค๋„ ์ˆ˜์ค€์—์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ๊ทผ eBPF ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ ์ทจ์•ฝ์ ์ด ์ด ์ทจ์•ฝ์ ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๋งŒํ•ฉ๋‹ˆ๋‹ค. 2020์›” ๋ง์— ์ปค๋„์—์„œ ๋‘ ๊ฐ€์ง€ ์ทจ์•ฝ์ (CVE-27170-2020, CVE-27171-XNUMX)์ด ์ถ”๊ฐ€๋กœ ํ™•์ธ๋˜์–ด eBPF๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Spectre ํด๋ž˜์Šค ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ๋ณดํ˜ธ๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์ž‘์—…์˜ ์ถ”์ธก ์‹คํ–‰์„ ์œ„ํ•œ ์กฐ๊ฑด์„ ๋งŒ๋“  ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ์ŠคํŽ™ํ„ฐ(Spectre) ๊ณต๊ฒฉ์„ ์œ„ํ•ด์„œ๋Š” ์ถ”์ธก์„ฑ ๋ช…๋ น ์‹คํ–‰์œผ๋กœ ์ด์–ด์ง€๋Š” ํŠน๊ถŒ ์ฝ”๋“œ์— ํŠน์ • ๋ช…๋ น ์‹œํ€€์Šค๊ฐ€ โ€‹โ€‹์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. eBPF์—์„œ๋Š” ์‹คํ–‰์„ ์œ„ํ•ด ์ „์†ก๋œ BPF ํ”„๋กœ๊ทธ๋žจ์„ ์กฐ์ž‘ํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ช…๋ น์„ ์ƒ์„ฑํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

CVE-2020-27170 ์ทจ์•ฝ์ ์€ ์ถ”์ธก ์ž‘์—…์ด ๋ฒ„ํผ ๊ฒฝ๊ณ„ ์™ธ๋ถ€ ์˜์—ญ์— ์•ก์„ธ์Šคํ•˜๋„๋ก ํ•˜๋Š” BPF ๊ฒ€์ฆ๊ธฐ์˜ ํฌ์ธํ„ฐ ์กฐ์ž‘์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ทจ์•ฝ์  CVE-2020-27171์€ ํฌ์ธํ„ฐ ์ž‘์—… ์‹œ ์ •์ˆ˜ ์–ธ๋”ํ”Œ๋กœ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋ฉฐ, ์ด๋Š” ๋ฒ„ํผ ์™ธ๋ถ€์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์˜ˆ์ธก์  ์•ก์„ธ์Šค๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋Š” ์ปค๋„ ๋ฆด๋ฆฌ์Šค 5.11.8, 5.10.25, 5.4.107, 4.19.182 ๋ฐ 4.14.227์—์„œ ์ด๋ฏธ ์ˆ˜์ •๋˜์—ˆ์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ Linux ๋ฐฐํฌํŒ์— ๋Œ€ํ•œ ์ปค๋„ ์—…๋ฐ์ดํŠธ์—๋„ ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ตฌ์›๋“ค์€ ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ํƒ€์ž… ์ต์Šคํ”Œ๋กœ์ž‡์„ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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