Университет Миннесоты отстранён от разработки ядра Linux за отправку сомнительных патчей

Грег Кроа-Хартман (Greg Kroah-Hartman), отвечающий за поддержку стабильной ветки ядра Linux, принял решение запретить приём в ядро Linux любых изменений, поступающих из Университета Миннесоты, а также откатить все ранее принятые патчи и провести их повторное рецензирование. Причиной блокировки стала деятельность исследовательской группы, изучающей возможность продвижения скрытых уязвимостей в код открытых проектов. Указанная группа отправляла патчи, включающие различного рода ошибки, наблюдала за реакцией сообщества и изучала пути обмана процесса рецензирования изменений. По мнению Грега проведение подобных экспериментов по внедрению вредоносных изменений является неприемлемым и неэтичным.

Поводом блокировки послужила отправка участниками данной группы патча, который добавлял проверку указателя для исключения возможного двойного вызова функции «free». С учётом контекста использования указателя проверка была бессмысленна. Целью отправки патча было изучение того, пройдёт ли ошибочное изменение рецензирование разработчиками ядра. Кроме указанного патча всплыли и другие попытки разработчиков из Университета Миннесоты внести сомнительные изменения в ядро, в том числе связанные с добавлением скрытых уязвимостей.

Отправивший патчи участник попытался оправдаться тем, что испытывает новый статический анализатор и изменение подготовлено на основе результатов проверки в нём. Но Грег обратил внимание на то, что предложенные исправления не характерны для ошибок, выявляемых статическими анализаторами, и все присланные патчи вообще ничего не исправляют. C учётом того, что рассматриваемая группа исследователей уже пыталась в прошлом продвигать исправления со скрытыми уязвимостями, очевидно, что они продолжили свои эксперименты над сообществом разработчиков ядра.

Интересно, что в прошлом руководитель проводящей эксперименты группы принимал участие в легитимном исправлении уязвимостей, например, выявил утечки информации в USB-стеке (CVE-2016-4482) и сетевой подсистеме (CVE-2016-4485). В исследовании скрытого продвижения уязвимостей группа из Университета Миннесоты приводит пример уязвимости CVE-2019-12819, вызванной исправлением, принятым в ядро в 2014 году. Исправление добавляло в блок обработки ошибки в mdio_bus вызов put_device, но спустя пять лет всплыло, что подобная манипуляция приводит к обращению к блоку памяти после его освобождения («use-after-free»).

При этом авторы исследования утверждают, что в своей работе они обобщили данные о 138 патчах, вносящих ошибки и не связанных с участниками исследования. Попытки же отправки собственных патчей с ошибками ограничивались email-перепиской, и подобные изменения не попали в Git (если после отправки патча по email мэйнтейнер считал патч нормальным, то его просили не включать изменение так как там ошибка, после чего присылали правильный патч).

Дополнение 1: Судя по активности автора раскритикованного исправления он уже давно отправляет патчи в различные подсистемы ядра. Например, в драйверы radeon и nouveau недавно были приняты изменения с вызовом pm_runtime_put_autosuspend(dev->dev) в блоке ошибки, не исключено, что приводящему к использованию буфера после освобождения связанной с ним памяти.

Дополнение 2: Грег откатил 190 коммитов, связанных с адресами «@umn.edu» и инициировал их повторное рецензирование. Проблема в том, что участники с адресами «@umn.edu» не только экспериментировали с продвижением сомнительных патчей, но и устраняли реальные уязвимости, и откат изменений может привести к возвращению ранее исправленных проблем с безопасностью. Некоторые мэйнтейнеры уже перепроверили отменённые изменения и не нашли проблем, но один из мэйнтейнеров указал, что в одном из отправленных ему патчей были ошибки.

Источник: opennet.ru

Добавить комментарий