Ghost — Уязвимость Gethostbyname() В Glibc

Эксперты Qualys сообщили о наличии уязвимости в gethostbyname() И gethostbyname2() в GNU Библиотека C (glibc), которая как минимум в одном случае может привести к удаленному выполнению кода.

Уязвимость позволяет перезаписать в куче до 4 байт на 32-битных системах и до 8 байт на 64-битных системах числами (0.9), точкой (.

) и NULL-символом (0x00).

.

Уязвимость появилась в версии glibc-2.2 от 10 ноября 2000 г.

и была закрыта в версии glibc-2.18 от 21 мая 2013 г.

, поэтому уязвимы только дистрибутивы LTS Linux: Debian 7, Red Hat Enterprise Linux 6 и 7, CentOS 6 и 7. , Убунту 12.04. Код, отвечающий за получение имени хоста, уязвим.

Чтобы перезаписать кучу, имя хоста должно удовлетворять следующим условиям:

  • Содержит только цифры и точку
  • Первый символ должен быть числом
  • Последний символ не должен быть точкой
  • Быть достаточно длинным, чтобы переполнить буфер (> 1 КБ).

Следует отметить, что опасность операции значительно снижается за счет двух факторов: gethostbyname() устарело из-за отсутствия поддержки IPv6, поэтому программное обеспечение часто использует getaddrinfo() чем ему; вызов inet_aton() до gethostbyname() предотвращает уязвимость.

Несмотря на эти два фактора, ребята из Qualys смогли реализовать удаленное выполнение кода в Exim4, перезаписав выделенный размер буфера и используя встроенный вызов $run{} Exim4. В ближайшее время обещают выпустить эксплойт для Metasploit. Другие реализации libc (uclibc, musl) не имеют этой уязвимости.

Eglibc уязвим.

CVE-2015-0235 Страница на сайте qualys.com Подробное описание в новостной рассылке oss-security. Теги: #информационная безопасность #ghost #glibc #glibc #gethostbyname

Вместе с данным постом часто просматривают: