LINUX.ORG.RU

Уязвимость в утилите grep

 ,


0

3

В утилите GNU grep обнаружена опасная уязвимость, которая проявляется при обработке входного потока и может быть использована для инициирования отказа в обслуживании и выполнения произвольного кода.

Уязвимы версии grep до версии 2.11 при обработке строки данных более 2 Гб на 64-битном хосте.

Ошибка может произойти, если не хватает доступной оперативной памяти, или если библиотека GNU C регулярных выражений не может справиться с такими длинными строками.

Команда для проверки уязвимости:

perl -e 'print "x"x(2**31)' | grep x > /dev/null
Ошибка сегментирования означает наличие уязвимости.

>>> Подробности

★★★★★

Проверено: tazhate ()
Последнее исправление: Silent (всего исправлений: 5)
Ответ на: комментарий от tyakos

Я же говорю, чтобы врагов запутать. :) Это ведь даже не zsh.

Каких врагов?
1) Доступ к моему шеллу только у меня.
2) Что значит даже не zsh? Фиш прекрасно работает и совместим с башем и ко.

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

Не воспринимай всерьёз, это у меня в режиме ночного бреда. Так что я, пожалуй, спать.

tyakos ★★★
()

Лидеры проектов GnuTLS, grep и sed выходят из проекта GNU в знак несогласия с
политикой Фонда СПО

Paolo Bonzini, мэйнтейнер проектов GNU sed и GNU grep, заявил об уходе со
своего поста и прекращении участия в разработке (будет продолжено только
участие в проектах GCC и GNU Smalltalk).

110% Это он специально «свинью подложил» в проект... :D

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

ubuntu 11.10, 32/PAE выдала пустой вывод.

CentOS 6.3 выдал сегфолт.

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous
$ time perl -e 'print "x"x(2**31)' | wc
      0       1 2147483648

real    0m34.043s
user    0m33.378s
sys     0m1.492s
anonymous
()

eill@notebook:~$ perl -e 'print «x"x(2**31)' | grep x > /dev/null

eill@notebook:~$

не работает :(

gr_buza ★★★★
()

Все прекрасно работает. Никаких сегфолтов нету. Debian unstable AMD64

$ time perl -e 'print "x"x(2**31)' | grep x > /dev/null

real    0m3.881s
user    0m1.782s
sys     0m3.130s

$ grep --version | head -n 1
grep (GNU grep) 2.14
quest ★★★★
()
Ответ на: комментарий от chg

какие там, к черту, 10 минут со свопом :)

Не в курсе, что BSD grep тормознее GNU grep? Теперь ты это знаешь.

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

Офигеть, живой пользователь fish. Мне всегда казалось, что fish это такой демонстрационный пример для рекламы нормального Zsh.

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

«Открыл все буквы, но не смог прочитать слово» (с) анек :).

Уязвимость не в перле, а в грепе. Единственное, чего ты добился — не смог проверить, есть ли уязвимость или нет. :)

dr_dobermann
()

Out of memory

$ perl -e 'print "x"x(2**31)' | grep x > /dev/null
grep: память исчерпана
$ uname -a
Linux mirkwood-home 3.5.7-gentoo-amd64-r1 #1 SMP PREEMPT Sat Nov 10 00:31:20 EET 2012 x86_64 AMD Athlon(tm) II X4 640 Processor AuthenticAMD GNU/Linux

4 гига ОЗУ + 2 гига своп.

leg0las ★★★★★
()
Последнее исправление: leg0las (всего исправлений: 1)

спасибо, успокоили! Как раз давно не запускал неизвестного кода на перле у себя в консоли :D

$ perl -e 'print «x"x(2**31)' | grep x > /dev/null

$ uname -a Linux jiku 3.6-trunk-amd64 #1 SMP Debian 3.6.9-1~experimental.1 x86_64 GNU/Linux

jekader ★★★★★
()
Последнее исправление: jekader (всего исправлений: 1)

4GB RAM, 2GB SWAP

$ perl -e 'print «x"x(2**31)' | grep x > /dev/null

grep: память исчерпана

$ grep -V

grep (GNU grep) 2.9

$ uname -a

Linux srv 3.2.1-gentoo-r2 #1 SMP Fri Jan 27 19:42:38 MSK 2012 x86_64 Pentium(R) Dual-Core CPU E6300 @ 2.80GHz GenuineIntel GNU/Linux

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

Конструкторы ноутбука предвидели эту уязвимость и защитили покупателей от неё.

Просто вставили 512MB RAM? =)

renya ★★★★★
()

Вот такое старье было под рукой:

# perl -e 'print "x"x(2**31)' | grep x > /dev/null
grep: memory exhausted
# grep --version
grep (GNU grep) 2.5.1

renya ★★★★★
()

Уязвимы версии grep до версии 2.11

> eix sys-apps/grep -c
[I] sys-apps/grep (2.14@14.10.2012): GNU regular expression matcher

Это вести из криокамеры?

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

Я неуязвим =)

Нет, у тебя просто архитектура убогая.

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

Народ, что нужно сделать чтобы эта штука заработала?

Проводить испытание в том окружении, о котором идет речь. Для начала.

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

судя по всему - да. А вот segfault - это НЕ нормально

Как раз таки НЕТ. Это значит, что не хватило памяти, следовательно тест провести не удалось ^_^

tazhate ★★★★★
()

CentOS 6.3, 64 Gb RAM, ошибка сегментирования

anonymous
()

Только идиот будет утверждать что SEGV являетяс признаком наличия уязвимости. Кто-то использует grep с suid? Вы не думаете что grep убивает OOM-killer? А даже если и он сам мрёт, дальше что? Обычная утилита. Не ядро. НО КАК?!

alx_me ★★☆
()
Ответ на: комментарий от oskar0609
tonyx@tony-Lenovo-G580:~$ perl -e 'print "x"x(2**31)' | grep x > /dev/null
tonyx@tony-Lenovo-G580:~$ uname -a
Linux tony-Lenovo-G580 3.5.0-21-generic #32-Ubuntu SMP Tue Dec 11 18:51:59 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

grep 2.12 - уязвимость отсутствует. Правда памяти выжрало 5,6 Гб из 5,7 и прихватило ~50 Мб свопа :)

Twissel ★★★★★
()
time perl -e 'print "x"x(2**31)' | grep x > /dev/null

Ошибка сегментирования

real    0m7.540s
user    0m5.339s
sys     0m4.112s
user@fermi:~$grep --version
grep (GNU grep) 2.9
user@fermi:~$ su
root@fermi:/home/user# apt-get update
apt-get install grep
root@fermi:/home/user# grep --version
grep (GNU grep) 2.14
root@fermi:/home/user# exit
user@fermi:~$ time perl -e 'print "x"x(2**31)' | grep x > /dev/null

real    0m3.991s
user    0m2.708s
sys     0m2.582s
user@fermi:~$ free
             total       used       free     shared    buffers     cached
Mem:      16363404    2610056   13753348          0      93532    1366212
-/+ buffers/cache:    1150312   15213092
Swap:            0          0          0

Теперь норма.

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

Вам надо вместо **31 написать **35 и будет вам SEGV, ибо OOM-killer не спит, но вы слишком жирный и пуля должна быть толще.

alx_me ★★☆
()

Debian stable, сервер с 16гб, сегфолт.

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

а, значит у меня в память уперлось - всего 4гб стоит

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

Ты про 64-битный хост? А что на 32-бит такая конструкция perl'а поджна выдать пустую строку? Я ведь до grep даже не дошел.

Kroz ★★★★★
()

$ perl -e 'print «x"x(2**31)' | grep x > /dev/null Segmentation fault

Debian GNU/Linux 6.0.6 2.6.32-5-amd64 #1 SMP Sun Sep 23 10:07:46 UTC 2012 x86_64 GNU/Linux

anonymous
()

centos 6.3

[root@s2 ~]# perl -e 'print "x"x(2**31)' | grep x > /dev/null
Ошибка сегментирования (core dumped)
[root@s2 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:         24018       3875      20142          0          8       2618
-/+ buffers/cache:       1248      22769
Swap:        29999          0      29999
[root@s2 ~]# uname -r
2.6.32-279.14.1.el6.x86_64

[root@s2 ~]# grep -V
GNU grep 2.6.3

andrew667 ★★★★★
()
Последнее исправление: andrew667 (всего исправлений: 1)
Ответ на: комментарий от tazhate
$ perl -V
Summary of my perl5 (revision 5 version 16 subversion 1) configuration:
   
  Platform:
    osname=linux, osvers=3.6.2-gentoo-lix-k03, archname=i686-linux
    uname='linux lix 3.6.2-gentoo-lix-k03 #3 smp sat oct 20 11:09:00 eest 2012 i686 intel(r) core(tm)2 cpu 6600 @ 2.40ghz genuineintel gnulinux '
Kroz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.