Linux 5.12 ์ปค๋„์€ ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—… ์‹œ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•ด KFence ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ์ฑ„ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ์ค‘์ธ Linux ์ปค๋„ 5.12์—๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฒ˜๋ฆฌ, ๋ฒ„ํผ ์˜ค๋ฒ„๋Ÿฐ ์žก๊ธฐ, ํ•ด์ œ ํ›„ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค ๋ฐ ์œ ์‚ฌํ•œ ํด๋ž˜์Šค์˜ ๊ธฐํƒ€ ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” KFence(Kernel Electric Fence) ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ๊ตฌํ˜„์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„์Šทํ•œ ๊ธฐ๋Šฅ์ด KASAN ๋นŒ๋“œ ์˜ต์…˜(์ปค๋„ ์ฃผ์†Œ ์ƒˆ๋‹ˆํƒ€์ด์ €, ์ตœ์‹  gcc ๋ฐ clang์—์„œ Address Sanitizer ์‚ฌ์šฉ)์˜ ํ˜•ํƒœ๋กœ ์ด๋ฏธ ์ปค๋„์— ์กด์žฌํ–ˆ์ง€๋งŒ ์ฃผ๋กœ ๋””๋ฒ„๊น…์šฉ์œผ๋กœ ๋ฐฐ์น˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. KFence ํ•˜์œ„ ์‹œ์Šคํ…œ์€ ์ž‘๋™ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ์ ์—์„œ KASAN๊ณผ ๋‹ค๋ฅด๋ฏ€๋กœ ์ž‘์—… ์‹œ์Šคํ…œ์˜ ์ฝ”์–ด์—์„œ๋„ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜ ์‹œ์Šคํ…œ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ ์šฉํ•˜๋ฉด ํ…Œ์ŠคํŠธ ์‹คํ–‰์—๋Š” ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ณ  ์›Œํฌ๋กœ๋“œ ๋˜๋Š” ์žฅ๊ธฐ ์ž‘์—…(๊ฐ€๋™ ์‹œ๊ฐ„์ด ๊ธด) ์ค‘์—๋งŒ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฅ˜๋ฅผ ํฌ์ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ”„๋กœ๋•์…˜ ์‹œ์Šคํ…œ์—์„œ KFence๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ๋Š” ์ปค๋„์˜ ์ž‘๋™์„ ํ™•์ธํ•˜๋Š” ๋ฐ ๊ด€๋ จ๋œ ์‹œ์Šคํ…œ์˜ ์ˆ˜๋ฅผ ํฌ๊ฒŒ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

KFence๋Š” ๊ณ ์ •๋œ ๊ฐ„๊ฒฉ์œผ๋กœ ๊ฐ€๋“œ ํŽ˜์ด์ง€๋ฅผ ํž™์— ์‚ฝ์ž…ํ•˜์—ฌ ๋กœ๋“œ์™€ ๋ฌด๊ด€ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ณดํ˜ธ ๊ฐ„๊ฒฉ์ด ๋งŒ๋ฃŒ๋œ ํ›„ KFence๋Š” ํ‘œ์ค€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์‹œ์Šคํ…œ(SLAB ๋˜๋Š” SLUB ํ• ๋‹น์ž)์„ ํ†ตํ•ด KFence ๊ฐœ์ฒด ํ’€์—์„œ ๋‹ค์Œ ๋ณดํ˜ธ ํŽ˜์ด์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ƒˆ๋กœ์šด ์‹œ๊ฐ„ ์นด์šดํ„ฐ ๋ณด๊ณ ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ KFence ๊ฐ์ฒด๋Š” ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€์— ์œ„์น˜ํ•˜๋ฉฐ ์™ผ์ชฝ ๋ฐ ์˜ค๋ฅธ์ชฝ ๊ฒฝ๊ณ„์— ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋Š” ๊ฐ€๋“œ ํŽ˜์ด์ง€๋ฅผ ํ˜•์„ฑํ•˜๋ฉฐ ํฌ๊ธฐ๋Š” ๋ฌด์ž‘์œ„๋กœ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ฐœ์ฒด๊ฐ€ ์žˆ๋Š” ํŽ˜์ด์ง€๋Š” ์•ก์„ธ์Šค ์‹œ "ํŽ˜์ด์ง€ ํดํŠธ"๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ๊ตฌ์„ฑ๋œ ๋ณดํ˜ธ ํŽ˜์ด์ง€์— ์˜ํ•ด ์„œ๋กœ ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด ํŽ˜์ด์ง€ ๋‚ด๋ถ€์˜ ๊ฒฝ๊ณ„๋ฅผ ๋ฒ—์–ด๋‚œ ์“ฐ๊ธฐ๋ฅผ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํŒจํ„ด ๊ธฐ๋ฐ˜์˜ "๋นจ๊ฐ„์ƒ‰ ์˜์—ญ"์ด ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜์—ญ์€ ๊ฐ์ฒด์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ์œ ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€ ํฌ๊ธฐ๊ฐ€ ์ •๋ ฌ๋  ๋•Œ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. โ€”+โ€”โ€”โ€”โ€”+โ€”โ€”โ€”โ€”+โ€”โ€”โ€”โ€”+โ€”โ€”โ€”โ€”+โ€”โ€”โ€”โ€”+โ€” | xxxxxxxxx | ์˜ค: | xxxxxxxxx | :์˜ค | xxxxxxxxx | | xxxxxxxxx | ใ„ด: | xxxxxxxxx | :B | xxxxxxxxx | | x ๊ฐ€๋“œ x | J : ๋ ˆ๋“œ- | x ๊ฐ€๋“œ x | ๋ ˆ๋“œ- : J | x ๊ฐ€๋“œ x | | xxxxxxxxx | E: ๊ตฌ์—ญ | xxxxxxxxx | ๊ตฌ์—ญ: E | xxxxxxxxx | | xxxxxxxxx | ์”จ: | xxxxxxxxx | :C | xxxxxxxxx | | xxxxxxxxx | ํ‹ฐ: | xxxxxxxxx | : ํ‹ฐ | xxxxxxxxx | โ€”+โ€”โ€”โ€”โ€”+โ€”โ€”โ€”โ€”+โ€”โ€”โ€”โ€”+โ€”โ€”โ€”โ€”+โ€”โ€”โ€”โ€”+โ€”

๋ฒ„ํผ ๊ฒฝ๊ณ„ ์™ธ๋ถ€ ์˜์—ญ์— ์ ‘๊ทผํ•˜๋ ค๋Š” ์‹œ๋„๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ž‘์—…์ด ๋ณดํ˜ธ ํŽ˜์ด์ง€์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  ์ด๋กœ ์ธํ•ด KFence๋ฅผ ๊ฐ€๋กœ์ฑ„๊ณ  ๊ฐ์ง€๋œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๋Š” "ํŽ˜์ด์ง€ ํดํŠธ"๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ KFence๋Š” ์˜ค๋ฅ˜๋ฅผ ์ฐจ๋‹จํ•˜์ง€ ์•Š๊ณ  ๋กœ๊ทธ์— ๊ฒฝ๊ณ ๋งŒ ํ‘œ์‹œํ•˜์ง€๋งŒ, ์˜ค๋ฅ˜๊ฐ€ ๊ฐ์ง€๋˜๋ฉด ์ปค๋„์„ ํŒจ๋‹‰ ์ƒํƒœ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” โ€œpanic_on_warnโ€ ์„ค์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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