Главная » Хабрахабр » «Holey beep»: найдена критическая уязвимость в «бипере» Linux

«Holey beep»: найдена критическая уязвимость в «бипере» Linux

В модуле beep операционной системы Linux обнаружена уязвимость, позволяющая запускать побочные эффекты файлов и просматривать их типы, не имея на то соответствующих прав. Расскажем, в чем суть проблемы и как варианты её решения предложило ИТ-сообщество.


/ Flickr / Chris / CC

Что делает Beep

Модуль beep формирует звуковые оповещения об ошибках, возникающих при работе в командной строке и в целом позволяет управлять «бипером» ПК. Утилиту создал разработчик Джонатан Найтингейл (Johnathan Nightingale), который хотел получить больше возможностей при работе с консолью, чем позволяла обычная команда printf("\a").

Суть уязвимости

Первые новости появились на сайте holeybeep.ninja, который описывает уязвимость в сатирической манере. В The Register полагают, что эта веб-страница — попытка высмеять тех, кто популяризирует баги и создает для них отдельные сайты. Уже позже начали появляться официальные отчеты об ошибках.

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

$ ls -ld /etc/hidden/
drwx------ 2 root root 4096 Apr 7 08:18 /etc/hidden/ $ ls -l /etc/hidden/secret
ls: cannot access '/etc/hidden/secret': Permission denied
$ ls -l /etc/hidden/nonexistent
ls: cannot access '/etc/hidden/nonexistent': Permission denied $ beep -e /etc/hidden/secret
ioctl: Inappropriate ioctl for device
ioctl: Inappropriate ioctl for device
$ beep -e /etc/hidden/nonexistent
Could not open /etc/hidden/nonexistent for writing
open: No such file or directory

При этом система выдает информацию о типе файла, даже если у запрашивающего пользователя нет на это прав (например, сокет может выдать сообщение: «No such device or address»). Этого не должно происходить, если файл лежит в директории, недоступной вызывающему пользователю. Кроме того, с помощью уязвимости злоумышленники могут запускать побочные эффекты и блокировать запуск произвольных программ. Например, запуск beep -s -e /bin/sh приведет к ошибке ETXTBSY («Текстовый файл занят»), что можно назвать DoS-атакой.

Как отмечают пользователи GitHub, причина уязвимости связана с возникновением гонок при использовании обработчиками сигнала функции free(). Эта функция не входит в список async-signal-safe, то есть не может быть безопасно вызвана внутри обработчика. Работа free() может прерваться другим сигналом, что вызывает нарушение структур данных и глобальных переменных управления кучей.

Резидент GitHub отмечает, что в последней версии beep.c один обработчик работает сразу с двумя сигналами (SIGINT и SIGTERM). Это позволяет повторно запускать handle_signal () несколько раз подряд, что приводит к двойному высвобождению памяти.


/ Flickr / Tomás Fano / CC

Патчи и решение проблемы

Чтобы устранить уязвимость, разработчики некоторых операционных систем (например, Ubuntu) выпустили фикс. Однако, по мнению сообщества, он адресует не все трудности, связанные с Beep. Как отмечают в обсуждении на GitHub, он решает ситуацию с гонками, но проблемы с раскрытием данных остаются.

По этим причинам, в качестве кардинального решения проблемы, исследователь Ханно Бок (Hanno Böck) предлагает перестать устанавливать Beep как suid. Он также отметил, что модуль Beep в принципе не нужен современным устройствам, так как биперы стоят не во всех компьютерах. В качестве замены Ханно Бок предлагает вернутся к простой и безопасной команде printf("\a"), как это сделали разработчики дистрибутива SUSE.

Материалы по теме из корпоративного блога 1cloud:


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Как за 1 день QA-инженеру получить оффер в Москве (и дорого ли тут жить)

Всем привет! С одной стороны, такой процесс требует большой единовременной мобилизации усилий ребят из разных команд, но с другой — даёт возможность быстрого большого найма. В последние годы российские компании перенимают западную практику «хайринг ивентов» (hiring event), когда кандидат проходит ...

Облачно, вероятна неотключаемая реклама на звездном небе

Сложный путь должен быть пройден от идеи создания до реального сотворения рукотворных звезд и картин в ночном небе.Рукотворная звезда А все началось… со звезды из Новой Зеландии. 21 января 2018 года в Новой Зеландии впервые в истории страны успешно вывели ...