LINUX.ORG.RU

Уязвимость в стандартной функции glob() как угроза для FTP-серверов

 , , ,


0

1

Сайт SecurityReason сообщает об обнаружении опасной ошибки в реализации библиотечной функции glob() из стандартной библиотеки языка C (libc) на множестве платформ.

Эта функция предназначена для получения списка файлов, чьи имена удовлетворяют заданному шаблону. Ошибка заключается в том, что ограничение на выдачу функции, задаваемое переменной GLOB_LIMIT, не действует в случае задания некорректных путей в шаблоне. Такими некорректными значениями могут быть, например, «*/../*/../*foo» или «{..,..,..}/*/{..,..,..}/*bar». При этом вызов функции glob() может исчерпать всю доступную память процесса.

Особенную опасность данная ошибка представляет для (S)FTP-серверов, особенно с разрешенным анонимным доступом. Очевидно, запрос на листинг файлов с вышеприведенной маской приводит к скорому отказу в обслуживании FTP-сервера.

Уязвимости подвержены, по последним данным, как минимум следующие ОС: OpenBSD 4.7, NetBSD 5.0.2, FreeBSD 7.3/8.1, Oracle/Sun Solaris 10, а также все версии Linux с GLIBC. Уязвимость пока что устранена только в NetBSD; компании и сообщества, занимающиеся разработкой вышеперечисленных (за исключением NetBSD) операционных систем, пока не дают никакой информации; именно поэтому уязвимость классифицируется как «0-day». Сообщается также, что vsftpd не подвержен уязвимости.

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

★★

Проверено: maxcom ()

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

> какая разница-то? если уязвимость в glibc. зайди через шелл да выполни.

Для glibc это не уязвимость. Функция как функция. Так же, как возможноть выделить 3 гига оперативки - это не уязвимость malloc, это его работа. Приложение должно само думать, какую функцию и с какими параметрами оно вызывает.

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

> Запускать так: ./glob '../../*/../*/*/../../*/*/*/*.bz2'

800M сожрало, потом убил.

РЕШЕТО!!!



Сам ты решето. :) Работа программиста - думать что писать. Если ты напишешь:
#include <stdlib.h>
int main(){while(1)malloc(12345);}
тоже glibc виноват будет?

anonymous ()
Ответ на: Arch Linux от satrap

Re: Arch Linux

> при достаточно длинном патерне у меня эксплоит сегфолтится, но больше 50 мб не ест \o/

То - не эксплоит. Есть проще способы сожрать много памяти, имея локальный доступ на машину. Эксплоит описан по ссылке и на опеннете.

«Баг» с глобом есть только по отношению к некоторым ftp-серверам (пока подтверждено для proftpd). И сам баг - в том, что можно задосить или убить чужой ftp-сервер, который вызывает glob не проверив, для чего он его вызывает.

А возможность сожрать всю память на собственной машине - это не баг, это ССЗБ.

anonymous ()
Ответ на: Re: Arch Linux от anonymous

>А возможность сожрать всю память на собственной машине - это не баг, это ССЗБ.

может я не достаточно ясно написал. glob у меня сегфолтится при достаточно длинном патерне. это возможно баг в glob

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

>800M сожрало, потом убил.

На Убунте 10.04 не работает:

./glob '../../*/../*/*/../../*/*/*/*.bz2'
total: 685

Что я делаю не так? :(

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

> текст новости является авторским и копировать его нельзя

А не дадите ли ссылочку на закон? А то в википедии (http://ru.wikipedia.org/wiki/Авторское_право) говорится:

Не являются объектами авторского права

...

4. сообщения о событиях и фактах, имеющие исключительно информационный характер (сообщения о новостях дня, программы телепередач, расписания движения транспортных средств и тому подобное).

anonymous ()

на убунте тупо в bash

ls ../../*/../*/*/../../*/*/*/*.bz2

сработало

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

нет. своя реализация, конечно же.

вообще, новость эта - сплошная провокация. вот какой тред был в misc@openbsd.org с товарищем Максимилианом, когда он первый раз решил «сломать» ftp.openbsd.org: http://marc.info/?l=openbsd-misc&m=127810883201426&w=2
ему тогда намекнули. так он в своем «адвайзори» даже говорит, что провернул тогда успешную дос атаку, му-ха-ха. сейчас вот попробовал его гипотетический експлоит, которым он «как-бы» уложил опеновский родной фтпд. разумеется, не работает.

короче, я ему не верю.

val-amart ★★★★★ ()

Using binary mode to transfer files.
ftp> glob
Globbing off.
ftp>

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

Ubuntu 10.04:

ls ../../*/../*/*/../../*/*/*/*

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

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

> ls ../../*/../*/*/../../*/*/*/*

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


Для баша - это не баг. Это его нормальное поведение. Так и должно быть. Команда:
echo `yes`
сделает то же самое. Возможность сожрать всю доступную память или весь процессор на СВОЕЙ машине - это НЕ ошибка. А вот такая же возможность на чужой машине - это уже ошибка. Именно поэтому это - баг в ftp-серверах, а НЕ в glibc, bash, glob, ls и т.д.

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

> короче, я ему не верю.

Это - не вопрос веры. Достаточно поставить себе proftpd дать ему названную по ссылке команду и убедиться, что он сжирает все CPU-ресурсы одного ядра. Сделать то же самое в десятке параллельных соединений - и ftp-сервер в досе.

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

> Для glibc это не уязвимость. Функция как функция. Так же, как возможноть выделить 3 гига оперативки - это не уязвимость malloc, это его работа.

В Мейрсе по C++ написано следующее: «Проектируйте свои программы так, чтобы их легко было использовать правильно и трудно - неправильно.» В данном случае это замечательное правило нарушено.

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

>> короче, я ему не верю.

Это - не вопрос веры. Достаточно поставить себе proftpd дать ему названную по ссылке команду и убедиться, что он сжирает все CPU-ресурсы одного ядра. Сделать то же самое в десятке параллельных соединений - и ftp-сервер в досе.


вот еще, делать мне нечего. мне нет дела до профтпд, он написал, что на Опеновском фтпд это работает. но это не работает, я проверил.

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