Уязвимост във Vim, която Π²ΠΎΠ΄ΠΈ Π΄ΠΎ изпълнСниС Π½Π° ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ отварянС Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ Ρ„Π°ΠΉΠ»

Π’ тСкстови Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΈ Vim ΠΈ НСовим Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΎ уязвимост (CVE-2019 12735-), ΠΊΠΎΠ΅Ρ‚ΠΎ позволява ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΠΊΠΎΠ΄ Π΄Π° бъдС изпълнСн ΠΏΡ€ΠΈ отварянС Π½Π° спСциално ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ Ρ„Π°ΠΉΠ». ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ възниква, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π΅ΠΆΠΈΠΌΡŠΡ‚ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€Π°Π½Π΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ (β€ž:set modelineβ€œ) Π΅ Π°ΠΊΡ‚ΠΈΠ²Π΅Π½, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π² обработСния Ρ„Π°ΠΉΠ». Уязвимостта Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π° Π² вСрсиитС
Vim 8.1.1365 ΠΈ Neovim 0.3.6.

Π‘Π°ΠΌΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π±Ρ€ΠΎΠΉ ΠΎΠΏΡ†ΠΈΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ инсталирани Ρ‡Ρ€Π΅Π· modeline. Ако Π΄Π°Π΄Π΅Π½ ΠΈΠ·Ρ€Π°Π· Π΅ ΡƒΠΊΠ°Π·Π°Π½ ΠΊΠ°Ρ‚ΠΎ стойност Π½Π° опция, Ρ‚ΠΎΠΉ сС изпълнява Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΏΡΡΡŠΡ‡Π½Π° срСда, ΠΊΠΎΠΉΡ‚ΠΎ позволява само Π½Π°ΠΉ-проститС бСзопасни ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π’ Ρ‚ΠΎΠ·ΠΈ случай Π²Π°Π»ΠΈΠ΄Π½Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€œ:source”, Π² която ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° β€œ!”. Π·Π° изпълнСниС Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΎΡ‚ посочСния Ρ„Π°ΠΉΠ». По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, Π·Π° Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄Π°, Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄Π° посочитС Π² Ρ€Π΅Π΄Π° Π½Π° modelline конструкция ΠΊΠ°Ρ‚ΠΎ β€žset foldexpr=execute('\:source! some_file'):". Π’ Neovim ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° execute Π΅ Π·Π°Π±Ρ€Π°Π½Π΅Π½ΠΎ, Π½ΠΎ вмСсто Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° assert_fails.

НапримСр, Π·Π° Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žuname -aβ€œ, просто ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ» във Vim ΠΈΠ»ΠΈ Neovim, Ρ‡ΠΈΠΉΡ‚ΠΎ ΠΏΡŠΡ€Π²ΠΈ ΠΈΠ»ΠΈ послСдСн Ρ€Π΅Π΄ ΠΊΠ°Π·Π²Π°:

:!uname -a||Β» vi:fen:fdm=expr:fde=assert_fails(β€œsource\!\ \%”):fdl=0:fdt=”

Π€ΠΈΡ€ΠΌΠ° β€žΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ! %" Ρ‰Π΅ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ ΠΎΡ‚ тСкущия Ρ„Π°ΠΉΠ» ΠΈ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ Ρ‰Π΅ изпълни ":!uname -a". Escape послСдоватСлноститС ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° скриванС Π½Π° Π΄Π°Π΄Π΅Π½ Ρ€Π΅Π΄ ΠΎΡ‚ ΠΈΠ·Ρ…ΠΎΠ΄Π° ΠΎΡ‚ ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° cat. НапримСр Π² Ρ‚ΠΎΠ²Π° СксплоатационСн ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ ΠΏΡ€ΠΈ отварянС Π½Π° Ρ„Π°ΠΉΠ» във vim сС създава ΠΌΡ€Π΅ΠΆΠΎΠ²Π° Π²Ρ€ΡŠΠ·ΠΊΠ° с Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ систСмата Π½Π° ΠΆΠ΅Ρ€Ρ‚Π²Π°Ρ‚Π°, Π½ΠΎ Ρ‚ΠΎΠ·ΠΈ Ρ„Π°ΠΉΠ» няма Π΄Π° ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·Π²Π΅ΠΆΠ΄Π° към Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° с ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° cat.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ активността Π½Π° Ρ€Π΅ΠΆΠΈΠΌΠ° modeline с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€œ:set modeline?”. Π—Π° Π΄Π° Π³ΠΎ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄Π° β€žset nomodelineβ€œ към vimrc. Π’ дистрибуциитС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅ Ρ€Π΅ΡˆΠ΅Π½ Π² RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux ΠΈ ALT. Уязвимостта остава нСотстранСна Debian (Π² Debian modeline Π΅ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ уязвимостта Π½Π΅ сС появява Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅).

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€