Инженеры из компании Google выступили на конференции Linux Plumbers Conference с докладом, в котором рассказали об инициативе переноса в основное ядро оставшихся патчей от заброшенного последние несколько лет проекта LLVMLinux. В результате проведённой работы предоставлена возможность сборки LTS-ядер Linux 4.4 и 4.9 с использованием компилятора Clang. Поддерживается сборка для архитектур x86_64 и ARM64. Перед сборкой требуется наложение одного патча (4.4, 4.9). Работа проведена в рамках инициативы по переводу сборочного инструментария Android и Chrome OS на использование Clang/LLVM. Также можно отметить поддерживаемый одним из сотрудников Google репозиторий clang-kernel-build и ветку в репозитории проекта Chromium с инструкциями и патчами для сборки ядра Linux 4.13 с использованием Clang.
Компания Oracle представила пятое функциональное обновление для ядра Unbreakable Enterprise Kernel 4 (UEKR4U5). Исходные тексты ядра, включая разбивку на отдельные патчи, доступны в публичном Git-репозитории Oracle. Ядро распространяется в качестве альтернативы штатному пакету с ядром, поставляемому в Red Hat Enterprise Linux, и предоставляет ряд расширенных возможностей, таких как интеграция DTrace и улучшенная поддержка Btrfs. Пакеты с ядром подготовлены для Oracle Linux 6 и Oracle Linux 7. Ключевые улучшения: В реализации Btrfs улучшена обработка дедупликации данных и обеспечена возможность удаления устройств по их идентификатору (device ID); Для XFS перенесён усовершенствованный код обработки ошибок; Из ядер Linux 4.9 и 4.10 перенесены изменения, связанные с гипервизором Xen; В реализации DTrace улучшена поддержка FBT (Function Boundary Tracing) для отслеживания выхода за границы буфера в функциях, работающих на уровне ядра. Расширен охват проверок, осуществляемых провайдером ввода/вывода.
В сетевой подсистеме ядра Linux выявлены две опасные уязвимости, которые позволяют локальному пользователю повысить свои привилегии в системе: Первая уязвимость (CVE-2017-1000112) вызвана состоянием гонки (race condition) в коде управления аппаратно акселерированным разбором фрагментированных UDP-пакетов - UFO (UDP Fragmentation Offload). Суть проблемы в том, что построение пакета для UFO осуществляется при помощи двух вызовов __ip_append_data() и ip_ufo_append_data(), между которыми атакующий может подменить тип с UFO на не-UFO и вызвать таким наложение требующего фрагментации хвоста на область памяти вне границ выделенного буфера. Проблема присутствует в ядре с 18 октября 2005 года и проявляется как в стеке IPv4, так и при использовании IPv6. Вторая уязвимость (CVE-2017-1000111) вызвана состоянием гонки при обработке сокетов AF_PACKET с опцией PACKET_RESERVE. Это третья уязвимость в реализации кольцевых буферов TPACKET_V3 сокетов AF_PACKET (функция packet_set_ring), которые включены по умолчанию
В списке рассылки ядра Linux представлена новая файловая система NOVA (NOn-Volatile memory Accelerated file system), созданная для обеспечения максимальной эффективности и надёжности работы на чипах энергонезависимой памяти (NVM, non-volatile memory, например NVDIMM и Intel 3DXpoint DIMM), сочетающих производительность ОЗУ с возможностью постоянного хранения содержимого, не теряющегося после прекращения подачи энергии. Традиционные ФС не достаточно эффективны для NVM-памяти, так как не рассчитаны на байтовую адресацию, применяемую в энергонезависимой памяти, которая для обработчиков выглядит как обычное ОЗУ. Традиционные ФС пытаются снизить интенсивность обращения к носителю, который заведомо медленнее оперативной памяти, а также пытаются группировать операции для обеспечения последовательного чтения при применении НЖМД. Для NVM-хранилищ подобные усложнения излишни, так как скорость обращения к данным сопоставима с оперативной памятью и порядок доступа не имеет значения. Отмечается, что представленная
Группа исследователей из Китайского университета Гонконга выявила уязвимость (CVE-2017-7533) в ядре Linux, которая может использоваться для повышения своих привилегий в системе. Проблема проявляется начиная с ядра v3.14-rc1 и актуальна вплоть до ядра 4.12. В сети уже распространяется эксплоит для 32-разрядых систем. Для 64-разрядных систем эксплоит пока отсутствует, но теоретически нет преград для его создания. Уязвимость вызвана состоянием гонки между обработкой события inotify и вызовом vfs_rename() в VFS, возникающим при выполнении операции переименования над тем же файлом. Атакующий может добиться ситуации, при которой после обработки события inotify указатель указывает на новое имя файла, а буфер выделен для старого имени. Соответственно хвост нового имени файла сохраняется за пределами буфера и переписывает данные за границей текущего slab, например, сожет переопределить следующий slab или указатель на список свободных блоков. Уязвимость устранена в Ubuntu, SUSE, openSUSE и Fedora. Проблема пока
В списке рассылки разработчиков ядра Linux представлен первый публичный выпуск приложения hotspot, в рамках которого разработан GUI для наглядного изучения отчётов, подготовленных с использованием подсистемы ядра perf, предоставляющей средства для анализа производительности. Hotspot может выступать в качестве прозрачной замены команде "perf report" при разборе файлов perf.data, дополнительно предоставляя такие возможности как визаулизация через FlameGraph, сводный обзор состояния в стиле утилиты top, агрегация статистики по вызовам, различные виды сортировки, отображение всплывающих подсказок, встроенные механизмы поиска и возможность отображения бок о бок метрик для нескольких событий.
Латиноамериканский Фонд свободного ПО опубликовал полностью свободный вариант ядра 4.12 - Linux-libre 4.12-gnu, очищенный от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. Кроме того, Linux-libre отключает функции ядра по загрузке несвободных компонентов, не входящих в поставку ядра, и удаляет упоминание об использовании несвободных компонентов из документации. Для очистки ядра от несвободных частей, в рамках проекта Linux-libre создан универсальный shell-скрипт, который содержит тысячи шаблонов для определения наличия бинарных вставок и исключения ложных срабатываний. Также доступны для загрузки готовые патчи, созданные на основе использования вышеупомянутого скрипта. Ядро Linux-libre рекомендовано для использования в дистрибутивах, соответствующих критериям Фонда СПО по построению полностью свободных дистрибутивов GNU/Linux. Например, ядро Linux-libre используется в таких дистрибутивах, как Dragora Linux, Trisquel,
После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 4.13. Среди наиболее заметных изменений: в состав включены планировщики ввода/вывода BFQ и Kyber, для live-патчей реализована гибридная модель обеспечения непротиворечивости, добавлен модуль dm-integrity, интегрирован фреймворк TEE (Trusted Execution Environment), в MD RAID5 добавлена поддержка частичного лога чётности, в blk-throttle обеспечена поддержка "мягких" лимитов, в поставку добавлена утилита "AnalyzeBoot". В новую версию принято более 13 тысяч исправлений от 1500 разработчиков, размер патча - 89 Мб, что примерно в два раза больше, чем патч для ядра 4.11 (изменения затронули 12364 файлов, добавлено 1300537 строк кода, удалено 266937 строк). Около 45% всех представленных в 4.12 изменений связаны с драйверами устройств, примерно 16% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 13% связано с сетевым стеком, 3% - файловыми системами и 3% c внутренними подсистемами ядра. Основные новшества:
Французский разработчик, действующий под псевдонимом Dominus Carnufex, на практике продемонстрировал реалистичность идей по переписыванию ядра Linux на языке Rust. В настоящее время Rust уже хорошо показал себя в качестве языка низкоуровневого системного программирования и даже существует несколько проектов по разработке новых операционных систем на языке Rust. Автор исследования относится к проектам по созданию новых ОС скептически, считая, что у них нет шансов на завоевание рынка. При этом, более реалистичным выглядит постепенная переработка ядра Linux на Rust, что позволило бы решить многие проблемы с безопасностью. Чтобы не выглядеть голословным Dominus Carnufex подготовил рабочий прототип реализации интегрируемого в ядро системного вызова, код которого написан на языке Rust с ассемблерными вставками, оформленными в виде unsafe-блоков. Код компилируется при помощи rustc в объектные файлы, не привязанные к стандартной библиотеке и прикрепляемые к ядру во время сборки. Пример протестирован на ядре Linux
В списке рассылки ядра Linux опубликован набор патчей с реализаций LSM-модуля WhiteEgret, представляющего средства для обеспечения защиты системы через применение белого списка исполняемых компонентов. WhiteEgret допускает исполнение только кода приложений и библиотек, которые явно разрешены и занесены в заранее определённый белый список. Исполнение всех не включённых в список приложений блокируется, что не позволяет выполнить в системе недозволенные программы и вредоносное ПО. WhiteEgret хорошо подходит для статичных окружений, состав которых не меняется длительное время, например, для типовых серверов и промышленных управляющих систем. Обработка белого списка дозволенных программ выполняется в пользовательском окружении при помощи процесса WEUA (WhiteEgret User Application). В процессе обработки системных вызовов execve и mmap_file ядро отправляет в WEUA запрос, передавая полный путь к исполняемому файлу. WEUA на основании белого списка принимает решение о возможности исполнения данного файла. Вызов