LINUX.ORG.RU

Целочисленное переполнение в vim

 ,


0

0

На данный момент наличие бага, возможно приводящему к выполнению произвольного кода с правами запустившего vim юзера, подтверждено только в NetBSD для версий vim-7.1.315 и vim-7.2.0. Аналогичные версии в Linux пока не показали наличие проблемы, а другие BSD не протестированы. Обращаюсь к пользователям linux.org.ru с просьбой проверить эту проблемы на разных версиях vim и под разными ОС.

Для демонстрации достаточно файла из 4х символов-пробелов:
| hexdump -Cv
00000000 20 20 20 20 0a | .|
00000005

Если поставить курсор на 3-й пробел и выполнить: ctrl+v $ c
то возникнет ошибка
E341: Internal error: lalloc(0, )
cannot yank; delete anyway (y/n)?
а если поставить курсор на 4ый (последний пробел) и выполнить ту же последовательность (ctrl+v $ c), то возникает
E342: Out of memory! (allocating 4294967295 bytes)
cannot yank; delete anyway (y/n)?

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

>>> pkg/39375

anonymous

Проверено: Shaman007 ()

Re: Целочисленное переполнение в vim

Опции компиляции для 7.2, подверженному проблеме (NetBSD):

VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Aug 18 2008 15:14:05)
Modified by martti@NetBSD.org
Compiled by user@user
Normal version without GUI. Features included (+) or not (-):
-arabic +autocmd -balloon_eval -browse -builtin_terms +byte_offset +cindent
-clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
+cryptv -cscope +cursorshape +dialog_con +diff +digraphs -dnd -ebcdic
-emacs_tags +eval +ex_extra +extra_search -farsi +file_in_path +find_in_path
+float +folding -footer +fork() +gettext -hangul_input +iconv +insert_expand
+jumplist -keymap -langmap +libcall +linebreak +lispindent +listcmds +localmap
+menu +mksession +modify_fname +mouse -mouseshape -mouse_dec -mouse_gpm
-mouse_jsbterm -mouse_netterm -mouse_sysmouse +mouse_xterm +multi_byte
+multi_lang -mzscheme -netbeans_intg -osfiletype +path_extra -perl +postscript
+printer -profile -python +quickfix +reltime -rightleft -ruby +scrollbind
-signs +smartindent -sniff +statusline -sun_workshop +syntax +tag_binary
+tag_old_static -tag_any_white -tcl -terminfo +termresponse +textobjects +title
-toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo
+vreplace +wildignore +wildmenu +windows +writebackup -X11 -xfontset -xim -xsmp
-xterm_clipboard -xterm_save
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
user exrc file: "$HOME/.exrc"
fall-back for $VIM: "/usr/pkg/share/vim"
Compilation:
cc -c -I. -Iproto -DHAVE_CONFIG_H -I/usr/include -O2 -I/usr/include
Linking: cc -L/usr/lib -Wl,-R/usr/lib -Wl,-R/usr/pkg/lib -o vim -lm -ltermcap -liconv -lintl

anonymous ()

Re: Целочисленное переполнение в vim

Замените | hexdump -Cv на
cat filename | hexdump -Cv
для понятности, а то продолбалось.

anonymous ()

Re: Целочисленное переполнение в vim

pkgsrc запросило подтверждение бага для 7.2, получило его, и таинственно замолчало, видимо, надолго.
http://mail-index.netbsd.org/pkgsrc-bugs/index.html

anonymous ()
Ответ на: Re: Целочисленное переполнение в vim от anonymous

Re: Целочисленное переполнение в vim

>Уже давно все перешли на Gedit

Вот чем меня радуют анонимусы - так это тупым офтопиком.

По делу: Баг не обнаруживается

FreeBSD 6.3-STABLE i386

VIM - Vi IMproved 7.1 (2007 May 12, compiled Aug 5 2008 12:42:24) Included patches: 1-2, 4-6, 8-40, 42-64, 66-69, 71, 73-79, 81-87, 89-90, 93-123, 125-127, 130-133, 135-145, 147-157, 159-167, 169-195, 197-203, 205-274, 276-277, 279, 281, 284, 286-311, 313-320, 322-330 Normal version without GUI. Features included (+) or not (-): -arabic +autocmd -balloon_eval -browse +builtin_terms +byte_offset +cindent -clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments +cryptv -cscope +cursorshape +dialog_con +diff +digraphs -dnd -ebcdic -emacs_tags +eval +ex_extra +extra_search -farsi +file_in_path +find_in_path +folding -footer +fork() -gettext -hangul_input -iconv +insert_expand +jumplist -keymap -langmap +libcall +linebreak +lispindent +listcmds +localmap +menu +mksession +modify_fname +mouse -mouseshape -mouse_dec -mouse_gpm -mouse_jsbterm -mouse_netterm +mouse_xterm +multi_byte +multi_lang -mzscheme -netbeans_intg -osfiletype +path_extra -perl +postscript +printer -profile -python +quickfix +reltime -rightleft -ruby +scrollbind -signs +smartindent -sniff +statusline -sun_workshop +syntax +tag_binary +tag_old_static -tag_any_white -tcl +terminfo +termresponse +textobjects +title -toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup -X11 -xfontset -xim -xsmp -xterm_clipboard -xterm_save system vimrc file: "$VIM/vimrc" user vimrc file: "$HOME/.vimrc" user exrc file: "$HOME/.exrc" fall-back for $VIM: "/usr/local/share/vim" Compilation: cc -c -I. -Iproto -DHAVE_CONFIG_H -O2 -fno-strict-aliasing -pipe Linking: cc -o vim -ltermlib

stellar ()

Re: Целочисленное переполнение в vim

Посты доказывают, что BSD как Цой - RIP давно, но никто не хочет этого понять.

anonymous ()
Ответ на: Re: Целочисленное переполнение в vim от beastie

Re: Целочисленное переполнение в vim

VIM - Vi IMproved 7.1 (2007 May 12, compiled Mar 10 2008 15:44:56)
Included patches: 1-2, 4-6, 8-40, 42-64, 66-69, 71, 73-79, 81-87, 89-90, 93-121,
125, 127, 130-133, 135-145, 147-157, 159-167, 169-175, 177, 179-185, 188-190, 1
92-195, 198-203, 205-244, 126
Compiled by naddy@i386new.ports.openbsd.org
Normal version without GUI. Features included (+) or not (-):
-arabic +autocmd -balloon_eval -browse +builtin_terms +byte_offset +cindent
-clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
+cryptv -cscope +cursorshape +dialog_con +diff +digraphs -dnd -ebcdic
-emacs_tags +eval +ex_extra +extra_search -farsi +file_in_path +find_in_path
+folding -footer +fork() +gettext -hangul_input +iconv +insert_expand +jumplist
-keymap -langmap +libcall +linebreak +lispindent +listcmds +localmap +menu
+mksession +modify_fname +mouse -mouseshape -mouse_dec -mouse_gpm
-mouse_jsbterm -mouse_netterm +mouse_xterm +multi_byte +multi_lang -mzscheme
-netbeans_intg -osfiletype +path_extra -perl +postscript +printer -profile
-python +quickfix +reltime -rightleft -ruby +scrollbind -signs +smartindent
-sniff +statusline -sun_workshop +syntax +tag_binary +tag_old_static
-tag_any_white -tcl +terminfo +termresponse +textobjects +title -toolbar
+user_commands +vertsplit +virtualedit +visual +visualextra +viminfo +vreplace
+wildignore +wildmenu +windows +writebackup -X11 -xfontset -xim -xsmp
-xterm_clipboard -xterm_save
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
user exrc file: "$HOME/.exrc"
fall-back for $VIM: "/usr/local/share/vim"
Compilation:
cc -c -I. -Iproto -DHAVE_CONFIG_H -I/usr/local/include -O2 -pipe
Linking: cc -L/usr/local/lib -o vim -lcurses -lintl -liconv

beastie ★★★★★ ()
Ответ на: Re: Целочисленное переполнение в vim от anonymous

Re: Целочисленное переполнение в vim

>Посты доказывают, что BSD как Цой - RIP давно, но никто не хочет этого понять.

Посты доказывают, что анонизмусы как были тыпым быдлом, так и остались.

stellar ()

Re: Целочисленное переполнение в vim

Есть такое понятие как костыли. М.б. баг в виме, а в линуксе костыли для обхода таких багов - тогда понятно почему в Linux не наблюдается. М.б. баг в NetBSD, а в виме нет костылей - тоже понятно и пр. Разобраться, где баги, а где костыли, очень сложно. Отсюда и лезут баги, проявляющиеся при невероятном стечении обстоятельств... Баги, которые проявляются всегда и везде, неинтересны - их сразу же закрывают.

anonymous ()
Ответ на: Re: Целочисленное переполнение в vim от beastie

Re: Целочисленное переполнение в vim

>same here, OpenBSD 4.3, vim-7.1.244p0-no_x11 >beastie (*) (18.08.2008 17:50:19)

same это к чему? Также нет бага как и во фре или также есть как и в netbsd?

anonymous ()

Re: Целочисленное переполнение в vim

Вот же дерьмо это ваше БЗД. Проверил на нескольких вимах под рукой (vim-enhanced-6.3.046-0.40E.7, vim-enhanced-7.0.109-3.el5.3, vim-enhanced-7.1.245-1.fc8, vim-enhanced-7.1.291-1.fc9 - в разных комбинациях под i386 и x86-64), ни на одном бага не наблюдается. А бзд - решето, даже в такой безупречной программе, как vim, сумели сегфолт сотворить.

Думаю, глюки в тамошней libc. Это недразумение мало того, что не поддерживает половины возможностей православной glibc, так еще и глючное как хрен знает что.

anonymous ()
Ответ на: Re: Целочисленное переполнение в vim от anonymous

Re: Целочисленное переполнение в vim

>Вот же дерьмо это ваше БЗД.

Убей себя об стену, анонимный идиот.

Бага нет: FreeBSD 7.0-STABLE i386 VIM - Vi IMproved 7.1 (2007 May 12, compiled May 30 2008 13:24:51) Included patches: 1-2, 4-6, 8-40, 42-64, 66-69, 71, 73-79, 81-87, 89-90, 93-123, 125-127, 130-133, 135-145, 147-157, 159-167, 169-195, 197-203, 205-274, 276-277, 279, 281, 284, 286-293 Compiled by ashetuhin@freebsd-test.bulyon.local Normal version without GUI. Features included (+) or not (-): -arabic +autocmd -balloon_eval -browse +builtin_terms +byte_offset +cindent -clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments +cryptv -cscope +cursorshape +dialog_con +diff +digraphs -dnd -ebcdic -emacs_tags +eval +ex_extra +extra_search -farsi +file_in_path +find_in_path +folding -footer +fork() -gettext -hangul_input +iconv +insert_expand +jumplist -keymap -langmap +libcall +linebreak +lispindent +listcmds +localmap +menu +mksession +modify_fname +mouse -mouseshape -mouse_dec -mouse_gpm -mouse_jsbterm -mouse_netterm +mouse_xterm +multi_byte +multi_lang -mzscheme -netbeans_intg -osfiletype +path_extra -perl +postscript +printer -profile -python +quickfix +reltime -rightleft -ruby +scrollbind -signs +smartindent -sniff +statusline -sun_workshop +syntax +tag_binary +tag_old_static -tag_any_white -tcl +terminfo +termresponse +textobjects +title -toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup -X11 -xfontset -xim -xsmp -xterm_clipboard -xterm_save system vimrc file: "$VIM/vimrc" user vimrc file: "$HOME/.vimrc" user exrc file: "$HOME/.exrc" fall-back for $VIM: "/usr/local/share/vim" Compilation: cc -c -I. -Iproto -DHAVE_CONFIG_H -I/usr/local/include -O2 -fno-strict-aliasing -pipe Linking: cc -L/usr/local/lib -o vim -ltermlib -liconv

stellar ()

Re: Целочисленное переполнение в vim

Проверил, не работает (Linux). Однако баг крутой, и воспроизвести надо постараться, и "с правами пользователя", тоже не впечатляет.

fractaler ★★★★★ ()

Re: Целочисленное переполнение в vim

gentoo, vim-7.2, баг отсутствует

generatorglukoff ★★ ()

Re: Целочисленное переполнение в vim

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

в баше такая же фигня =) тоже можно выполнить произвольный код от имени пользователя.

alex_custov ★★★★★ ()

Re: Целочисленное переполнение в vim

отрывать, отрывать... отрывать сразу, без лишних вопросов, и прижигать, чтобы не выросли новые.

anonymous ()

Re: Целочисленное переполнение в vim

vim-7.1.315 на NetBSD 3.0 не вызывает ошибки, однако он же на NetBSD 4.99.71 (это current) - вызывает. На 4.0 stable протестить не могу. Также выяснено, что ~/.vimrc не влияет на исход. Под подозрение подпадает базовая система NetBSD-current (libc?).

автор топика

anonymous ()

Re: Целочисленное переполнение в vim

В BSD уже был 25летний баг котоырй как бы и "не проявлялся", так что кто здесь сказал про стройную конструкцию костылей - это в тему.

anonymous ()
Ответ на: Re: Целочисленное переполнение в vim от alex_custov

Re: Целочисленное переполнение в vim

>в баше такая же фигня =) тоже можно выполнить произвольный код от имени пользователя.

файлик могут админу прислать по почте и попросить посмотреть в текстовом редакторе. И если он сидя в админской консоли, откроет его в виме и при этом выполнится неий сценарий от его имени - будет круто.

ЗЫ Но в данном случае эт врядли...

AVL2 ★★★★★ ()
Ответ на: Re: Целочисленное переполнение в vim от anonymous

Re: Целочисленное переполнение в vim

> Если админ нормальный - то он откроет emacs :)

То есть в некой компании админа, которому пришла в голову "гениальная" мысль взгромоздить (x)emacs на боевой сервер не уволили немедленно? Интересные дела творятся, однако..

anonymous ()

Re: Целочисленное переполнение в vim

opensuse 11, отсутствует

anonymous ()

Re: Целочисленное переполнение в vim

Бага нет, Mandriva 2008.0

VIM - Vi IMproved 7.1 (2007 May 12, compiled Sep 7 2007 17:08:35) Заплатки: 1-87 Скомпилирован Anssi Hannula <anssi@mandriva.org> Огромная версия без графического интерфейса. Включённые (+) и отключённые (-) особенности: +arabic +autocmd -balloon_eval -browse ++builtin_terms +byte_offset +cindent -clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments +cryptv +cscope +cursorshape +dialog_con +diff +digraphs -dnd -ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path +folding -footer +fork() +gettext -hangul_input +iconv +insert_expand +jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap +menu +mksession +modify_fname +mouse -mouseshape +mouse_dec -mouse_gpm -mouse_jsbterm +mouse_netterm +mouse_xterm +multi_byte +multi_lang -mzscheme -netbeans_intg -osfiletype +path_extra +perl +postscript +printer +profile +python +quickfix +reltime +rightleft -ruby +scrollbind +signs +smartindent -sniff +statusline -sun_workshop +syntax +tag_binary +tag_old_static -tag_any_white -tcl +terminfo +termresponse +textobjects +title -toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup -X11 -xfontset -xim -xsmp -xterm_clipboard -xterm_save общесистемный файл vimrc: "/etc/vim/vimrc" пользовательский файл vimrc: "$HOME/.vimrc" пользовательский файл exrc: "$HOME/.exrc" значение $VIM по умолчанию: "/usr/share/vim" Параметры компиляции: gcc -c -I. -Iproto -DHAVE_CONFIG_H -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fexceptions -fomit-frame-pointer -march=i586 -mtune=generic -fasynchronous-unwind-tables -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/lib/perl5/5.8.8/i386-linux/CORE -I/usr/include/python2.5 -pthread Сборка: gcc -Wl,-E -Wl,-rpath,/usr/lib/perl5/5.8.8/i386-linux/CORE -L/usr/local/lib -o vim -ltermcap -lacl -Wl,-E -Wl,-rpath,/usr/lib/perl5/5.8.8/i386-linux/CORE -L/usr/local/lib /usr/lib/perl5/5.8.8/i386-linux/auto/DynaLoader/DynaLoader.a -L/usr/lib/perl5/5.8.8/i386-linux/CORE -lperl -lutil -lc -L/usr/lib/python2.5/config -lpython2.5 -lutil -lm -Xlinker -export-dynamic

st0ke ()

Re: Целочисленное переполнение в vim

>выполнению произвольного кода с правами запустившего

Мне это не страшно , я сам могу любой код со своими правами запускать ...

VIM ()

Re: Целочисленное переполнение в vim

1) To moderators: отметьте в теме, что актуально только для NetBSD-current.
2) Где штатные NetBSDшники? dlagno, soko1, sibl, кто там ещё... Неужели ни у кого нет NetBSD 4.0 и выше?

anonymous ()
Ответ на: Re: Целочисленное переполнение в vim от anonymous

Re: Целочисленное переполнение в vim

>Разобраться, где баги, а где костыли, очень сложно. Отсюда и лезут баги, проявляющиеся при невероятном стечении обстоятельств... Баги, которые проявляются всегда и везде, неинтересны - их сразу же закрывают.

Баги на костылях... Это которые INVALID, что ли?

По теме сказать нечего, у меня не воспроизводится. Хоть бы в Linux все уязвимости такие были, благо лунное затмение уже прошло.

lodin ★★★★ ()

Re: Целочисленное переполнение в vim

бага нет

cogentoo ~ $ uname -snr
Linux cogentoo 2.6.22-co-0.7.2

cogentoo ~ $ vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Aug 15 2008 18:56:49)
Modified by Gentoo-7.2
Compiled by root@cogentoo
Huge version without GUI.  Features included (+) or not (-):
+arabic +autocmd -balloon_eval -browse ++builtin_terms +byte_offset +cindent
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
+cryptv -cscope +cursorshape +dialog_con +diff +digraphs -dnd -ebcdic
+emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path
+float +folding -footer +fork() +gettext -hangul_input +iconv +insert_expand
+jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap
+menu +mksession +modify_fname +mouse -mouseshape +mouse_dec +mouse_gpm
-mouse_jsbterm +mouse_netterm -mouse_sysmouse +mouse_xterm +multi_byte
+multi_lang -mzscheme -netbeans_intg -osfiletype +path_extra +perl +postscript
+printer +profile +python +quickfix +reltime +rightleft -ruby +scrollbind
+signs +smartindent -sniff +statusline -sun_workshop +syntax +tag_binary
+tag_old_static -tag_any_white -tcl +terminfo +termresponse +textobjects +title
 -toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo
+vreplace +wildignore +wildmenu +windows +writebackup +X11 +xfontset -xim
+xsmp_interact +xterm_clipboard -xterm_save
   system vimrc file: "/etc/vim/vimrc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/share/vim"
Compilation: i686-pc-linux-gnu-gcc -c -I. -Iproto -DHAVE_CONFIG_H     -O2 -pipe    -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm  -I/usr/lib/perl5/5.8.8/i686-linux/CORE  -I/usr/include/python2.5 -pthread
Linking: i686-pc-linux-gnu-gcc   -rdynamic  -Wl,-O1 -L/usr/local/lib -o vim    -lXt -lcurses -lacl -lgpm   -rdynamic  -L/usr/local/lib /usr/lib/perl5/5.8.8/i686-linux/auto/DynaLoader/DynaLoader.a -L/usr/lib/perl5/5.8.8/i686-linux/CORE -lperl -lutil -lc -L/usr/lib/python2.5/config -lpython2.5 -lpthread -lutil -lm -Xlinker -export-dynamic

last_man_standing ★★ ()

Re: Целочисленное переполнение в vim

Может быть автор поделится своим vimrc?

anonymous ()

Re: Целочисленное переполнение в vim

у меня в дебиане работает нормально :)

xargs ★★★ ()

Re: Целочисленное переполнение в vim

Вот так вот - юзать черт знает какие не ГНУтые текстовые редакторы. С emacs такого не бывает, не то что с вашим charitywar'ным вимом. Да и функционала полезного в имаксе побольше.

anonymous ()
Ответ на: Re: Целочисленное переполнение в vim от anonymous

Re: Целочисленное переполнение в vim

> Да и функционала полезного в имаксе побольше.

Полтора унитаза емаксового функционала следует закопать отдельно от емакса, дабы не воссоединились

anonymous ()

Re: Целочисленное переполнение в vim

Сферический конь в вакууме... Покажите мне человека кто от имени рута откроет текстовый файлик в vim пришелший по электропочьте и я его собственоручно пристрелю. Ну, или вышлю деньги и рецепт на покупку KCN ))

gnunixon ★★★ ()
Ответ на: Re: Целочисленное переполнение в vim от gnunixon

Re: Целочисленное переполнение в vim

>Покажите мне человека кто от имени рута откроет текстовый файлик в vim пришелший по электропочьте и я его собственоручно пристрелю.

Тогда тебе придется пристрелить бОльшую часть ЛОРа. Особенно вспоминая эпическую жесть с командой

cat "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

stellar ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.