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

Ответ на: комментарий от stellar

vim дурлаг, все таки notepad.exe под вайном рулит

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

>Re: Целочисленное переполнение в vim
>Может быть автор поделится своим vimrc?

>anonymous (*) (18.08.2008 22:44:01)


Оно не зависит от ~/.vimrc
Я проверял со своим личным vimrc и со случаем когда этого файла не было вообще - результат тот же.
Работает на NetBSD current, насчёт NetBSD 4.0 не известно, остальные вроде бы не подвержены (или там есть костыли для обхода подобных багов).

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

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

открой для себя tramp или mg (вместо nvi), чудило. Мне совершенно необязательно иметь emacs на серваке, чтобы редактировать конфигурационный файл прямо из имакса.

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

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

Если он откроет его не от рута, а из аккаунта, из которого периодически делает "su", то задача лишь усложняется. Имея доступ к непривилегированному аккаунту, который использует администратор системы, можно получить и права root'а.

Кроме того, подобная уязвимость может использоваться как локальная. Например, к администратору обращается пользователь с просьбой, которая подразумевает редактирование файла в каталоге этого пользователя (к примеру, пользователь просит помочь найти ошибку в скрипте). Наверняка большинство администраторов откроют чужой файл с правами root'а, а не будут делать "su пользователь". А файл будет подготовлен таким образом, что выполняя заявку администратор с большой вероятностью нажмёт ту комбинакцию клавиш.

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

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

На боевом сервере положено непременно /bin/ed ? /me почему-то считал, в боевом сервере (не путать с роутером) наличие десятка емаксов в памяти мало заметно...

fk0
()

>NetBSD
>OpenBSD

>Vim

у соседа корова сдохла

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

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

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

> VIM (*) (18.08.2008 20:27:10)

AnDoR ★★★★★
()

глюковим не нужен, для гуи есть kate, для консоли mc и nano

anonymous
()

О чём новость вообще?

Я так понимаю - локальная уязвимость в очень редкой системе, точнее в не стабильной её ветке. Воспроизводится при участии атакуемого пользователя, который должен попытаться отредактировать файл с сомнительным содержимым определённым образом.

Неужели ГОЛАКТЕКО ОПАСНОСТЕ?

morbo
()

Не воспроизвёл ни E341, ни E342.

ALT Linux, ru_RU.UTF8
vim-common-7.1.068-alt1
vim-console-7.1.068-alt1
vim-minimal-7.1.068-alt1

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

АААА! Одна из немногих уязвимостей в ОС VIM!!! Не емакс, конечно, но...

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

>Где штатные NetBSDшники? dlagno, soko1, sibl, кто там ещё... Неужели ни у кого нет NetBSD 4.0 и выше?

NetBSD есть, но не из свежих (3.0), посему проверить не могу. На FreeBSD 7.0-STABLE ошибки не возникает.

soko1 ★★★★★
()

баги не обнаружил


-<devil@Hor.local:~>-                                                                                                                                                     -<s000>-
-<%>- /opt/local/bin/vim --version                                                                                                                             -<09:54 вт,19 авг>-
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Aug 19 2008 09:52:52)
MacOS X (unix) version
Included patches: 1-2
Compiled by devil@Hor.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 
+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: "/opt/local/etc/vimrc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/opt/local/share/vim"
Compilation: /usr/bin/gcc-4.0 -c -I. -Iproto -DHAVE_CONFIG_H   -I/opt/local/include -DMACOS_X_UNIX -no-cpp-precomp -I/Developer/Headers/FlatCarbon  -O        
Linking: /usr/bin/gcc-4.0   -L/opt/local/lib -L/usr/local/lib -o vim       -lm  -lncurses -liconv -framework Carbon        
-<devil@Hor.local:~>-                                                                                                                                                     -<s000>-
-<%>- uname -a                                                                                                                                                 -<09:54 вт,19 авг>-
Darwin Hor.local 9.4.0 Darwin Kernel Version 9.4.0: Mon Jun  9 19:30:53 PDT 2008; root:xnu-1228.5.20~1/RELEASE_I386 i386 i386 MacBook2,1 Darwin

DeViL
()

Просто смешно читать такие новости! В _редакторе_ уязвимость выполнения кода! Мало того, что он просто убог, так ещё и дыряв. Я не флейма ради, просто не понимаю, зачем поддерживать такие мудоредакторы. Есть же нормальный FTE! Прикрутить к нему подсветку всего сущего и больше вы никогда не вернётесь в свой vi. Под виндой такие "уязвимости" вообще нонсенс и будут приняты скорее за 1апрельскую шутку. :) Это я к тому, что стремиться надо к максимально безопасным языкам, куда Сипипи никогда не относился. Обидно, что куча клепателей продолжают юзать "си-с-классами", воображая себя кульхацкерами.

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

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

а я везде на серверах использую vim.

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

matumba, умри. Пользуйся своим notepad.exe под пользователем SYSTEM, который запущен через осла под юзером.

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

>Если он откроет его не от рута, а из аккаунта, из которого периодически делает "su", то задача лишь усложняется. Имея доступ к непривилегированному аккаунту, который использует администратор системы, можно получить и права root'а.

Я бы сказал, что аккаунт администратора будет поценнее рута. Вполне возможно, что в ~/.ssh у него ключики к другим серверам...

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

>Это я к тому, что стремиться надо к максимально безопасным языкам, куда Сипипи никогда не относился.

Детко, vim написан на C.

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

> Есть же нормальный FTE!

Смешной ты... Сравниваешь редактор под X с консольным.

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

> Это я к тому, что стремиться надо к максимально безопасным языкам, куда Сипипи никогда не относился.

Если руки кривые, никакой самый безопасный язык не спасет.

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

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

>Действительно, нормальный админ откроет vi или ed. iBliss # (*) (18.08.2008 21:21:56)

Нормальный админ "левый" файл откроет на локальной тачке, хоть notepad-ом, хоть less-ом, по-настроению. Постоянно под рутом, да еще и на рабочем сервере сидят только дебилы, обычно недолго.

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

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

+1

Фабрека звёзт - наше всё. Пусть старые пирдуны слушоют Цоя. Мы жы - пакаление пепси - выбераем Диму Билана.

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

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

В смысле?

askh ★★★★
()

интересно, почему на лоре столько юниксоидов? ведь, ничего, интересного для себя тут не найдут.

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

>А зачем админ будет открывать левый текстовик из админской консоли? :)

А откуда он узнает, что файл левый?

Юзер оставил у себя в хомяке какой нибудь текстовик и попросил посмотреть его. Или почта на хосте появилась, запустил mail и вот те на...

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

>Нормальный админ "левый" файл откроет на локальной тачке, хоть notepad-ом

нормальный админ и нотепад - вещи несовместимые...

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

> Действительно, нормальный админ откроет vi или ed.

Нормальному админу почитать достаточно less, а правит пусть секретарша. :)

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

>Я так понимаю - локальная уязвимость в очень редкой системе, точнее в не стабильной её ветке. Воспроизводится при участии атакуемого пользователя, который должен попытаться отредактировать файл с сомнительным содержимым определённым образом.

>Неужели ГОЛАКТЕКО ОПАСНОСТЕ?

В том и проблема, что пока netbsd team не овтетит из-за чего глюк - не ясно. Вдруг он только проявляется на nbsd current а есть везде? Глюк которому было 25 лет и он сидел в BSD тоже "как бы не проявлялся".

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

>Если он откроет его не от рута, а из аккаунта, из которого периодически делает "su", то задача лишь усложняется. Имея доступ к непривилегированному аккаунту, который использует администратор системы, можно получить и права root'а.

Поясните как это сделать. Например, на ttyE0 юзер сделал su, вы логинетесь на ttyE1 и пытаетесь угнать su с ttyE0 - как это будет выглядеть? Без банальностей типа screen, ессно.

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

>Поясните как это сделать. Например, на ttyE0 юзер сделал su, вы логинетесь на ttyE1 и пытаетесь угнать su с ttyE0 - как это будет выглядеть? Без банальностей типа screen, ессно.

очень просто. пишем свой бинарник su, который сохраняет пароль где-нибудь, а затем вызывает оригинальный su. редактируем PATH в стартовом конфиге шелла и делаем чтобы вызывался наш su, вместо системного.

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

способ2: когда одмин делает su (но ещё не ввёл пароль) быстренько делаешь cat /proc/$ADMIN_SHELL_PID/fd/1

задачу лучше поставить в цикл с небольшим sleep и прерывать сразу же после получения пароля(а то глючить начинает)

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

> сохраняет пароль где-нибудь

это если там не pam_opie или нет ограничений на tty для su, иначе пароль бесполезен

> затем вызывает оригинальный su

error: you need a time machine

>> на ttyE0 юзер *сделал* su, вы логинетесь на ttyE1 и пытаетесь угнать su с ttyE0

долго придется ждать пока предыдущая сессия закончится, и нерадивый админ запустит su поновой, чтобы наступить на капкан.

впрочем, идея с keylogger'ом/loader'ом может собрать много паролей, если ориентироваться на масштаб.

Кстати, менять PATH не обязательно, т.к. лодырем может выступать модифицированная версия bash'а, которая и сохраняет пароль и отправляет копию оригинальному su. Этот bash, кстати говоря, вполне может подменять вывод ps, скрывая себя и свой оригинальный путь.

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

> cat /proc/$ADMIN_SHELL_PID/fd/1

а если там не линукс?

к тому же, фиг ты такое сделаешь, ибо на su стоит setuid бит
и тот fd будет принадлежать root'у, без прав на чтение посторонним:

$ ls -l /proc/$ADMIN_SHELL_PID/fd/0
ls: cannot access /proc/$ADMIN_SHELL_PID/fd/0: Permission denied
$ ls -dl /proc/$ADMIN_SHELL_PID/fd
dr-x------ 2 root root 0 2008-08-20 07:54 /proc/$ADMIN_SHELL_PID/fd

ну и stdin — это 0, а не 1 (stdout).

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

> ну и stdin — это 0, а не 1 (stdout).

туплю, su обратно данные не отдает. Тут нужно понять какой процесс отвечает за ввод (сдается мне это ядро) и вставить между ним и su что-то типа tee. Только я все равно хз, т.к. у меня su не хочет кушать echo password > fd/0.

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

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

впрочем надо отметить - как и агрессивные бздуны

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

>> uname -srm >FreeBSD 7.0-STABLE amd64 >> vim >vim: Command not found.

ну что, кто то еще сомневается что изень лезет в обсуждалки только ради пеара бзды? очевидно же что по делу ему сказать абсолютно нечего, но чсв диктует

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

>Особенно вспоминая эпическую жесть с командой

> cat "test... test... test..." | perl

если внимательно читать тот топик, то очевидно же, 99% там специально подыгрывали

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

>Обидно, что куча клепателей продолжают юзать "си-с-классами", воображая себя кульхацкерами.

ну вот ты себя быдлом выставляешь этим постом. хотя небось воображаешь себя по меньшей мере пророком

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

>интересно, почему на лоре столько юниксоидов? ведь, ничего, интересного для себя тут не найдут.

ну как-же, как-же, а толпы смешных и забавных вантузятников над которыми так весело подтрунивать? :)

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

>Надо срочно набивать конфиги с помощью cat и без ошибок

можно и с ошибками - grep [-v] никто не отменял

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

> ну что, кто то еще сомневается что изень лезет в обсуждалки только ради пеара бзды? очевидно же что по делу ему сказать абсолютно нечего, но чсв диктует

По делу: во FreeBSD нету vim'а. VIM не входит в состав системы. Есть vi и достойная замена этому убожищу — ee.

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

а в OpenBSD в базе есть mg(1)... и что?

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

>Есть vi и достойная замена этому убожищу — ee.

Так точно, взамен убогому ee есть vi и vim.

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

Гы) лол) Вот так надо:

C:\>vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Aug  9 2008 18:40:30)
MS-Windows 32-bit console version
Compiled by Bram@KIBAALE
Big 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 +gettext/dyn -hangul_input +iconv/dyn +insert_expand
+jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap
+menu +mksession +modify_fname +mouse -mouseshape +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 -tgetent -termresponse +textobjects +title
-toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo
+vreplace +wildignore +wildmenu +windows +writebackup -xfontset -xim
-xterm_save -xpm_w32
   system vimrc file: "$VIM\vimrc"
     user vimrc file: "$HOME\_vimrc"
 2nd user vimrc file: "$VIM\_vimrc"
      user exrc file: "$HOME\_exrc"
  2nd user exrc file: "$VIM\_exrc"
Compilation: cl -c /W3 /nologo  -I. -Iproto -DHAVE_PATHDEF -DWIN32   -DFEAT_CSCO
PE       /Wp64 -DWINVER=0x0400 -D_WIN32_WINNT=0x0400  /Fo.\ObjC/ /Ox -DNDEBUG  /
Zl /MT -DDYNAMIC_ICONV -DDYNAMIC_GETTEXT -DFEAT_BIG /Fd.\ObjC/ /Zi
Linking: link /RELEASE /nologo /subsystem:console oldnames.lib kernel32.lib adva
pi32.lib shell32.lib gdi32.lib  comdlg32.lib ole32.lib uuid.lib /machine:i386 /n
odefaultlib  libcmt.lib   user32.lib           /PDB:vim.pdb -debug

Ага и вот:

C:\>uname -a
"uname" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Кароче бага у миня не поивилась. Чота лажовая новасть.

*сморкаясь в ладонь и отпив из бутылки*: НУ ЧО, ИЩО УМНИКИ БУДУТ?

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