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)

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

кто тут был против федоры?

 grep --version && lsb_release -rsi && uname -r && perl -e 'print "x"x(2**31)' | grep x > /dev/null && free
grep (GNU grep) 2.14
Copyright (C) 2012 Free Software Foundation, Inc.
Лицензия GPLv3+: GNU GPL версии 3 или новее <http://gnu.org/licenses/gpl.html>
Это свободное ПО: вы можете продавать и распространять его.
Нет НИКАКИХ ГАРАНТИЙ до степени, разрешённой законом.

Авторы программы — Майк Хертель (Mike Haertel) и другие, см. <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.
Fedora 17
3.6.10-2.fc17.x86_64
             total       used       free     shared    buffers     cached
Mem:       7954824    1638236    6316588          0      55280     736132
-/+ buffers/cache:     846824    7108000
Swap:      2097148          0    2097148
novitchok ★★★★★
()
Ответ на: комментарий от proud_anon

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

Не того ждёте. Вы ждёте perl. Надо было писать

perl -e 'for($i = 0; $i <= 2**21; $i++) { print "x" x 2**10 }'

ZyX
()

Отработало без ошибок

syt@sytmaratik ~ $ perl -e 'print «x"x(2**31)' | grep x > /dev/null
syt@sytmaratik ~ $
syt@sytmaratik ~ $ uname -a
Linux sytmaratik 3.6.11-gentoo #1 SMP Sun Dec 23 23:35:27 MSK 2012 x86_64 AMD Athlon(tm) II X4 640 Processor AuthenticAMD GNU/Linux
syt@sytmaratik ~ $ cat /proc/meminfo
MemTotal:        8169976 kB
MemFree:         3991148 kB
Buffers:           10972 kB
Cached:           270476 kB
SwapCached:       253912 kB
Active:           300724 kB
Inactive:        1220732 kB
Active(anon):     261700 kB
Inactive(anon):  1017288 kB
Active(file):      39024 kB
Inactive(file):   203444 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       6291932 kB
SwapFree:        5432044 kB
Dirty:              1616 kB
Writeback:             0 kB
AnonPages:       1066940 kB
Mapped:          2530136 kB
Shmem:             38972 kB
Slab:             107888 kB
SReclaimable:      50648 kB
SUnreclaim:        57240 kB
KernelStack:        4360 kB
PageTables:        75804 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    10376920 kB
Committed_AS:    6867212 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      307828 kB
VmallocChunk:   34359421948 kB
AnonHugePages:         0 kB
DirectMap4k:      378432 kB
DirectMap2M:     8009728 kB
DirectMap1G:           0 kB
syt@sytmaratik ~ $ genlop -i grep
 * sys-apps/grep


   Total builds: 8
   Global build time: 11 minutes and 4 seconds.
   Average merge time: 1 minute and 23 seconds.

   Info about currently installed ebuild:

   * sys-apps/grep-2.14
   Install date: Mon Nov  5 19:35:07 2012
   USE=„nls pcre“
   CFLAGS=»-O2 -pipe -march=native"

уже больше месяца свежая версия стоит...

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

Может быть. В любом случае, у меня 32 бита, поэтому у grep кончилась память.

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

У меня съел весь свап и упал. Но у меня памяти 512

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

Выполняется секунд 5, после чего система напрочь зависает.

$lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 12.04.1 LTS
Release:	12.04
Codename:	precise

Штабильность.

Это тот самый 12309?

Poisoned ★★★
()
grep: memory exhausted

Ничего не падает.

CentOS 6.3

anonymous
()

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

gentoo amd64, 6gb RAM

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

нет, при 12309 система работает, но курсор рывками двигается, приложения отзываются с огромными лагами и т.д. и т.п.

Reset ★★★★★
()

Fuck. Ошибка сегментирования. 16ГБ RAM.

RR42
()

Отрабатывает молча.

anon@host:~$ perl -e 'print "x"x(2**31)' | grep x > /dev/null
anon@host:~$ grep --version
grep (GNU grep) 2.12
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.
anon@host:~$ 

encyrtid ★★★★★
()

нормальные пацаны с арчиком на борту обновляются каждыйБ-жий миг

BambarbiyaKirgudu
()

Мда уж

cat /etc/issue Debian GNU/Linux 6.0

perl -e 'print «x"x(2**31)' | grep x > /dev/null zsh: done perl -e 'print „x"x(2**31)' | zsh: segmentation fault grep x > /dev/null

free -m total used free shared buffers cached Mem: 64381 59091 5290 0 4042 48062 -/+ buffers/cache: 6986 57395

grep -V GNU grep 2.6.3

kiwirus
()

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

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

grep --version

grep (GNU grep) 2.7

free total used free shared buffers cached

Mem: 32933560 28588984 4344576 0

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

ru-apache-openoffice-3.4.1425776,1 наконец-таки собрался. Перезагрузил компьютер на всякий случай. Запустил: Thunderbird, Chromium, Терминал 0.4.8 Xfce4, GNOME System Monitor.

Ввёл su в терминале, запустил команду perl -e 'print «x"x(2**31)' | grep x > /dev/null от рута.

Жду пять минут. Ничего не происходит. Потребление памяти в GNOME System Monitor — 706,2 МиБ (9%) из 7,5 ГиБ. Загрузка 4 ядер CPU гуляет от 20 до 40%.

На десятой минуте потихоньку начало есть SWAP. Потребление памяти почему-то сократилось до 606 МиБ (7,9%) из 7,5 ГиБ. Команда закончила свою работу без всяких сообщений.

% dmesg | tail
kbd3 at ukbd1
uhid0: <BTC USB Multimedia Keyboard, class 0/0, rev 1.10/1.00, addr 2> on usbus1
net0: link state changed to UP
drm0: <ATI Radeon HD 4200> on vgapci0
info: [drm] MSI enabled 1 message(s)
info: [drm] Initialized radeon 1.31.0 20080613
info: [drm] Setting GART location based on new memory map
info: [drm] Loading RS780/RS880 Microcode
info: [drm] Resetting GPU
info: [drm] writeback test succeeded in 1 usecs

% 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

iZEN ★★★★★
()
ei-grad@ei-grad ~ » perl -e 'print "x"x(2**31)' | grep x > /dev/null
grep: память исчерпана
ei-grad@ei-grad ~ » grep --version                                              2 ↵
grep (GNU grep) 2.14
Copyright (C) 2012 Free Software Foundation, Inc.
Лицензия GPLv3+: GNU GPL версии 3 или новее <http://gnu.org/licenses/gpl.html>
Это свободное ПО: вы можете продавать и распространять его.
Нет НИКАКИХ ГАРАНТИЙ до степени, разрешённой законом.

Авторы программы — Майк Хертель (Mike Haertel) и другие, см. <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.
ei-grad ★★★★★
()
perl -e 'print "x"x(2**31)' | grep x > /dev/null
grep: память исчерпана

Debian Sid

Genuine ★★★
()

$ perl -e 'print «x"x(2**31)' | grep x > /dev/null
grep: (standard input): Invalid argument
$ grep --version
grep (GNU grep) 2.5.1


OS X 10.7.5

snizovtsev ★★★★★
()

$ perl -e 'print «x"x(2**31)' | grep x > /dev/null $ uname -a Linux lenovo 3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux $ grep --version grep (GNU grep) 2.12 Copyright (C) 2012 Free Software Foundation, Inc. Лицензия GPLv3+: GNU GPL версии 3 или более поздней <http://gnu.org/licenses/gpl.html>. Это свободное программное обеспечение: вы можете свободно изменять и распространять его. Программное обеспечение распространяется без гарантии в максимальной степени разрешенной законодательством .

Авторы программы — Майк Хертель (Mike Haertel) и другие, см. <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>

Linux Mint 14 x86_64

slavun
()

fedora 17

все гладенько, как у девочки ;)

chg ★★★★★
()

bruteforce@satanas:~$ perl -e 'print «x"x(2**31)' | grep x > /dev/null Out of memory! bruteforce@satanas:~$ uname -a Linux satanas 3.7.0-7-generic #15-Ubuntu SMP Sat Dec 15 14:13:08 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

BruteForce ★★★
()

grep (GNU grep) 2.5.1

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

grep: line too long

И ?

SI ★★☆☆
()

ubuntu 12.04 amd64

ekzotech@snsv:~$ perl -e 'print "x"x(2**31)' | grep x > /dev/null
Ошибка сегментирования (core dumped)
ekzotech@snsv:~$ uname -a
Linux snsv 3.6.8-pf #2 SMP Fri Nov 9 19:02:29 EET 2012 x86_64 x86_64 x86_64 GNU/Linux

Заодно получил 12309 (все 4 гига ОЗУ забились), потемнел ff. Отпустило через 30 секунд после сегфолта.

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

Чот у вас какие-то слабые компы. На убанте 12.04.1 с 8 гигами все нормально бегает.

$ cat /proc/cpuinfo | grep name
model name      : Intel(R) Core(TM)2 Duo CPU     E6750  @ 2.66GHz
model name      : Intel(R) Core(TM)2 Duo CPU     E6750  @ 2.66GHz
$ 
$ free -m
             total       used       free     shared    buffers     cached
Mem:          3953       2151       1802          0         92       1153
-/+ buffers/cache:        905       3047
Swap:         3814          0       3814
$ 
$ 
$ uname -a
Linux turbid-pc 3.7.0-7-generic #15-Ubuntu SMP Sat Dec 15 16:34:25 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -r
Release:        12.10
Turbid ★★★★★
()

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

grep (GNU grep) 2.14

lazyklimm ★★★★★
()

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

grep (BSD grep) 2.5.1-FreeBSD

bash-3.2$ uname -a

Darwin xaqbyca.local 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64

bash-3.2$ perl -v

This is perl 5, version 12, subversion 4 (v5.12.4) built for darwin-thread-multi-2level

bash-3.2$ top

PhysMem: 957M wired, 2034M active, 2097M inactive, 5088M used, 4125M free.

anonymous
()
xroff@koss[~]>perl -e 'print "x"x(2**31)' | grep x > /dev/null
xroff@koss[~]>free
             total       used       free     shared    buffers     cached
Mem:       4059220     484284    3574936          0       1272     203100
-/+ buffers/cache:     279912    3779308
Swap:      8388604     456168    7932436
xroff@koss[~]>uname -a
Linux koss 3.2.0-3-amd64 #1 SMP Mon Jul 23 02:45:17 UTC 2012 x86_64 GNU/Linux
xroff@koss[~]>

только тормозит зараза

xroff
()
Ответ на: комментарий от chg
tazwork taz # time perl -e 'print "x"x(2**31)' | grep x > /dev/null

real	0m3.408s
user	0m1.310s
sys	0m2.440s

:D вот он лор! Мы не толкьо ищем багу, но еще и меряемся в скорости её нахождения.

tazhate ★★★★★
()

Опять однострочник на перле? По сабжу — не ожидал, что даже в грепе есть уязвимость...

GreenBag ★★
()

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

anonymous
()

enterprise! surprise!

P.S. Правильно сделали, что от МСВС отказались в пользу новой ОС.

pacify ★★★★★
()

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

люто нагрузило мак

xtraeft ★★☆☆
()

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

faust@Athlon-x3-450:~$ perl -e 'print «x"x(2**31)' | grep x > /dev/null Ошибка сегментирования

drfaust ★★★★★
()

Боже - и это одна из базовых утил...

drfaust ★★★★★
()

OS X 10.8.2, 12gb RAM, результат - все чисто.

$ perl -e 'print «x"x(2**31)' | grep x > /dev/null $ uname -a Darwin Home-iMac.local 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64

anonymous_
()

$ perl -e 'print «x"x(2**31)' | grep x > /dev/null $ uname -a Linux c3po 3.5.0-19-generic #30-Ubuntu SMP Tue Nov 13 17:49:53 UTC 2012 i686 i686 i686 GNU/Linux Я неуязвим =)

Alex_Crack
()

Mageia 2:

$ perl -e 'print "x"x(2**31)' | grep x > /dev/null
grep: memory exhausted
$ lsb_release -ir
Distributor ID: Mageia
Release:        2
$ grep -V
grep (GNU grep) 2.11
Mageia 3 (Cauldron)
$ perl -e 'print "x"x(2**31)' | grep x > /dev/null
$ lsb_release -ir
Distributor ID: Mageia
Release:        3
$ grep -V
grep (GNU grep) 2.14

anonymous
()

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

Linux user-gspc 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 (GNU grep) 2.12

$ free total used free shared buffers cached Mem: 6113804 2960248 3153556 0 237320 1710740 -/+ buffers/cache: 1012188 5101616 Swap: 0 0 0

Память исчерпалась, но при этом не было фризов, а приложение не посыпалось, значит 2.12 можно юзать без опасений.

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

При 2**30 у меня grep работает как часы, а вот при 2**31 уже заканчивается память. Это при том, что из 6Gb больше 3 свободно.

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