Логотип

Разработчики ядра Linux планируют отказаться от использования AF_ALG, чтобы снизить уязвимость системы

Разработчики ядра Linux планируют отказаться от использования AF_ALG, чтобы снизить уязвимость системы

Краткое резюме

  • AF_ALG, интерфейс ядра для криптографических алгоритмов пользовательского пространства, не поддерживается в Linux Kernel 7.2.
  • Разработчики ядра считают, что криптографический интерфейс AF_ALG создает множество уязвимостей, но при этом приносит мало реальной пользы.
  • Дело не в том, что AF_ALG не работает. Дело в изменении соотношения затрат и пользы. Библиотеки пользовательского пространства, такие как OpenSSL, уже справляются с этой задачей лучше, поэтому нет смысла сохранять привилегированный интерфейс ядра только для тех немногих программ, которые его используют.

 

В ядре Linux 7.2 поддержка AF_ALG прекращена

Разработчики ядра Linux переходят на отказ от использования криптографического интерфейса AF_ALG в рамках постоянной работы по сокращению уязвимостей ядра и повышению общей безопасности системы.

AF_ALG позволяет пользовательским приложениям получать доступ к криптографическим алгоритмам, реализованным в ядре Linux. Изначально этот интерфейс предназначался для удобного доступа к криптографическим службам ядра и функциям аппаратного ускорения, но теперь разработчики считают, что он приносит мало практической пользы по сравнению с рисками для безопасности и сложностями в обслуживании.

Несмотря на то, что AF_ALG по-прежнему доступен в текущих версиях Linux, процесс его поддержки прекращен. В последних патчах задокументировано прекращение поддержки и удаление ключевых функций, таких как поддержка копирования без потерь и разгрузка аппаратного ускорителя. Ожидается, что эти изменения появятся в ядре Linux 7.2.

В этой статье мы рассмотрим почему разработчики Linux хотят отказаться от функций AF_ALG и причины, по которым было принято такое решение.

Примечание редактора: по состоянию на июнь 2026 года Linux 7.1 находится на стадии подготовки к выпуску (RC6). Linux 7.2 еще не выпущен, и окно слияния еще не открылось. Устаревание AF_ALG, описанное в этой статье, одобрено и включено в очередь в криптографической подсистеме ядра для слияния с Linux 7.2, которое, как ожидается, произойдет в середине июня 2026 года, а выход стабильной версии Linux 7.2 — в конце августа 2026 года.

 

Читать  Как использовать команду id в Linux. 5 полезных примеров

Почему разработчики ядра Linux хотят отказаться от поддержки AF_ALG

Разработчики Linux все чаще сталкиваются с серьезной проблемой: уязвимости обнаруживаются быстрее, чем когда-либо. Современные инструменты анализа, в том числе исследования в области безопасности с использованием искусственного интеллекта и больших языковых моделей (БЯМ), помогают выявлять ошибки и потенциальные пути атак гораздо быстрее, чем раньше.

Во время обсуждения устаревания AF_ALG разработчик ядра Linux Эрик Биггерс указал на меняющуюся картину уязвимостей и привел в пример недавние случаи, такие как уязвимость Copy Fail (CVE-2026-31431). Для тех, кто не в курсе, Copy Fail — это логическая ошибка, которая позволяет 732-байтовому скрипту на Python получить root-доступ практически во всех основных дистрибутивах Linux с ядрами, выпущенными после 2017 года.

Эрик утверждает, что современные методы поиска ошибок приводят к тому, что большие уязвимые поверхности ядра становится все труднее обосновать, поскольку они имеют ограниченную практическую ценность.

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

 

Проблема с поддержкой копирования без выделения памяти

Одной из первых функций AF_ALG, которые планируется удалить, является возможность копирования без выделения памяти.

Архитектура с нулевым копированием может повысить производительность, позволяя ядру работать напрямую с памятью, предоставляемой пользовательскими приложениями, без создания промежуточных копий. Однако такой подход создает проблемы с безопасностью.

Для тех, кому интересно: реализация AF_ALG с нулевым копированием позволяет пользовательскому пространству запрашивать криптографические операции непосредственно на страницах страничного кэша и вносить изменения в память во время выполнения криптографических операций. Это создает условия, которые могут привести к уязвимостям от момента проверки до момента использования (TOCTOU).

Читать  Критическая уязвимость cPanel активно эксплуатируется в атаках ransomware «Sorry»

Проблема особенно серьезна тем, что AF_ALG может работать с отображением памяти на основе файлов. В некоторых случаях это может позволить злоумышленнику получить доступ к конфиденциальным файлам, таким как su двоичный файл, во время выполнения криптографических операций.

Чтобы снизить этот риск, разработчики отключают поддержку нулевого копирования в AF_ALG и заменяют ее более безопасными внутренними копиями данных в ядре.

 

Аппаратная разгрузка не принесла ожидаемых результатов

Еще одно предлагаемое изменение касается аппаратного ускорения криптографических операций.

Изначально AF_ALG предназначался для обеспечения доступа к специализированному оборудованию для криптографических ускорителей через криптографическую подсистему ядра. Однако на практике разработчики обнаружили, что эти драйверы ускорителей усложняют работу, увеличивают затраты на обслуживание и создают дополнительные риски для безопасности.

Они также отметили, что AF_ALG — не самый эффективный интерфейс для аппаратных ускорителей и что в реальных условиях он используется относительно редко.

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

 

Почему разработчикам рекомендуется использовать криптографические библиотеки пользовательского пространства

Для большинства приложений криптографические библиотеки пользовательского пространства, такие как OpenSSL и аналогичные проекты, уже предоставляют зрелые, хорошо поддерживаемые реализации распространенных криптографических алгоритмов.

Использование библиотек пользовательского пространства позволяет избежать дополнительных уязвимостей ядра, а также упрощает разработку и обслуживание. Это соответствует давнему принципу разработки Linux: функционал, который не должен выполняться в ядре, по возможности должен оставаться в пользовательском пространстве.

Разработчики отметили, что относительно небольшое количество приложений по-прежнему зависит от AF_ALG. В ходе обсуждения был упомянут один пример — iwd, демон беспроводной связи Intel. Разработчикам рекомендуется по возможности переводить оставшихся пользователей AF_ALG на криптографические библиотеки пользовательского пространства.

 

Что должны делать пользователи Linux

Для большинства пользователей Linux отказ от поддержки AF_ALG не требует немедленных действий. Этот интерфейс остается доступным в текущих версиях, а полное удаление произойдет в будущих версиях ядра.

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

Читать  Лучшие веб-инструменты командной строки для Linux

Помимо установки последних обновлений ядра, разработчикам и системным администраторам следует проверить, зависит ли их программное обеспечение от AF_ALG, и рассмотреть возможность перехода на криптографические библиотеки пользовательского пространства до окончательного удаления этой функции.

Конкретные шаги, которые необходимо предпринять:

  • Немедленно устраните уязвимость Copy Fail и подобные ошибки: установите последнее обновление ядра для вашего дистрибутива Linux. Исправление было объединено с основной веткой в апреле 2026 года и теперь доступно во всех основных дистрибутивах.
  • Временное решение проблемы Copy Fail: Если немедленное обновление ядра невозможно, отключите конкретный уязвимый модуль, задав CONFIG_CRYPTO_USER_API_AEAD=n в конфигурации ядра, или внесите модуль algif_aead в черный список. Это заблокирует уязвимый интерфейс AEAD, не отключая весь AF_ALG.
  • Полное отключение AF_ALG (необязательно): Если ни одно из ваших приложений вообще не использует AF_ALG, отключение более широкой опции CONFIG_CRYPTO_USER_API приведет к удалению всего интерфейса. Это опция, доступная во время сборки для тех, кто поддерживает собственные ядра.
  • Проверьте зависимости от AF_ALG: Определите, какие приложения используют AF_ALG, и оцените возможности миграции до того, как поддержка будет прекращена в одном из будущих релизов ядра.

 

Заключительные мысли

Предлагаемое прекращение поддержки AF_ALG отражает общую тенденцию в разработке ядра Linux: упрощение и отказ от функций, которые создают риски для безопасности, не принося существенной пользы в реальных условиях.

Отказавшись от поддержки нулевого копирования, удалив функцию аппаратной разгрузки и поощряя переход на криптографические библиотеки пользовательского пространства, разработчики ядра Linux стремятся уменьшить уязвимость ядра и снизить риски для безопасности в будущем.

AF_ALG пока не удален, но разработчики ядра планируют отказаться от его поддержки. Разработчики считают, что долгосрочные издержки перевешивают преимущества, и процесс отказа от поддержки уже начался.

Ссылки:

  1. Патч для отказа от поддержки AF_ALG — дерево криптографических модулей ядра (Эрик Биггерс)
  2. Linux 7.2 прекращает поддержку AF_ALG из-за «огромной уязвимости», отказывается от разгрузки
  3. Криптографический код Linux AF_ALG без поддержки нулевого копирования

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:

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

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

19 + 4 =

Это может быть вам интересно


Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала