Fitxategi gaizto bat irekitzean kodea exekutatzen duen Vim-en ahultasuna

Testu-editoreetan Vim ΠΈ neovim aurkituta zaurgarritasuna (CVE-2019-12735), eta horri esker, kode arbitrarioa exekutatu daiteke bereziki diseinatutako fitxategi bat irekitzean. Arazoa modeline modu lehenetsia (":set modeline") aktibo dagoenean gertatzen da, eta horrek prozesatutako fitxategian editatzeko aukerak definitzeko aukera ematen du. Kaleratzeetan konpondu da ahultasuna
Vim 8.1.1365 ΠΈ Neovim 0.3.6.

Modeline bidez aukera kopuru mugatu bat bakarrik instalatu daiteke. Adierazpen bat aukera-balio gisa zehazten bada, sandbox moduan exekutatzen da, eta horrek eragiketa seguru errazenak soilik onartzen ditu. Kasu honetan, baliozko komandoak β€œ:source” komandoa barne hartzen du, eta bertan β€œ!” aldatzailea erabil dezakezu. zehaztutako fitxategitik komando arbitrarioak exekutatzeko. Beraz, kodea exekutatzeko, nahikoa da modelineko lerroan β€œset foldexpr=execute('\:source! some_file'):” bezalako eraikuntza bat adieraztea. Neovim-en, execute deitzea debekatuta dago, baina assert_fails erabil daiteke horren ordez.

Adibidez, "uname -a" komandoa exekutatzeko, besterik gabe, ireki fitxategi bat Vim edo Neovim-en, zeinaren lehen edo azken lerroak dioen:

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

Enpresa β€œiturria! %"-ek uneko fitxategiko komandoak irakurriko ditu eta horren arabera ":!uname -a" exekutatuko du. Ihes-sekuentziak erabil daitezke cat utilitatearen irteeratik lerro jakin bat ezkutatzeko. Esaterako, honetan ustiatu prototipoa vim-en fitxategi bat irekitzean, sare-konexio bat sortzen da biktimaren sistemarako shell sarbidearekin, baina fitxategi honek ez du susmorik piztuko cat utilitya erabiliz terminalera ateratzen denean.

Modeline moduaren jarduera egiazta dezakezu ":set modeline?" komandoarekin. Desgaitzeko, "set nomodeline" lerroa gehi dezakezu vimrc-era. Banaketan arazoa konpontzen da RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux ΠΈ ALT. Ahultasunak adabakirik gabe jarraitzen du Debian (Debian modeline lehenespenez desgaituta dago, beraz, ahultasuna ez da egoera lehenetsian agertzen).

Iturria: opennet.ru

Gehitu iruzkin berria