เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเปƒเบ™ Vim เบ—เบตเปˆเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบ›เบตเบ”เป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบ›เบฑเบ™เบญเบฑเบ™เบ•เบฐเบฅเบฒเบ

เปƒเบ™เบ•เบปเบงเปเบเป‰เป„เบ‚เบ‚เปเป‰เบ„เบงเบฒเบก เบงเบดเบก ะธ neovim เบžเบปเบš เบ„เบงเบฒเบกเบญเปˆเบญเบ™เปเบญ (CVE-2019-12735), เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ” arbitrary เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบ›เบตเบ”เป„เบŸเบฅเปŒเบ—เบตเปˆเบญเบญเบเปเบšเบšเบžเบดเป€เบชเบ”. เบšเบฑเบ™เบซเบฒเป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเบฎเบนเบšเปเบšเบšเบ•เบปเบงเปเบšเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ (โ€œ: เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบงเปเบšเบšโ€) เป€เบฎเบฑเบ”เบงเบฝเบ, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเบณเบ™เบปเบ”เบ•เบปเบงเป€เบฅเบทเบญเบเบเบฒเบ™เปเบเป‰เป„เบ‚เปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบ›เบฐเบกเบงเบ™เบœเบปเบ™เปเบฅเป‰เบง. เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบ–เบทเบเปเบเป‰เป„เบ‚เปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบ
Vim 8.1.1365 ะธ Neovim 0.3.6.

เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบˆเปเบฒเบ™เบงเบ™เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบœเปˆเบฒเบ™ modeline. เบ–เป‰เบฒเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ–เบทเบเบฅเบฐเบšเบธเป€เบ›เบฑเบ™เบ„เปˆเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบกเบฑเบ™เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เป‚เบซเบกเบ” sandbox, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบตเปˆเบ›เบญเบ”เป„เบžเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ›เบฐเบเบญเบšเบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡ ": เปเบซเบผเปˆเบ‡", เป€เบŠเบดเปˆเบ‡เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเปเบเป‰เป„เบ‚ "!". เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ arbitrary เบˆเบฒเบเป„เบŸเบฅเปŒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”, เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบŠเบตเป‰เบšเบญเบเปƒเบ™เป€เบชเบฑเป‰เบ™ modeline เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป€เบŠเบฑเปˆเบ™ "set foldexpr = execute('\:source! some_file'):". เปƒเบ™ Neovim, เบเบฒเบ™เป‚เบ— execute เปเบกเปˆเบ™เบ–เบทเบเบซเป‰เบฒเบก, เปเบ•เปˆ assert_fails เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปเบ—เบ™.

เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ "uname -a", เบžเบฝเบ‡เปเบ•เปˆเป€เบ›เบตเบ”เป„เบŸเบฅเปŒเปƒเบ™ Vim เบซเบผเบท Neovim เปเบ–เบงเบ—เปเบฒเบญเบดเบ”เบซเบผเบทเบชเบธเบ”เบ—เป‰เบฒเบเป€เบงเบปเป‰เบฒเบงเปˆเบฒ:

:!uname -a||ยป vi:fen:fdm=expr:fde=asssert_fails(โ€œเปเบซเบผเปˆเบ‡\!\\%โ€):fdl=0:fdt=โ€

เบšเปเบฅเบดเบชเบฑเบ” โ€œเปเบซเบผเปˆเบ‡! %" เบˆเบฐเบญเปˆเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบˆเบฒเบเป„เบŸเบฅเปŒเบ›เบฐเบˆเบธเบšเบฑเบ™เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก ":!uname -a". เบฅเปเบฒเบ”เบฑเบšเบเบฒเบ™เบซเบฅเบปเบšเบซเบ™เบตเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบŠเปˆเบญเบ™เป€เบชเบฑเป‰เบ™เบ—เบตเปˆเปƒเบซเป‰เบกเบฒเบˆเบฒเบเบœเบปเบ™เบœเบฐเบฅเบดเบ”เป‚เบ”เบ cat utility. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบ™เบตเป‰ เบเบฒเบ™เบ‚เบธเบ”เบ„เบปเป‰เบ™เบ•เบปเป‰เบ™เปเบšเบš เป€เบกเบทเปˆเบญเป€เบ›เบตเบ”เป„เบŸเบฅเปŒเปƒเบ™ vim, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ shell เบเบฑเบšเบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบœเบนเป‰เบ–เบทเบเป€เบ„เบฒเบฐเบฎเป‰เบฒเบ, เปเบ•เปˆเป„เบŸเบฅเปŒเบ™เบตเป‰เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบชเบปเบ‡เปƒเบชเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบœเบปเบ™เบœเบฐเบฅเบดเบ”เป„เบ›เบซเบฒ terminal เป‚เบ”เบเปƒเบŠเป‰ cat utility.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเบงเบ”เบชเบญเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡เบฎเบนเบšเปเบšเบš modeline เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡ โ€œ:set modeline?โ€. เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบกเบฑเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเป€เบชเบฑเป‰เบ™ โ€œเบ•เบฑเป‰เบ‡ nomodelineโ€ เปƒเบชเปˆ vimrc. เปƒเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบ, เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เบ–เบทเบเปเบเป‰เป„เบ‚ RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux ะธ ALT. เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚ Debian (เปƒเบ™ Debian modeline เบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบชเบฐเบ™เบฑเป‰เบ™ เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบšเปเปˆเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™).

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™