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

У меня revision 5 version 16 subversion 1 и тоже гента :)

Идентично.

Скорее всего он просто внутри не может такую строку сформировать перед тем, как вывести на экран. Только странно, что ничего не пишет при этом.

Ладно, забьем. Не буду ж я писать багрепорт «У меня ваш перл не сегфолтит мой grep» :) .

Kroz ★★★★★
()

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

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

В чем подвох? Без грепа (2Гб RAM):

$ perl -e 'print "x"x(2**31)'
Out of memory!

То есть с оперативой <= 2Gb не работает (в зависимости от уже занятого места понятно)?

PS: Тогда как временное решение - вытащить планку памяти ;)

Buy ★★★★★
()
Последнее исправление: Buy (всего исправлений: 1)
Ответ на: комментарий от Buy

То есть с оперативой <= 2Gb не работает (в зависимости от уже занятого места понятно)?

Да, для этого примера нужно не менее 4 Гб, ближе к пяти.

Homura_Akemi
()

dron@nix:~$ perl -e 'print "x"x(2**31)' | grep x > /dev/null
grep: память исчерпана
dron@nix:~$ uname -a
Linux nix 3.2.0-4-amd64 #1 SMP Debian 3.2.35-2 x86_64 GNU/Linux
dron@nix:~$ 


Dron ★★★★★
()

stas@debian:~$ perl -e 'print "x"x(2**31)' | grep x > /dev/null
Ошибка сегментирования
stas@debian:~$ uname -a
Linux debian 2.6.32-5-amd64 #1 SMP Sun Sep 23 10:07:46 UTC 2012 x86_64 GNU/Linux
stas@debian:~$ 
disee ★★★
()
Ответ на: комментарий от renya

В четыре раза больше, но всё равно мало. Пора уже раскошелиться и догнать до четырёх (мамка больше не поддерживает), а то бравузить инторнеты сложно.

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

на 32 работает только в 30 степени
но потом пишет «я сожрал всё, хочу ещё, но т.к. нет я умер»

megabaks ★★★★
()

Пишет out of memory на 8 гигах памяти, подскажите что можно сделать

$ grep --version | head -1
grep (GNU grep) 2.14
$ perl -e 'print "x"x(2**31)' | grep x > /dev/null
grep: памяць вычарпана
$ free
             total       used       free     shared    buffers     cached
Mem:       8086940     890564    7196376          0      56892     356896
-/+ buffers/cache:     476776    7610164
Swap:            0          0          0
$ ulimit -v
unlimited
$ uname -a
Linux inspiron 3.6.10-1-ARCH #1 SMP PREEMPT Tue Dec 11 09:40:17 CET 2012 x86_64 GNU/Linux

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

ничего, кроме того что этот однострочник не работает. ;D

Об этом явно написано в новости.

tazhate ★★★★★
()
$ perl -e 'print "x"x(2**31)' | grep x > /dev/null
grep: память исчерпана

$ perl -e 'print "x"x(2**31)' | wc
      0       1 2147483648

$ free
             total       used       free     shared    buffers     cached
Mem:       8180960    3644456    4536504          0      13404    1743512
-/+ buffers/cache:    1887540    6293420
Swap:       522076     119284     402792

$ grep -V | head -1
grep (GNU grep) 2.11

$ uname -a
Linux localhost.localdomain 3.3.8-desktop-2.mga2 #1 SMP Mon Jul 30 21:35:06 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release -a
LSB Version:	*
Distributor ID:	Mageia
Description:	Mageia 2
Release:	2
Codename:	thornicroft

Что-то я делаю не так. Сколько ему памяти надо?

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

Поставил версию с XFCE, 8 гигов нужно больше для Хрома, GIMP, и виртуалки, чем для Магеи:)

А так единственный дистр где у меня иксы не виснут и нет 12309.

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

Ну xfce это другое дело. Я летом ставил магею с kde.... Включалась 4 минуты, браузер запускался минуту, хотел включить музыку - зависла. На ребут не реагировала. Ну, думаю, может это так только с live cd. Оказалось что на компе она почти так же тупит.

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

У меня когда-то в арче кеды ели только 780мб (1Гб озу у меня только). Если для кедов минимум 4 гб нужно, то я что-то не знаю

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

Я немного не так выразился, для комфортной работы, ибо если все выжрут кеды, под кэш и буферы останется пшик. А ещё браузер надо запускать, плеер, почту, агрегатор, терминал, IDE, торрент...

RPG
()
nickm@localhost ~ $ perl -e 'print "x"x(2**31)' | grep x > /dev/null
grep: память исчерпана
nickm@localhost ~ $ lsb_release -a
LSB Version:	:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID:	RERemix
Description:	RERemix release 6.2 (Carbon)
Release:	6.2
Codename:	Carbon
iMp ★★★
()
$ uname -r
3.6.11-gentoo-rbxx
$ grep Mem /proc/meminfo 
MemTotal:       16464412 kB
MemFree:        15344432 kB
$ time perl -e 'print "x"x(2**31)' | grep x > /dev/null

real	0m7.254s
user	0m3.247s
sys	0m6.797s
$ eix -Ic grep
[I] sys-apps/grep (2.14@26.11.2012): GNU regular expression matcher
rbxx
()

круто, повесил систему этой командой. Перл отожрал все раму и полез в свап...

vova7890 ★★★
()

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

real 0m7.471s
user 0m3.411s
sys 0m6.911s
$
$ uname -a
Linux moonbow 3.6.7-calculate #1 SMP PREEMPT Mon Nov 19 11:17:31 UTC 2012 x86_64 AMD Athlon(tm) II X4 651 Quad-Core Processor AuthenticAMD GNU/Linux

Всё отработало, даже система не напряглась...

WatchCat ★★★★★
()
grep --v
GNU grep 2.6.3


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


grep: (стандартный ввод): Невозможно выделить память


uname -a

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

Что-то не пойму, наличуствует уязвимость или нет?...

nixit ★★
()

Странно:

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

$ rpm -qa grep grep-2.10-alt1

$ uname -a Linux Haza.localdomain 3.0.44-std-def-alt0.M60P.1 #1 SMP Wed Oct 3 11:45:07 UTC 2012 i686 GNU/Linux

Калькулятор eeepc 1001px

Хиде уязвимость?

gBopHuk
()

все бегом запускать это на продакшн серверах ) даешь массовые падения сервисов из-за нехватки ресурсов! )))

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

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

xtraeft ★★☆☆
()

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

ну, вообще-то posix предусматривает, что утилиты типа grep не обязаны правильно обрабатывать длинные строки. Солярисовые утилиты (даже гораздо более простые чем grep) крэшились легко на длинных строках.

Так что любой кто не санировал вход грепа — ССЗБ — он не чтил стандарт.

dilmah ★★★★★
()
Ответ на: leave от Jeffrey

обращайтесь

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

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

А вот оно как, я ключевую фразу не увидел " строка данных более 2Гб, 64-бита " Ясненько.Будем следить за событиями =)))

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