BUGTRAQ ID: 30254
Netrw是一款VIM支持的远程读写文件的插件。
Netrw脚本的netrw.vim文件中没有正确地过滤某些语句:
$ grep -n exe ~/.vim/autoload/netrw.vim|grep -v -e escape -e Decho -e
executable | wc -l
239
当用户打开目录时,会使用execute命令加载键盘映射字符串,但没有过滤容纳当前目录名的b:netrw_curdir变量。在s:BrowserMaps()函数中:
1709 if s:didstarstar || !mapcheck("<s-up>","n")
1710 nnoremap <buffer> <silent> <s-up> :Pexplore<cr>
1711 endif
1712 if g:netrw_mousemaps == 1
1713 nnoremap <buffer> <silent> <leftmouse> <leftmouse>:call <SID>NetrwLeftmouse(1)<cr>
1714 nnoremap <buffer> <silent> <middlemouse> <leftmouse>:call <SID>NetrwPrevWinOpen(1)<cr>
1715 nnoremap <buffer> <silent> <s-leftmouse> <leftmouse>:call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
--> 1716 exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.b:netrw_curdir.'")<cr>'
--> 1717 exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwLocalRm("'.b:netrw_curdir.'")<cr>'
1718 endif
--> 1719 exe 'nnoremap <buffer> <silent> <del> :call <SID>NetrwLocalRm("'.b:netrw_curdir.'")<cr>'
--> 1720 exe 'vnoremap <buffer> <silent> <del> :call <SID>NetrwLocalRm("'.b:netrw_curdir.'")<cr>'
--> 1721 exe 'nnoremap <buffer> <silent> D :call <SID>NetrwLocalRm("'.b:netrw_curdir.'")<cr>'
--> 1722 exe 'vnoremap <buffer> <silent> D :call <SID>NetrwLocalRm("'.b:netrw_curdir.'")<cr>'
--> 1723 exe 'nnoremap <buffer> <silent> R :call <SID>NetrwLocalRename("'.b:netrw_curdir.'")<cr>'
--> 1724 exe 'vnoremap <buffer> <silent> R :call <SID>NetrwLocalRename("'.b:netrw_curdir.'")<cr>'
--> 1725 exe 'nnoremap <buffer> <silent> <Leader>m :call <SID>NetrwMakeDir("")<cr>'
1726 nnoremap <buffer> <F1> :he netrw-quickhelp<cr>
因此如果用户受骗打开了带有特制文件名的目录的话,就可能导致执行任意代码。
Dr Chip netrw 127
Dr Chip
-------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
<a href=http://mysite.verizon.net/astronaut/index.html target=_blank>http://mysite.verizon.net/astronaut/index.html</a>
暂无评论