Троянец в vim's latex_suite?

Я просматривал код для latex_suite под названием vim_latex ( http://vim-latex.sourceforge.net/) и нашел несколько интересных строк в файле с именем "templates.vim":

" Back-Door to trojans !!!
 function! <SID>Compute(what)
     exe a:what
     if exists('s:comTemp')
         return s:comTemp.s:comTemp
     else
         return ''
     endif
endfunction

Ну, я не эксперт по vim-коду, поэтому я не могу интерпретировать эти строки, за исключением комментария, который меня немного расстраивает. Ребята, у вас есть представление о том, что происходит?

Редактировать: Кажется, что функция вызывается только следующим:

" ProcessTemplate: processes the special characters in template file. {{{
"                  This implementation follows from Gergely Kontra's
"                  mu-template.vim
"                  http://vim.sourceforge.net/scripts/script.php?script_id=222
function! <SID>ProcessTemplate()
  if exists('s:phsTemp') && s:phsTemp != ''
    exec 'silent! %s/^'.s:comTemp.'\(\_.\{-}\)'.s:comTemp.'$/\=<SID>Compute(submatch(1))/ge'
    exec 'silent! %s/'.s:exeTemp.'\(.\{-}\)'.s:exeTemp.'/\=<SID>Exec(submatch(1))/ge'
    exec 'silent! g/'.s:comTemp.s:comTemp.'/d'  
    " A function only puts one item into the search history...
    call Tex_CleanSearchHistory()
  endif
endfunction

Согласно описанию файла заголовка, целью этих функций является обработка шаблонов, расположенных в определенном каталоге.

1 ответ

Решение

Я думаю, что комментарий предназначен как предупреждение. Функция <SID>ProcessTemplate() просматривает файл шаблона, ищет определенные (настраиваемые) шаблоны и вызывает <SID>Compute(what) где аргумент what текст извлечен из шаблона. Обратите внимание на строку :exe a:what,

Если вы установите файл шаблона из ненадежного источника, тогда могут произойти плохие вещи.

Конечно, если вы установите плагин vim из ненадежного источника, то могут произойти и плохие вещи. Размещение вредоносного кода в файле шаблона добавляет несколько уровней косвенности, усложняя реализацию и диагностику.

Вполне возможно, что этот код был написан до :sandbox Команда была добавлена ​​в vim, и это может быть простым способом сделать этот код более безопасным. Я не смотрел на то, что разрешено в песочнице, и сравнил это с предполагаемым использованием этой обработки шаблона.

Другие вопросы по тегам