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

$ perl -e 'print "x"x(2**31)' | grep x > /dev/null
Out of memory!
$ uname -a
Linux debian 3.2.0-4-686-pae #1 SMP Debian 3.2.32-1 i686 GNU/Linux
anonymous ()
  Out of memory!

 uname -a
Linux fedora.laptop 3.7.0-1.fc19.x86_64 #1 SMP Tue Dec 11 15:07:16 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
 
Deleted ()
Ответ на: комментарий от anonymous

Уязвимость не для нишебродов.

$ perl -e 'print "x"x(2**30)' | grep x > /dev/null
grep : memory exhausted
$ uname -a
Linux debian 3.2.0-4-686-pae #1 SMP Debian 3.2.32-1 i686 GNU/Linux

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

> grep -V
grep (GNU grep) 2.5.1-FreeBSD
$ perl -e 'print "x"x(2**31)' | grep x > /dev/null
$

$ grep -V
grep (GNU grep) 2.14

$ uname -r
3.7.1-gentoo
Lavos ★★★★★ ()
Последнее исправление: Lavos (всего исправлений: 1)

Не знаю как насчёт вышеописанной уязвимости, но на наличие бага 12309 этот однострочник точно проверяет...

KivApple ★★★★★ ()
 > perl -e 'print "x"x(2**31)' | grep x > /dev/null
 > ?
0
 > grep --version 
grep (GNU grep) 2.12

Да и в любом случае ничего страшного, у меня ещё пять запасных реализаций grep :)

Homura_Akemi ()
taz@tazwork:~$ perl -e 'print "x"x(2**31)' | grep x > /dev/null
taz@tazwork:~$ uname -a
Linux tazwork 3.6.9-pf #1 SMP PREEMPT Wed Nov 28 13:06:29 MSK 2012 x86_64 Intel(R) Core(TM) i7-3770S CPU @ 3.10GHz GenuineIntel GNU/Linux
taz@tazwork:~$ free -m
             total       used       free     shared    buffers     cached
Mem:         32103      11448      20654          0        815       4340
-/+ buffers/cache:       6293      25810
Swap:            0          0          0
tazhate ★★★★★ ()
[kp@localhost ~]$ perl -e 'print "x"x(2**31)' | grep x > /dev/null
[kp@localhost ~]$ uname -a
Linux localhost.localdomain 3.6.11-3.fc18.x86_64 #1 SMP Mon Dec 17 21:35:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
[kp@localhost ~]$ cat /etc/fedora-release 
Fedora release 18 (Spherical Cow)
[kp@localhost ~]$ grep --version
grep (GNU grep) 2.14
kp ()

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

grep 2.12. Debian Wheezy, обновлялся в выходные.

hobbit ★★★★★ ()
[ruslan@desktop ~]$ grep -V
grep (GNU grep) 2.14

От такой штуки вылезло что-то похожее на 12309 (Fedora 18, ядро 3.6.11 x86_64). Иксы периодически фризились и звук захлёбывался.

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

anonymous
Нищеброд, на сервере надо запускать, а не на калькуляторе с 512m.

Уязвимость не для нишебродов.

поржал, спасибо)

special-k ★★★ ()
inkvizitor68sl@alexstrasza:~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.1 LTS"
inkvizitor68sl@alexstrasza:~$ uname -a
Linux alexstrasza 3.2.0-24-generic #39-Ubuntu SMP Mon May 21 16:52:17 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

Сегфолтится.

inkvizitor68sl ()
» perl -e 'print "x"x(2**31)' | grep x > /dev/null
grep: (стандартный ввод): Невозможно выделить память
Artificial_Thought ★★★★ ()

на православном Squeeze все ok


$ free
total used free shared buffers cached
Mem: 7962968 4774320 3188648 0 183132 1480752
-/+ buffers/cache: 3110436 4852532
Swap: 0 0 0
$ perl -e 'print «x"x(2**31)' | grep x > /dev/null
grep: (standard input): Cannot allocate memory

metawishmaster ★★★★ ()

Запустил. В GNOME System Monitor минут десять наблюдаю уменьшение потребления памяти с 3,5 до 1,8 ГБ. (У меня ещё OpenOffice-3-devel в текстовой консоли собирается).

Сначала SWAP полез вверх — 62% было занято, каждые пять минут прибавлял по 20%. Оперативка 1,2 ГБ всего занята. Надо сказать, давно я не видел столько освобождённой памяти благодяря невнятному её расходованию и сваливанию в SWAP. Обычно занято 3,5 ГБ и больше (наверно, по кэш ZFS), SWAP почти никогда не заступается даже.

Наконец, команда «perl -e 'print „x"x(2**31)' | grep x > /dev/null“ молча завершила свою работу. Никаких сообщений в терминал не выдала. SWAP после 100% загрузки быстро освободился до 8% (общий размер SWAP 1,5 ГБ) и сейчас 5,6% занят. Оперативная память сейчас подросла с 1,2 ГБ до 4 ГБ — компиляция OpenOffice взяла своё.

% grep -V
grep (BSD grep) 2.5.1-FreeBSD
% uname -a
FreeBSD roxy.fire 9.1-PRERELEASE FreeBSD 9.1-PRERELEASE #0 r244694: Wed Dec 26 17:29:30
VOLT 2012     root@roxy.fire:/usr/obj/usr/src/sys/ROXY  amd64 

WITH_BSD_GREP=true в /etc/src.conf.

iZEN ★★★★★ ()

О, новый однострочник на перл. Либо уязвимость, либо DoS. У меня выжрало все 6Гб памяти и упало не найдя больше.

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

От такой штуки вылезло что-то похожее на 12309 (Fedora 18, ядро 3.6.11 x86_64). Иксы периодически фризились и звук захлёбывался.

Ничего подобного на FreeBSD не наблюдал.

iZEN ★★★★★ ()

god@world:~$ perl -e 'print «x"x(2**31)' | grep x > /dev/null Out of memory!

god@world:~$ uname -a

Linux off 3.5.0-18-generic #29-Ubuntu SMP Wed Oct 24 19:51:55 UTC 2012 i686 i686 i386 GNU/Linux

god@world:~$ lsb_release -a

LSB Version: core-2.0-ia32:core-2.0-noarch:core-3.0-ia32:core-3.0-noarch:core-3.1-ia32:core-3.1-noarch:core-3.2-ia32:core-3.2-noarch:core-4.0-ia32:core-4.0-noarch

Distributor ID: Ubuntu

Description: Ubuntu 12.04.1 LTS

Release: 12.04

Codename: precise

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

А слабо новость прочитать и букафки понять? Уязвимость на 64 битном хосте, а у тебя 32

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

мне приходилось грепать, так что если ты не имел дело, то это не значит что другим не нужно

amazpyel ★★★ ()
[ megabaks@desktop ] ~ $ perl -e 'print "x"x(2**31)' | grep x > /dev/null
[ megabaks@desktop ] ~ $ 

и никаких тормозов нет
ЧЯДНТ?
ой, я же не использую альфа-платформу...

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

Да и в любом случае ничего страшного, у меня ещё пять запасных реализаций grep

причём все юзают бажную glibc...

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

арч, x86_64, grep 2.14

Psych218 ★★★★★ ()

У меня всё в порядке. Видимо потому что в debian testing греп 2.12.

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

Debian Wheezy, ядро 3.2, grep 2.12. Чудовищные тормоза. Еле зашел в консоль чтобы убить эту хрень. Никогда не наблюдал ткого раньше.

Programmist11180 ★★★ ()

$ perl -e 'print «x"x(2**31)' | grep x > /dev/null $ uname -a Linux ACOMP 3.2.0-4-amd64 #1 SMP Debian 3.2.35-2 x86_64 GNU/Linux

anonymous ()

Сколько лет утилите? Призадумался о надежности опенсурс.

TGZ ★★★★ ()
[tyakos@localhost ~]$ time perl -e 'print "x"x(2**31)' | grep x > /dev/null

real    0m6.243s
user    0m3.263s
sys     0m4.747s

[tyakos@localhost ~]$ uname -a
Linux localhost 3.7.1-pf-G73SW #1 SMP PREEMPT Mon Dec 24 15:22:48 GMT 2012 x86_64 GNU/Linux

[tyakos@localhost ~]$ grep -V
grep (GNU grep) 2.14
                                                                       
[root@localhost tyakos]# pacman -Suy
:: Synchronizing package databases...
 core                                                                                     111.8 KiB   299K/s 00:00 [####################################################################] 100%
 extra                                                                                   1525.3 KiB  1050K/s 00:01 [####################################################################] 100%
 community                                                                               1901.7 KiB  1111K/s 00:02 [####################################################################] 100%
 multilib is up to date
:: Starting full system upgrade...
warning: grub-bios: local (2.00-3) is newer than core (2.00-1)
warning: grub-common: local (2.00-3) is newer than core (2.00-1)
warning: lib32-libjpeg-turbo: local (1.2.1-2) is newer than multilib (1.2.1-1)
warning: libjpeg-turbo: local (1.2.1-2) is newer than extra (1.2.1-1)
 there is nothing to do

[root@localhost tyakos]# exit
                                                                                                     
tyakos ★★★ ()
Последнее исправление: tyakos (всего исправлений: 1)
$ perl -e 'print "x"x(2**31)' | wc -l
0

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

Kroz ★★★★★ ()

Вот какую свинью Паоло Бонцини подбросил перед своим уходом.

Jaeger1999 ()

jason@jw:~$ time perl -e 'print «x"x(2**31)' | grep x > /dev/null grep: (standard input): Invalid argument jason@jw:~$ grep -V grep (GNU grep) 2.5.1-FreeBSD

Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

jason@jw:~$ uname -srm FreeBSD 9.1-RELEASE amd64

anonymous ()

Гентушники могут сразу расслабиться насчет этой уязвимости - grep 2.14 был стабилизирован еще в августе, ЕМНИП

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

У меня ничего не написала. Повторный запуск (команда из твоего сообщения) завершился очень быстро — ОС обнаружила, что её опять пытаются нае.ть. :))

Кстати, твоя команда неправильная. Нужно вот эту давать:

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

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

ОС обнаружила, что её опять пытаются

В печь такие «умные» системы.

Homura_Akemi ()

при обработке строки данных более 2 Гб

И тут мне стало интересно, кому пришло в голову грепать такую строку.. Или у grep появились тестеры? О_о

sT331h0rs3 ★★★★★ ()
Ответ на: комментарий от PaRuSoft
> perl -V
Summary of my perl5 (revision 5 version 16 subversion 2) configuration:
   
  Platform:
    osname=freebsd, osvers=9.1-prerelease, archname=amd64-freebsd
    uname='freebsd roxy.fire 9.1-prerelease freebsd 9.1-prerelease #0 r244694: wed dec 26 17:29:30 volt 2012 root@roxy.fire:usrobjusrsrcsysroxy amd64 '
    config_args='-sde -Dprefix=/usr/local -Darchlib=/usr/local/lib/perl5/5.16.2/mach -Dprivlib=/usr/local/lib/perl5/5.16.2 -Dman3dir=/usr/local/lib/perl5/5.16.2/perl/man/man3 -Dman1dir=/usr/local/man/man1 -Dsitearch=/usr/local/lib/perl5/site_perl/5.16.2/mach -Dsitelib=/usr/local/lib/perl5/site_perl/5.16.2 -Dscriptdir=/usr/local/bin -Dsiteman3dir=/usr/local/lib/perl5/5.16.2/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Ui_malloc -Ui_iconv -Uinstallusrbinperl -Dcc=cc -Duseshrplib -Dinc_version_list=none -Dccflags=-DAPPLLIB_EXP="/usr/local/lib/perl5/5.16.2/BSDPAN" -Doptimize=-O2 -pipe -fno-strict-aliasing -Ui_gdbm -Dusethreads=n -Dusemymalloc=n -Duse64bitint'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=undef, usemultiplicity=undef
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-DAPPLLIB_EXP="/usr/local/lib/perl5/5.16.2/BSDPAN" -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include',
    optimize='-O2 -pipe -fno-strict-aliasing',
    cppflags='-DAPPLLIB_EXP="/usr/local/lib/perl5/5.16.2/BSDPAN" -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
    ccversion='', gccversion='4.2.1 Compatible FreeBSD Clang 3.1 ((branches/release_31 156863))', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='cc', ldflags ='-pthread -Wl,-E  -fstack-protector -L/usr/local/lib'
    libpth=/usr/lib /usr/local/lib
    libs=-lgdbm -lm -lcrypt -lutil
    perllibs=-lm -lcrypt -lutil
    libc=, so=so, useshrplib=true, libperl=libperl.so
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='  -Wl,-R/usr/local/lib/perl5/5.16.2/mach/CORE'
    cccdlflags='-DPIC -fPIC', lddlflags='-shared  -L/usr/local/lib -fstack-protector'


Characteristics of this binary (from libperl): 
  Compile-time options: HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV
                        PERL_MALLOC_WRAP PERL_PRESERVE_IVUV USE_64_BIT_ALL
                        USE_64_BIT_INT USE_LARGE_FILES USE_LOCALE
                        USE_LOCALE_COLLATE USE_LOCALE_CTYPE
                        USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
  Built under freebsd
  Compiled at Dec 26 2012 19:06:03
  @INC:
    /usr/local/lib/perl5/5.16.2/BSDPAN
    /usr/local/lib/perl5/site_perl/5.16.2/mach
    /usr/local/lib/perl5/site_perl/5.16.2
    /usr/local/lib/perl5/5.16.2/mach
    /usr/local/lib/perl5/5.16.2
    .
iZEN ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.