LINUX.ORG.RU

Опасная уязвимость в glibc

 ,


0

0

В библиотеке glibc была обнаружена уязвимость (целочисленное переполнение).

Эта уязвимость присутствует в функции strfmon (форматирование числа как денежной суммы) и позволяет выполнить произвольный код с правами вызвавшего эту функцию приложения, либо аварийно завершить его работу.

Пример уязвимого кода на PHP (вызывает ошибку сегментирования):

php -r 'money_format("%.1073741821i",1);'
PHP-функция money_format реализована на базе strfmon, поэтому подвержена данной уязвимости. Таким образом, описанная уязвимость может быть использована даже удаленным злоумышленником.

Уязвимости подвержены все версии glibc вплоть до 2.10.1. В настоящее время информация о багфиксах отсутствует.

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

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

> $ php -r 'var_dump( money_format("%.1073741821i",1) );' && echo ok
> bool(false)

> ok


> P.S. x86_64


аналогично.

<troll_mode> Вот тут кричат: Java, Java... ПоХаПэ используя бажную функцию glibc не вызывает падений! Вот вам пример мегасекурной реализации языка! Java в сторонке причмокивает... </troll_mode>

valich ★★★
()

Если бы этой уязвимости не было, её стоило бы выдумать.

Как много пыхпыхеров быстро и незаметно для них самих спалились :)

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

> Как много пыхпыхеров быстро и незаметно для них самих спалились :)

Детка, ПоХаПэ - стандарт "де-факто". Любой уважаемый программист должен его знать, независимо от того кем он себя считает, питонистом или плюсофагом или не дай бог жабабыдлокодером.

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

> ПоХаПэ - стандарт "де-факто". Любой уважаемый программист должен его знать

Утипути, какие толстые вебельщики пошли.

tailgunner ★★★★★
()
web styles # uname -a
Linux web 2.6.30-gentoo-r1web-0.0.1 #3 SMP Sun Jun 14 10:41:39 Local time zone must be set--see zic i686 Intel(R) Pentium(R) 4 CPU 2.80GHz GenuineIntel GNU/Linux
web styles # php -r 'money_format("%.1073741821i",1);'
Segmentation fault
web styles #
kam ★★
()
Ответ на: комментарий от kristall

Нет, это из-за возможных local root-ов, а данная уязвимость не даёт повышения привилегий, т.е. если у юзера есть возможность запустить компилятор, она уже ничего не даёт.

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

$ strace php -r 'money_format("%.1073741821i",1);'

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f66ba057000 lseek(1, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 lseek(2, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) mmap(NULL, 4294971392, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory) brk(0x101e77000) = 0x1e77000 mmap(NULL, 4295102464, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory) mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7f66acf74000 munmap(0x7f66acf74000, 50905088) = 0 munmap(0x7f66b4000000, 16203776) = 0 mprotect(0x7f66b0000000, 135168, PROT_READ|PROT_WRITE) = 0 mmap(NULL, 4294971392, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory) close(2) = 0 close(1) = 0 munmap(0x7f66ba057000, 4096) = 0 close(0) = 0 munmap(0x7f66ba058000, 4096) = 0 mprotect(0x7f66b0021000, 131072, PROT_READ|PROT_WRITE) = 0 setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0 madvise(0x7f66b0021000, 131072, MADV_DONTNEED) = 0 brk(0x1d86000) = 0x1d86000 brk(0x1cea000) = 0x1cea000 exit_group(0) = ? x86_64

qnikst ★★★★★
()

Уязвимость из пальца. Для компрометации системы практически невозможно ее использовать. Какой дурак впихнет что-то из пользовательского ввода первым параметром money_format? А столько охов и ахов.

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

> Как много пыхпыхеров быстро и незаметно для них самих спалились :)

А это зазорно быть пыхпыхером?

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

>java рулит, а все остальное это плоды черной зависти тех кто не осилил жаву.

$ ldd /usr/lib/jdk/bin/java
linux-gate.so.1 => (0xffffe000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb805d000)
libjli.so => /usr/lib/jdk/bin/../jre/lib/i386/jli/libjli.so (0xb8054000)
libdl.so.2 => /lib/libdl.so.2 (0xb8050000)
libc.so.6 => /lib/libc.so.6 (0xb7ee3000)
/lib/ld-linux.so.2 (0xb8085000)

а ви таки думали, что линуксовая java от glibc не зависит? вполне возможно, что в ней и strfmon где-нибудь используется.

anonymous
()

Еще раз всем идио^Wальтернативно одаренным личностям!

Сплойты на целочисленное переполнение, написанные под x86, вовсе не обязаны работать под x86_64! Конкретно этот сплойт — под x86.
Если так невтерпеж, пишите сплойт под свою архитектуру сами.

nnz ★★★★
() автор топика

[cat@xe-xe ~]$ php -r 'money_format("%.1073741821i",1);'
Ошибка сегментирования
[cat@xe-xe ~]$ uname -a
Linux xe-xe 2.6.18-128.4.1.el5 #1 SMP Tue Aug 4 20:23:34 EDT 2009 i686 i686 i386 GNU/Linux

На сидбоксе сегфолтится :)

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

>Ты прав, но тег всё же надо было закрыть :)

/me маленьким ребенком подобрали и вырастили быдловерстальщики, которые никогда не закрывают тег <p> ;)

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

ми таки, знаем что жабе пофигу на глюки glibc, попытайся воспроизвести в ней сию мохнатую уязвимость.

wfrr ★★☆
()

Уязвимость в bash той же степени опасности:

echo "int main() {return 1 / 0;}" >> /tmp/exploit.c && gcc -o /tmp/exploit /tmp/exploit.c && /tmp/exploit

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

>java рулит, а все остальное это плоды черной зависти тех кто не осилил жаву.

Сынок, жаба рулит только там где она подходит, кернел на жабе не перепишешь. Толпа корпоративных сопливых жаба дрочеров уже задостала своим желанием переписать на жабе тупо все. Уймитесь уже.

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

>Детка, ПоХаПэ - стандарт "де-факто". Любой уважаемый программист должен его знать, независимо от того кем он себя считает, питонистом или плюсофагом или не дай бог жабабыдлокодером.

Признайся, это был такой тонкий стеб или ты серьезно так думаешь?

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

>шукай jnode и удавись от своей безграматнасте.

Погуглил, почитал википедию, оказывается это уже третья попытка аффтаров написать ОС на жабе.

Знаешь, как то отказ от Си в сторону асма для низкоуровневых тасков заставляет задуматься о нормальности аффторов.

ОС на жабе имела бы смысл если бы современные ЦПУ могли нативно работать с байткодом. А так сраный JIT будет у тебя висеть в топе под номером 1.

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

Короче, очередная поделка школоты для самоутверждения и прокачки ЧСВ. На таких языках как Жаба и ЦиШарпЪ ничего серьезного не пишут и думаю пока не произойдет изменений в архитектуре процессоров ничего такого и не произойдет.

klauzd
()

Где же выдают саван и куда ползти искать кладбище?

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

>Печально вообще. Debian Lenny/Etch еще не отреагировали. Наверное майнтейнеры glibc усердно ищут багу в gcc, которая привела к таким последствиям.

Они живые? O_o

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

Учитывая как вялятся сишные аппликухи - с (и с++) беспросветное говно, а поделия на C# у меня ниразу не падали. Такто.

>На таких языках как Жаба и ЦиШарпЪ ничего серьезного не пишут


Конечно, научный совт это несерьезно, а монолитное говноядролинукса - вот верх серьезности, от коего рвет тапки и трупы.

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

>Учитывая как вялятся сишные аппликухи - с (и с++) беспросветное говно,

Учитывая как возомнившая себя крутыми куллхацкерами школота пишет говнокод - не удивительно.

>а поделия на C# у меня ниразу не падали. Такто.

А ты отойди от хелловорлдов, калькулятор и прочих низкоквалифированных корпо поделий.

>а монолитное говноядролинукса - вот верх серьезности, от коего рвет тапки и трупы.

На Си/Cи++ написано много мирового софта - включая кернел/постгресс/кореутилзы да бля кучу всего. И все работает почему то ничего не падает - если пишут люди, а не школота.

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

вы таки научный софт на жабе пишете? ССЗБ. я бы понял для расчётов матлаб-сатематику-маткад, для всякой обработки файлов - пистон да руби, ну для числодробилок ява подходит посредственно - профита большого нету в отлаженных алгоритмах. поэтому оно слегонца сзаду по сравнению с C/Fort. Да тот же D, если бы не было сомнений в том, что расчёты там вылизаны, покрывает яву как слон черепаху. Ява - пусть идёт в ынтырпрайз, где ей место. Сам таким балуюсь, Но что бы яву - только спьяну.

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

ага

$ php -r 'var_dump( money_format("%.1073741821i",1) );' bool(false)

$uname -a Darwin ##########.local 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386 i386

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

~$ php -r 'money_format("%.1073741821i",1);'
The program 'php' is currently not installed. You can install it by typing:
sudo apt-get install php5-cli
bash: php: command not found
~$

Не работает...

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

> http://sourceware.org/bugzilla/show_bug.cgi?id=9707

Например, этот баг Деппер выпилил как INVALID, т.е. он в этом NetBSD'ишном секьюрити репорте и патче, что ему прислали разбиратся даже не стал. Прикольный тип.

oc
()

bash-4.0$ php -r 'money_format(«%.1073741821i»,1);'

bash: php: команда не найдена

Jayrome ★★★★★
()

Интересно, а можно ли завалить Апач на хостинге с помощью этой уязвимости? Там ведь mod_php как либа идет и при сегфолте должен вылететь и апач.

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

> вы таки научный софт на жабе пишете? ССЗБ

http://xjtek.ru

AnyLogic - один из лучших в своем классе

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

>...а поделия на C# у меня ниразу не падали.

Они просто не вообще запускаются.

daemontux
()

FreeBSD 6.3-RELEASE-p5

указанная строчка висит пока не нажмешь ^C.

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

Хм. Что на php, что вышеприведённый ко на Си - всё нормально. Я на Gentoo :)

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

>+1, просто висит и думает. Имхо, проблема, наверное, не в глибце, а в х86, ибо на amd64 не пашет :)

На x86 у меня никакого сегфолта. Но не работает (в смысле - молча закрывается, ничего не выводя)

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

>$ php -r 'var_dump( money_format("%.1073741821i",1) );' && echo ok
>bool(false)
>ok

$ php -r 'var_dump( money_format("%.1073741821i",1) );' || echo Error
Error

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