根据国家信息安全漏洞共享平台于2023年2月19日发布的安全漏洞通知,Linux系统自带的vim编辑器存在两个高危安全漏洞(CNVD-2023-09166、CNVD-2023-09647),攻击者可以利用该漏洞发起拒绝服务攻击,并可能运行(恶意)代码。
下面就在测试环境虚拟机,为大家演示如何升级Linux系统(CentOS 7.9)中的vim组件。
首先,我们在vim的github发布页面找到最新版的源码包(v9.0.1333),这里我们下载.tar.gz的源码包。
查看系统当前的vim版本
# vim --help
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Dec 15 2020 16:44:08)
安装依赖组件
# yum install gcc gcc-c++ ncurses-devel -y
下载后上传到/usr/loca/src目录下,并解压:
# tar -xzf vim-9.0.1333.tar.gz
# cd vim-9.0.1333
# ./configure --prefix=/root
# make
# make install
安装完成后,会在/root目录下生成一个bin目录,里面有最新编译生成的二进制文件
# cd bin/
# ls -ltr
总用量 3152
-rwxr-xr-x 1 root root 3202096 2月 21 14:37 vim
-rwxr-xr-x 1 root root 2154 2月 21 14:37 vimtutor
lrwxrwxrwx 1 root root 3 2月 21 14:37 ex -> vim
lrwxrwxrwx 1 root root 3 2月 21 14:37 view -> vim
lrwxrwxrwx 1 root root 3 2月 21 14:37 rvim -> vim
lrwxrwxrwx 1 root root 3 2月 21 14:37 vimdiff -> vim
lrwxrwxrwx 1 root root 3 2月 21 14:37 rview -> vim
-rwxr-xr-x 1 root root 18864 2月 21 14:37 xxd
备份系统自带的vim组件程序
# cd /usr/bin/
# mv vim vim.20230221
# mv vimtutor vimtutor.20230221
# mv xxd xxd.20230221
用编译文件覆盖/usr/bin目录下的组件
# cd /root/bin
# mv * /usr/bin/
mv:是否覆盖"/usr/bin/ex"? y
mv:是否覆盖"/usr/bin/rview"? y
mv:是否覆盖"/usr/bin/rvim"? y
mv:是否覆盖"/usr/bin/view"? y
mv:是否覆盖"/usr/bin/vimdiff"? y
再次检查vim的版本
# vim --version
VIM - Vi IMproved 9.0 (2022 Jun 28, 编译于 Feb 21 2023 14:26:53)
包含补丁: 1-1333
编译者 root@k8s-master
巨型版本 无图形界面。 可使用(+)与不可使用(-)的功能:
+acl +file_in_path +mouse_urxvt -tag_any_white
+arabic +find_in_path +mouse_xterm -tcl
+autocmd +float +multi_byte +termguicolors
+autochdir +folding +multi_lang +terminal
-autoservername -footer -mzscheme +terminfo
-balloon_eval +fork() +netbeans_intg +termresponse
+balloon_eval_term +gettext +num64 +textobjects
-browse -hangul_input +packages +textprop
++builtin_terms +iconv +path_extra +timers
+byte_offset +insert_expand -perl +title
+channel +ipv6 +persistent_undo -toolbar
+cindent +job +popupwin +user_commands
-clientserver +jumplist +postscript +vartabs
-clipboard +keymap +printer +vertsplit
+cmdline_compl +lambda +profile +vim9script
+cmdline_hist +langmap -python +viminfo
+cmdline_info +libcall -python3 +virtualedit
+comments +linebreak +quickfix +visual
+conceal +lispindent +reltime +visualextra
+cryptv +listcmds +rightleft +vreplace
+cscope +localmap -ruby +wildignore
+cursorbind -lua +scrollbind +wildmenu
+cursorshape +menu +signs +windows
+dialog_con +mksession +smartindent +writebackup
+diff +modify_fname -sodium -X11
+digraphs +mouse -sound -xfontset
-dnd -mouseshape +spell -xim
-ebcdic +mouse_dec +startuptime -xpm
+emacs_tags -mouse_gpm +statusline -xsmp
+eval -mouse_jsbterm -sun_workshop -xterm_clipboard
+ex_extra +mouse_netterm +syntax -xterm_save
+extra_search +mouse_sgr +tag_binary
-farsi -mouse_sysmouse -tag_old_static
系统 vimrc 文件: "$VIM/vimrc"
用户 vimrc 文件: "$HOME/.vimrc"
第二用户 vimrc 文件: "~/.vim/vimrc"
用户 exrc 文件: "$HOME/.exrc"
defaults 文件: "$VIMRUNTIME/defaults.vim"
$VIM 预设值: "/root/share/vim"
编译方式: gcc -std=gnu99 -c -I. -Iproto -DHAVE_CONFIG_H -g -O2 -D_REENTRANT -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
链接方式:
gcc -std=gnu99 -L/usr/local/lib -Wl,--as-needed -o vim -lm -ltinfo -lrt -ldl
参考:
https://www.cnvd.org.cn/flaw/show/CNVD-2023-09166
https://www.cnvd.org.cn/flaw/show/CNVD-2023-09647
https://github.com/vim/vim/releases/tag/v9.0.1333
https://www.cnblogs.com/frytea/p/13411353.html