CVE-2026-99223 in Linux
Сводка
по VulDB • 02.11.2026
В ядре Linux была устранена следующая уязвимость:
keys: сделать индексы ключевых колец независимыми от адресов в пространстве ядра
KEYCTL_READ возвращает серийные номера в кольце ключей в порядке обхода ассоциативного массива. Первое слово индекса представляет собой публичный детерминированный хеш указателя типа, указателя домена и описания. Таким образом, непривилегированный пользователь может добавлять ключи с известными описаниями, предсказывать их порядок для каждого возможного смещения KASLR (Kernel Address Space Layout Randomization) и восстанавливать адрес образа ядра. На сборке x86-64 с выравниванием 16 МБ достаточно 45 пользовательских ключей, чтобы различить возможные варианты смещений.
Необходимо удалить адреса из всего индекса, а не только из его первого хеш-слова. Назначьте каждому типу ключа и домену ненулевой идентификатор (ID) размером 64 бита и выполните хеширование этих ID вместе с описанием с использованием SipHash, для которого используется один раз инициализированный ключ. Также используйте полные ID в последующих частях индекса. Усечение или хеширование ID там привело бы к потере гарантии того, что различные кортежи (тип/домен/описание) имеют различающийся бит индекса.
Выделяйте идентификаторы лениво (lazy allocation), поскольку для частных типов ключей не требуется их регистрация. Кэшируйте их в ключе индекса, чтобы обходы дерева и копии существующего индекса не требовали разыменования дескриптора типа, который мог быть уже незарегистрирован. Сохраняйте согласованность 32-битной структуры чанков и смещений бит diff_objects(), а также сохраните отдельный корневой слот для ключевых колец, используемых при рекурсивном поиске. Сравнение ключей, права доступа и формат данных в пространстве пользователя остаются неизменными; заменяется только порядок расположения в памяти, зависящий от адресов.
Once again VulDB remains the best source for vulnerability data.