- PVSM.RU - https://www.pvsm.ru -

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

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

«Holey beep»: найдена критическая уязвимость в «бипере» Linux - 1 [1]
/ Flickr / Chris [2] / CC [3]

Что делает Beep

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

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

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

В отчете [7], опубликованном 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»). Этого не должно происходить, если файл лежит в директории, недоступной вызывающему пользователю. Кроме того, с помощью уязвимости злоумышленники могут запускать побочные эффекты [8] и блокировать запуск произвольных программ. Например, запуск beep -s -e /bin/sh приведет [9] к ошибке ETXTBSY («Текстовый файл занят»), что можно назвать DoS-атакой.

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

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

«Holey beep»: найдена критическая уязвимость в «бипере» Linux - 2
/ Flickr / Tomás Fano [13] / CC [14]

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

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

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

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

Автор: 1cloud

Источник [22]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/277677

Ссылки в тексте:

[1] Image: https://habrahabr.ru/company/1cloud/blog/353374/

[2] Chris: https://www.flickr.com/photos/1967chevrolet/6051473993/

[3] CC: https://creativecommons.org/licenses/by/2.0/

[4] управлять: https://www.theregister.co.uk/2018/04/09/linux_beep_bug/

[5] получить: http://www.johnath.com/beep/

[6] holeybeep.ninja: https://holeybeep.ninja/

[7] отчете: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=895115

[8] побочные эффекты: https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B1%D0%BE%D1%87%D0%BD%D1%8B%D0%B9_%D1%8D%D1%84%D1%84%D0%B5%D0%BA%D1%82_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)

[9] приведет: https://github.com/johnath/beep/issues/11

[10] гонок: https://en.wikipedia.org/wiki/Race_condition

[11] не входит: http://man7.org/linux/man-pages/man7/signal-safety.7.html

[12] кучей: https://ru.wikipedia.org/wiki/%D0%9A%D1%83%D1%87%D0%B0_(%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C)

[13] Tomás Fano: https://www.flickr.com/photos/tomasfano/2886627797/

[14] CC: https://creativecommons.org/licenses/by-sa/2.0/

[15] фикс: https://packages.ubuntu.com/source/bionic/beep

[16] отметил: http://seclists.org/oss-sec/2018/q2/20

[17] Безопасность данных в облаке: угрозы и способы защиты: https://1cloud.ru/blog/bezopasnost-dannih-v-oblake?utm_source=habrahabr&utm_medium=cpm&utm_campaign=infosecurity&utm_content=blog

[18] Meltdown и Spectre: новогодняя процессорная уязвимость: https://1cloud.ru/blog/uyazvimost-meltdown-spectre?utm_source=habrahabr&utm_medium=cpm&utm_campaign=infosecurity&utm_content=blog

[19] Как обезопасить Linux-систему: 10 советов: https://1cloud.ru/blog/linux-server-security-advices?utm_source=habrahabr&utm_medium=cpm&utm_campaign=infosecurity&utm_content=blog

[20] Backup и Snapshot: отличия и применение: https://1cloud.ru/blog/razlichija-backup-i-snapshot?utm_source=habrahabr&utm_medium=cpm&utm_campaign=infosecurity&utm_content=blog

[21] 4 ключевых тренда облачной безопасности: https://1cloud.ru/blog/cloud-safety-trends?utm_source=habrahabr&utm_medium=cpm&utm_campaign=infosecurity&utm_content=blog

[22] Источник: https://habrahabr.ru/post/353374/?utm_campaign=353374