Суть исследования Маргарителли приведена на скриншоте выше: в некоторых случаях мы можем обратиться к серверу, на котором установлен и запущен компонент cups-browsed, и без спроса добавить собственный принтер. С помощью всех остальных уязвимостей мы можем вызвать выполнение произвольного кода. Звучит страшновато, но для объективной оценки лучше сослаться на
Сухие строчки бюллетеня Canonical заметно контрастируют с эмоциональным
Она отвечает за автоматическое обнаружение и добавление принтеров. Подключение к порту позволяет инициировать добавление принтера извне. В конфигурационном файле cups-browsed есть возможность ввести ограничения на то, кому система будет отвечать по данному порту, но по умолчанию допускаются любые подключения. Вся эта функциональность является реализацией протокола
Здесь Симон делает небольшое отступление: он применил метод фаззинга и нашел несколько случаев падения cups-browsed во время коммуникации по порту 631. Но последствия этих ошибок обработки данных он не расследовал: возможно, позднее они приведут к обнаружению иных уязвимостей. В основной ветке работы использовалась штатная функциональность данной подсистемы, которая позволила добавить ничего не подозревающему пользователю системы на базе Linux «левый принтер»:
Если вернуться к скриншоту в начале текста, можно отметить, что во время обращения к cups-browsed происходит также раскрытие информации о системе. Как минимум становится известна версия ядра Linux, а в некоторых случаях может раскрываться имя пользователя. Это первая из найденных уязвимостей, получившая идентификатор
Что еще хуже, во время добавления принтера потенциальный злоумышленник контролирует несколько строк с его параметрами, которые не проверяются атакуемой системой. Это краткое описание еще двух уязвимостей в компонентах libcupsfilters и libppd, соответственно
Преобразователи данных из одного формата в другой традиционно становятся целью атак. Не стал исключением и код foomatic-rip. В 2011 году в нем была закрыта
Собираем атаку. Через «не баг, но фичу» cups-browsed добавляем принтер в систему. На этом этапе нам вообще не требуется какое-либо действие пользователя, все происходит автоматически. На этапе добавления задаем параметры «принтера», включая обращение к foomatic-rip с произвольными параметрами. Эти «параметры» (в примере Симона: echo 1 >/tmp/PWNED) будут выполнены при попытке печати чего угодно на заранее установленный потенциальным злоумышленником «принтере».
А теперь поговорим о сопутствовавшей данному исследованию драме. Маргарителли, будучи достаточно эмоциональным человеком, явно был не в восторге от процесса коммуникации с мейнтейнерами CUPS. Обнаружение уязвимости и построение Proof of Concept заняли два дня, в то время как общение с ответственными за подсистему печати в общей сложности длилось больше трех недель (что вообще-то нельзя назвать чем-то из ряда вон выходящим). В результате еще до раскрытия информации 26 сентября ходили слухи о какой-то грандиозной уязвимости в Linux с рейтингом по шкале CVSS чуть ли не 9,9 балла из 10 возможных. Когда в реальности выяснилось, что речь идет все же об (а) относительно легкоустранимой и (б) затрагивающей сравнительно небольшое количество систем проблеме, наступила стадия легкого разочарования.
Маргарителли начали обвинять в хайпе на не столь существенной проблеме, он едко отвечал на подобные комментарии в соцсетях, нападал на СМИ, обвинял разработчиков в затягивании процесса и так далее. Среди всего этого неконструктивного диалога есть только один интересный момент: откуда взялась оценка уязвимости (четвертой, в cups-filters и foomatic-rip) в 9,9 балла? Маргарителли тут вроде бы ни при чем, оценку предложил в приватной переписке один из разработчиков Red Hat. Позднее она была пересмотрена до 9 баллов ровно.
То есть происходил приватный диалог в закрытой группе, в ходе которого кто-то предположил оценку уязвимости. Никто не собирался публиковать информацию, пока все стороны не придут к общему мнению, чтобы не вызывать излишнюю панику. Проблема в том, что эту переписку слили: 24 сентября в общий доступ попало приватное обсуждение уязвимости на
А так получилось, что (из-за утечки с портала CERT VINCE) уязвимость раскрыли во всей полноте еще до выпуска патчей. Отметим, что по-настоящему эффект от обнаружения данной уязвимости пока трудно оценить. Относительно легко устраняется, возможно, только данная конкретная цепочка эксплуатации, в то время как внутри CUPS может быть множество других проблем.
По независимой
Что еще произошло
Не менее впечатляющее исследование на прошлой неделе
Исследователи «Лаборатории Касперского» подробно
ИИ-фича Windows Recall
Серьезная проблема (9 баллов по шкале CVSS)