์•…์„ฑ ํŒŒ์ผ์„ ์—ด ๋•Œ ์ฝ”๋“œ ์‹คํ–‰์œผ๋กœ ์ด์–ด์ง€๋Š” Vim์˜ ์ทจ์•ฝ์ 

ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์—์„œ ์ •๋ ฅ ะธ ๋„ค์˜ค๋น” ๋…น์ด๋‹ค ์ทจ์•ฝ์  (CVE-2019-12735)์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ ํŒŒ์ผ์„ ์—ด ๋•Œ ์ž„์˜์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ฒ˜๋ฆฌ๋œ ํŒŒ์ผ์—์„œ ํŽธ์ง‘ ์˜ต์…˜์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ๋ชจ๋ธ๋ผ์ธ ๋ชจ๋“œ(":set modeline")๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค์—์„œ ์ˆ˜์ •๋œ ์ทจ์•ฝ์ 
๋น” 8.1.1365 ะธ ๋„ค์˜ค๋น” 0.3.6.

์ œํ•œ๋œ ์ˆ˜์˜ ์˜ต์…˜๋งŒ modeline์„ ํ†ตํ•ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ต์…˜ ๊ฐ’์œผ๋กœ ํ‘œํ˜„์‹์„ ์ง€์ •ํ•˜๋ฉด ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์•ˆ์ „ ์ž‘์—…๋งŒ ํ—ˆ์šฉํ•˜๋Š” ์ƒŒ๋“œ๋ฐ•์Šค ๋ชจ๋“œ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์œ ํšจํ•œ ๋ช…๋ น์—๋Š” "!" ์ˆ˜์ •์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ":source" ๋ช…๋ น์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ง€์ •๋œ ํŒŒ์ผ์—์„œ ์ž„์˜์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋ชจ๋ธ๋ผ์ธ ์ค„์— "setfoldexpr=execute('\:source!some_file'):"๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ์„ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. Neovim์—์„œ๋Š” Execute ํ˜ธ์ถœ์ด ๊ธˆ์ง€๋˜์–ด ์žˆ์ง€๋งŒ ๋Œ€์‹  Assert_fails๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, "uname -a" ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด Vim ๋˜๋Š” Neovim์—์„œ ์ฒซ ๋ฒˆ์งธ ๋˜๋Š” ๋งˆ์ง€๋ง‰ ์ค„์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒŒ์ผ์„ ์—ด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

:!uname -a||ยป vi:fen:fdm=expr:fde=assert_fails(โ€œ์†Œ์Šค\!\ \%โ€):fdl=0:fdt=โ€

ํšŒ์‚ฌ โ€œ์†Œ์Šค! %"๋Š” ํ˜„์žฌ ํŒŒ์ผ์—์„œ ๋ช…๋ น์„ ์ฝ๊ณ  ๊ทธ์— ๋”ฐ๋ผ ":!uname -a"๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด์Šค์ผ€์ดํ”„ ์‹œํ€€์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด cat ์œ ํ‹ธ๋ฆฌํ‹ฐ์˜ ์ถœ๋ ฅ์—์„œ โ€‹โ€‹ํŠน์ • ํ–‰์„ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด ํ”„๋กœํ† ํƒ€์ž…์„ ์•…์šฉํ•˜๋‹ค vim์—์„œ ํŒŒ์ผ์„ ์—ด๋ฉด ํ”ผํ•ด์ž ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์‰˜ ์•ก์„ธ์Šค๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์ด ์ƒ์„ฑ๋˜์ง€๋งŒ, ์ด ํŒŒ์ผ์€ cat ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ„ฐ๋ฏธ๋„์— ์ถœ๋ ฅํ•  ๋•Œ ์˜์‹ฌ์„ ๋ถˆ๋Ÿฌ์ผ์œผํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

โ€œ:set modeline?โ€ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ๋ฆฐ ๋ชจ๋“œ์˜ ํ™œ๋™์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด vimrc์— "set nomodeline" ์ค„์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌํŒ์—์„œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. RHEL, ์ˆ˜์„ธ/์˜คํ”ˆ์ˆ˜์„ธ, ํŽ˜๋„๋ผ, FreeBSD์˜, Ubuntu, ์•„์น˜ ๋ฆฌ๋ˆ…์Šค ะธ ALT. ์ทจ์•ฝ์ ์€ ์•„์ง ํŒจ์น˜๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ๋น„์•ˆ (Debian์—์„œ๋Š” modeline์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ทจ์•ฝ์ ์€ ๊ธฐ๋ณธ ์ƒํƒœ๋กœ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

์ถœ์ฒ˜ : opennet.ru

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