22.04.2021
Поводом блокировки послужила отправка участниками данной группы патча, который добавлял проверку указателя для исключения возможного двойного вызова функции "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" не только экспериментировали с продвижением сомнительных патчей, но и устраняли реальные уязвимости, и откат изменений может привести к возвращению ранее исправленных проблем с безопасностью. Некоторые мэйнтейнеры уже перепроверили отменённые изменения и не нашли проблем, но нашлись также патчи с ошибками.
Дополнение 3: Руководство факультета компьютерных наук Университета Миннесоты опубликовало заявление, в котором объявило о приостановке исследований в данном направлении, инициировании проверки корректности используемых методов и проведении разбирательства того, как подобное исследование было одобрено. Отчёт с результатами будет передан сообществу.