The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

·25.03.2025 Уязвимости в ingress-nginx, позволяющие выполнить код и захватить управление кластерами Kubernetes (54 +12)
  В развиваемом проектом Kubernetes ingress-контроллере ingress-nginx выявлены четыре уязвимости, позволяющие добиться выполнения своего кода на серверах облачных систем, использующих платформу Kubernetes, и получить полный привилегированный доступ к кластеру Kubernetes. Проблемам присвоен критический уровень опасности (9.8 из 10). Выявившие проблемы исследователи присвоили уязвимостям кодовое имя IngressNightmare и отметили, что уязвимости затрагивают около 43% облачных окружений. Уязвимости устранены в версиях ingress-nginx 1.11.5 и 1.12.1.

Ingress-контроллер выступает в роли шлюза и используется в Kubernetes для организации доступа из внешней сети к сервисам внутри кластера. Контроллер ingress-nginx является наиболее популярным и применяет сервер NGINX для проброса обращений к кластеру, маршрутизации внешних запросов и балансировки нагрузки. Проект Kubernetes предоставляет базовые ingress-контроллеры для AWS, GCE и nginx, последний из которых никак не связан с контроллером kubernetes-ingress, сопровождением которого занимается компания F5/NGINX (рассматриваемые уязвимости не затрагивают проекты, развиваемые разработчиками NGINX, упоминание nginx в названии ingress-nginx связано лишь с задействованием nginx в качестве прокси).

Уязвимости позволяют неаутентифицированному атакующему добиться выполнения своего кода в контексте контроллера ingress-nginx, при возможности отправки запроса к web-обработчику Admission. В ходе сканирования сети выявлено более 6500 уязвимых кластеров Kubernetes, использующих общедоступные уязвимые контроллеры с открытым для внешних запросов обработчиком Admission.

В конфигурации по умолчанию запущенный атакующим код может получить доступ к настройкам объекта Ingress, в которых, среди прочего, хранятся и учётные данные для обращения к серверам Kubernetes, что позволяет добиться привилегированного доступа ко всему кластеру. В качестве обходного пути защиты рекомендуется отключить в ingress-nginx функцию "Validating Admission Controller".

Контроллер Admission запускается в отдельном pod-окружении и выполняет операцию проверки входящих ingress-объектов перед их развёртыванием. По умолчанию web-обработчик Admission принимает запросы без аутентификации из публичной сети. При выполнении проверки контроллер Admission создаёт конфигурацию для http-сервера nginx на основе содержимого полученного ingress-объекта и проверяет её корректность.

Выявленные уязвимости позволяют добиться подстановки своих настроек в nginx через отправку специально оформленного ingress-объекта напрямую в контроллер Admission. Исследователи обнаружили, что некоторые свойства проверочных запросов, выставленные в поле ".request.object.annotations", напрямую подставляются в конфигурацию nginx. При этом сгенерированная конфигурация не применяется, а лишь тестируется путём запуска исполняемого файла "nginx" c опцией "-t".

В частности, подстановка внешних данных в конфигурацию выполняется для параметров "mirror-target", "mirror-host" (CVE-2025-1098), "auth-tls-match-cn" (CVE-2025-1097) и "auth-url" (CVE-2025-24514). Например, в строке конфигурации "set $target {{ $externalAuth.URL }};" вместо "{{ $externalAuth.URL }}" подставляется URL, указанный в параметре "auth-url". При этом корректность URL не проверяется. Соответственно, атакующий может передать в качестве URL значение вида "http://example.com/#;\nнастройки" и подставить свои настройки в файл конфигурации.

Для выполнения произвольного кода в процессе проверки конфигурации командой "nginx -t" исследователи воспользовались тем, что помимо проверки синтаксиса nginx загружает библиотеки с модулями и открывает файлы, упомянутые в конфигурации, для оценки их доступности. Среди прочего, при обработке директивы ssl_engine производится загрузка указанной в директиве разделяемой библиотеки для SSL-движка.

Для загрузки своей библиотеки на сервер Kubernetes исследователи воспользовались (CVE-2025-1974) тем, что при обработке больших запросов nginx сохраняет тело запроса во временном файле, который сразу удаляется, но в файловой системе "/proc" для этого файла остаётся открытый файловый дескриптор. Таким образом, можно одновременно отправить запросы для сохранения временного файла и инициирования проверки конфигурации, в которой в директиве "ssl_engine" указан путь к дескриптору в файловой системе "/proc".

Для того, чтобы файловый дескриптор длительное время оставался доступен значение "Content-Length" в запросе можно указать заведомо большим, чем фактически переданные данные (сервер будет ждать приёма оставшихся данных). Дополнительной сложностью является необходимость угадать PID процесса и номер файлового дескриптора, связанного с загруженной разделяемой библиотекой, но так как в контейнере обычно используется минимальное число запущенных процессов, нужные значения угадываются путём перебора в несколько попыток. В случае успеха и загрузки подставленной разделяемой библиотеки, атакующий может получить доступ к хранимым внутри pod-окружения параметрам, достаточным для управления всем кластером.

Для проверки использования уязвимого ingress-nginx можно выполнить команду:


   kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx

  1. OpenNews: Уязвимости в ingress-nginx, позволяющие скомпрометировать кластеры Kubernetes
  2. OpenNews: Уязвимость в runc, позволяющая выбраться из контейнеров Docker и Kubernetes
  3. OpenNews: Root-уязвимость из-за некорректных настроек в пакете nginx для Debian и Ubuntu
  4. OpenNews: Критическая уязвимость в http-сервере Nginx
  5. OpenNews: Уязвимость в runc, позволяющая выбраться из контейнеров Docker и Kubernetes
Обсуждение (54 +12) | Тип: Проблемы безопасности | Интересно
·25.03.2025 Разработчики GRUB2 рассматривают возможность использования языка Rust (142 +14)
  Владимир Сербиненко, один из трёх мэйнтейнеров загрузчика GRUB2, внёсший в кодовую базу более пяти тысяч изменений, выставил на обсуждение возможность написания модулей для GRUB2 c использованием языка Rust. Владимир представил первые результаты экспериментов с добавлением поддержки Rust в GRUB2 и созданием необходимых обвязок. Для GRUB также подготовлены изменения, позволяющие использовать разделяемые библиотеки (".so", ET_DYN) для модулей, вместо связывания на уровне объектных файлов (".o", ET_REL).

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

Предполагается, что использование Rust поможет проекту уменьшить вероятность появления некоторых видов ошибок, особенно в коде модулей, содержащем множество больших и сложных процедур парсинга. В феврале в результате аудита кодовой базы GRUB были выявлены 72 проблемы с безопасностью, 21 из которых признаны опасными уязвимостями, пригодными для обхода механизма верифицированной загрузки UEFI Secure Boot. 20 из 21 уязвимостей вызваны ошибками при работе с памятью, приводившими к переполнению буфера или обращению к памяти после её освобождения.

Дополнительно можно отметить выпуск проекта GNU Boot 0.1 RC6, в состав которого вошли вышеотмеченные исправления уязвимостей (в самом GRUB2 исправления продолжают распространяться в виде патчей без формирования отдельного релиза). Проект GNU Boot развивает замену проприетарным прошивкам UEFI и BIOS, основанную на CoreBoot, но применяющую более жёсткие требования к включению бинарных компонентов. GNU Boot преподносится как "coreboot-libre", т.е. как редакция CoreBoot, избавленная от блобов и несвободных компонентов, по аналогии с тем, как проект Linux-libre развивает очищенный вариант ядра Linux. Отдельно развиваются похожие проекты Libreboot и Canoeboot.

  1. OpenNews: В загрузчике GRUB2 выявлена 21 уязвимость
  2. OpenNews: Уязвимость в GRUB2, позволяющая обойти блокировку загрузки, нажав 28 раз Back Space
  3. OpenNews: Уязвимость в патчах Red Hat к загрузчику GRUB2, позволяющая обойти проверку пароля
  4. OpenNews: Релиз загрузочного менеджера GNU GRUB 2.12
  5. OpenNews: Уязвимость в NTFS-драйвере из состава GRUB2, позволяющая выполнить код и обойти UEFI Secure Boot
Обсуждение (142 +14) | Тип: К сведению |
·25.03.2025 Windows Defender блокирует свободный драйвер WinRing0, используемый в официальном OEM-ПО (85 +12)
  Начиная с 11 марта встроенный в ОС Windows антивирусный пакет Windows Defender начал блокировать (помещать в карантин) свободный драйвер WinRing0. Драйвер используется для получения доступа из пространства пользователя к различному оборудованию, для которого не предусмотрено другого API в системе.

Драйвер WinRing0 востребован в проектах, управляющих настройками оборудования, как свободных (OpenRGB, Libre Hardware Monitor, FanControl), так и проприетарных (SignalRGB, Razer Synapse 3). Среди программ, использующих драйвер, есть официальное ПО от десятков производителей оборудования, в том числе популярных. Стоит отметить, что драйвер был подписан самостоятельно автором (разработчиком CrystalDiskMark) и принят Microsoft.

Отмеченная Microsoft проблема, из-за которой произведена блокировка, связана с тем, что доступ к установленному в системе драйверу может получить любая программа, и посредством драйвера программа может манипулировать любым устройством в системе или повысить свои привилегии (CVE-2020-14979).

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

На данный момент для WinRing0 выпущено исправление, ограничивающее использование драйвера только программами, запущенными с правами администратора, однако, из-за изменений политики Microsoft в отношении драйверов, получить для новой сборки подпись является затруднительным.

Китайская компания HYTE, разрабатывающая ПО для мониторинга оборудования HYTE Nexus, в котором также используется этот драйвер, вызвалась взять бюрократическую процедуру на себя, и анонсировала, что опубликует подписанную сборку для свободного использования. Тем не менее, даже если Microsoft примет обновлённый драйвер, множество программ для управления настройками оборудования и мониторинга потребуется запускать с правами администратора или адаптировать для работы с изменённым драйвером.

У драйвера WinRing0 существует единственный аналог под названием inpout32, который на данный момент не блокируется Windows Defender и антивирусами, однако он блокируется популярными античитами (наиболее известен этим Vanguard от RIOT, используемый в таких играх, как Valorant).

  1. OpenNews: Большинство антивирусов оказались подвержены атаке через символические ссылки
  2. OpenNews: Уязвимость в Symantec Antivirus, позволяющая получить полный контроль над системой
  3. OpenNews: Проект GNU GMP заблокировал доступ с IP-адресов Microsoft из-за DDoS-атаки
  4. OpenNews: Выпуск OpenRGB 0.8, инструментария для управления RGB-подсветкой периферийных устройств
  5. OpenNews: Ошибка в обновлении к Windows блокировала загрузку Linux при использовании UEFI Secure Boot
Обсуждение (85 +12) | Автор: k1801 | Тип: К сведению |
·24.03.2025 Релиз ядра Linux 6.14 (104 +31)
  После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 6.14. Среди наиболее заметных изменений: драйвер ntsync c примитивами синхронизации Windows NT, настройка балансировки операций чтения в Btrfs RAID1, поддержка reflink в XFS в режиме realtime, возможность некэшируемого буферизированного ввода/вывода, dmem cgroup для ограничения памяти GPU, задействование io_uring в FUSE, делегирование атрибутов в NFS, поддержка атомарной записи в Device mapper, ускорение символических ссылок, управление возможностью выполнения скриптов, поддержка чипов Qualcomm Snapdragon 8 Elite, драйвер для NPU AMD.

В новую версию принято 12115 исправлений от 1984 разработчиков, размер патча - 39 МБ (изменения затронули 10170 файлов, добавлено 531586 строк кода, удалено 235999 строк). В прошлом выпуске было 14172 исправлений от 2086 разработчиков, размер патча - 46 МБ. Около 41% всех представленных в 6.14 изменений связаны с драйверами устройств, примерно 13% изменений имеют отношение к обновлению кода, специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 7% - с файловыми системами и 4% c внутренними подсистемами ядра.

Основные новшества в ядре 6.14:

  • Дисковая подсистема, ввод/вывод и файловые системы
    • В файловой системе Btrfs появилась поддержка новых методов балансировки операций чтения между накопителями, входящими в массив RAID1. Помимо ранее действующего распределения нагрузки на основе идентификаторов процессов (pid), в новой версии предложены три новых режима балансировки: "rotation" (равномерное распределение нагрузки по всем накопителям, режим включён по умолчанию); "latency" (распределение с учётом задержек, может быть полезным при сбоях или нестабильной работе накопителей); devid (ручное управление). Для изменения режима балансировки добавлен интерфейс "/sys/fs/btrfs/<UUID>/read_policy". Среди других изменений в Btrfs - реализация ioctl FS_IOC_READ_VERITY_METADATA.
    • Добавлен режим некэшируемого буферизированного ввода/вывода, при котором данные удаляются из страничного кэша сразу после того, как завершены операции по их чтению или записи. Изменение может быть полезным при использовании очень быстрых устройств хранения, кэширование операций с которыми в оперативной памяти избыточно. Для таких устройств новый режим позволяет исключить излишнее расходование памяти страничным кэшем не прибегая к использованию усложнённого API прямого ввода/вывода (Direct I/O).
    • В fsnotify, механизм отслеживания изменений в ФС, добавлено новое событие FS_PRE_ACCESS, генерируемое на стадии перед обращением к содержимому файла. Событие обрабатывается в синхронном режиме, т.е. ядро отправляет событие и ожидает получения ответа. Если ответ получен - операция выполняется, а если произошёл сбой - системный вызов возвращает в пространство пользователя код ошибки. При помощи FS_PRE_ACCESS процессом в пространстве пользователя, например, может быть организовано заполнение файла по мере готовности данных в медленном хранилище.
    • В подсистему FUSE, позволяющую создавать реализации файловых систем в пространстве пользователя, добавлена поддержка обмена данными между ядром и обработчиком в пространстве пользователя с использованием механизма ввода/вывода io_uring. Изменение позволяет повысить производительность FUSE за счёт сокращения переключений контекста между ядром и пространством пользователя.
    • В файловую систему XFS добавлена возможность использования обратного маппинга (rmap, reverse-mapping) в режиме работы с предсказуемыми задержками ("realtime device"). Обратный маппинг позволяет определить для хранения какого файла используется указанный блок на устройстве хранения. При помощи rmap в XFS для realtime-режима реализована поддержка операции reflink, позволяющей создавать копии файлов путём клонирования метаданных файла и создания ссылки на уже имеющиеся данные без их фактического копирования.
    • В VFS реализовано кэширование размера символических ссылок, позволившее на 1.5% ускорить выполнение операции readlink (в тесте с /initrd.img в ext4). Кэширование включено в ФС ext4 и tmpfs.
    • В реализацию NFSv4.2 добавлена поддержка делегирования атрибутов файлов, позволяющая управлять такими атрибутами файлов, как время изменения (mtime), на стороне NFS-клиента, без необходимости сброса изменений на сервер. В NFS также улучшена поддержка протокола "LOCALIO", позволяющего определить находятся ли клиент и сервер NFS на одном и том же хосте, для задействования соответствующих оптимизаций, таких как использование клиентом прямого ввода/вывода (Direct I/O).
    • Повышена производительность операций чтения в файловых системах NETFS, CIFS и AFS (Andrew File System).
    • В Squashfs включён режим прямой загрузки блоков в страничный кэш (SQUASHFS_FILE_DIRECT), позволяющий обойтись без отдельного кэша read_page. Изменение позволило сократить размер памяти, потребляемой при работе Squashfs.
    • В системном вызове statx() реализован флаг STATX_DIO_READ_ALIGN, для определения требуемого выравнивания для операций чтения из файла.
    • В файловой системе Bcachefs обновлён и стабилизирован формат дисковых структур. Любые дальнейшие изменения формата будут отнесены к категории необязательных и будут реализовываться в форме опциональных дополнений. Значительно повышена скорость проверки целостности ФС. Кроме того, в Bcachefs улучшена работа в режиме только для чтения; устранены проблемы, приводящие к обращению к памяти после её освобождения (use after free); решены проблемы c reflink-указателями в fsck; исправлена обработка перезапуска транзакции.
    • Возвращён модуль md-linear, предназначенный для объединения блочных устройств. Данный модуль ранее был объявлен устаревшим и удалён из ядра 6.8, но как оказалось он был востребован и поэтому теперь восстановлен.
    • Файловые системы F2FS и SQUASHFS переведены на использование фолиантов страниц памяти (page folios).
    • Файловые системы OCFS2 и DLMFS переведены на использование нового API монтирования разделов.
    • В драйвере null_blk реализован атрибут "rotational", выставляемый через configfs и позволяющий симулировать работу с устройством на базе вращающихся дисков для упрощения тестирования функций ядра.
    • В системе Device mapper и в модулях dm-mirror, dm-io, dm-table, dm-linear, dm-stripe и dm-raid1 реализована поддержка атомарной записи.
  • Память и системные сервисы
    • Завершена интеграция в ядро драйвера ntsync, реализующего символьное устройство /dev/ntsync и набор примитивов для синхронизации, применяемых в ядре Windows NT. Реализация подобных примитивов на уровне ядра позволяет существенно поднять производительность Windows-игр, запускаемых при помощи Wine. Прирост производительности достигается благодаря избавлению от накладных расходов, связанных с применением RPC в пространстве пользователя. Создание отдельного драйвера для ядра Linux объясняется проблематичностью корректной реализации API синхронизации NT поверх существующих примитивов в ядре.
    • Добавлен новый контроллер cgroup DMEM для раздельного учёта областей памяти устройств, таких как GPU. DMEM позволяет создавать отдельные cgroup для различных задач, работающих с GPU, чтобы они могли выполняться не влияя друг на друга. Новая возможность решает проблему с принудительным завершением операций с GPU при исчерпании доступной памяти, благодаря учёту отражённой памяти GPU и используемой драйверами памяти CPU в отдельных cgroup.
    • Внесены оптимизации по масштабированию операции сброса (flush) кэша TLB (Translation Lookaside Buffer), применяемого для ускорения преобразования виртуальных адресов в физические. Добавленные оптимизации сводятся к отложенному обновлению некоторых структур данных во время переключения контекста, что позволяет повысить производительность при прохождении некоторых тестов.
    • Повышена производительность механизма MGLRU (Multi-Generational LRU), применяемый для определения какие страницы памяти используются, а какие можно вытеснить в раздел подкачки.
    • Продолжен перенос изменений из ветки Rust-for-Linux, связанных с использованием языка Rust в качестве второго языка для разработки драйверов и модулей ядра (поддержка Rust не активна по умолчанию, и не приводит ко включению Rust в число обязательных сборочных зависимостей к ядру). Предоставлена возможность использования в коде ядра макроса "derive(CoercePointee)", позволяющего использовать умные указатели с trait-объектами. В состав ядра включены Rust-обвязки для PCI, платформ, Open Firmware, символьных устройств и некоторых функций ввода/вывода. Грег Кроа-Хартман (Greg Kroah-Hartman), отвечающий за поддержку стабильной ветки ядра Linux, охарактеризовал текущее состояние, как "почти готовность к написанию реального драйвера на Rust".
    • В сборочных сценариях предложен новый код для генерации версий отладочных символов для загружаемых модулей, который теперь использует информацию из отладочных записей в формате DWARF, а не разбирает исходный код напрямую. Изменение позволяет применять версионирование отладочных символов для модулей, написанных на языке Rust. Старая реализация тоже оставлена в ядре, а выбор генератора производится на уровне сборочных опций.
    • Для архитектуры PowerPC реализована поддержка режима ленивого вытеснения задач (PREEMPT_LAZY, lazy preemption), который соответствует режиму полного вытеснения ("full preemption") для realtime-задач (RR/FIFO/DEADLINE), но задерживает вытеснение обычных задач (SCHED_NORMAL) до границы тика.
    • В подсистему профилирования производительности "perf" добавлена поддержка счётчиков энергопотребления процессоров AMD. Добавлена возможность работы на системах, насчитывающих до 2048 ядер CPU.
    • Предоставлена возможность использования sysctl-параметра pid_max с пространствами имён идентификаторов процессов (ID namespace). Параметр pid_max предназначен для ограничения максимального значения идентификаторов процессов (PID) и теперь может использоваться для ограничения максимально возможного числа процессов, запущенных в указанном пространстве имён. Обработка параметра производится иерархически, т.е. ограничения во внешних пространствах имён распространяются на вложенные пространства имён.
    • При использовании для запуска процесса системного вызова execveat в файловой системе /proc теперь будет отображаться имя запущенного файла, а не номер файлового дескриптора.
    • В состав исходного кода ядра (в каталог samples/vfs) добавлена утилита mountinfo, демонстрирующая использование системных вызовов statmount() и listmount().
    • В подсистеме BPF предложены новые функции bpf_local_irq_save() и bpf_local_irq_restore() для временного отключения прерываний на локальном CPU. Функции могут применяться для реализации структур, обработка которых не приостанавливается прерываниями.
    • В системном вызове madvise() при использовании флагов MADV_DONTNEED и MADV_FREE обеспечено освобождение таблиц страниц памяти, связанных с освобождаемым диапазоном адресов, так как в некоторых ситуациях пустые страницы памяти могут занимать достаточно много памяти.
    • Для архитектуры OpenRISC реализована поддержка механизма перезапускаемых последовательностей (rseq, restartable sequences), предназначенного для быстрого атомарного выполнения операций, которые в случае прерывания другим потоком очищаются и предпринимается повторная попытка выполнения.
    • Проведена реорганизация кода с реализацией алгоритмов CRC32 и CRC-T10DIF, который больше не пересекается с подсистемой crypto и вызывается напрямую из библиотечного интерфейса. Изменение позволило упростить код и повысить его эффективность.
    • В систему асинхронного ввода/вывода io_uring добавлен интерфейс для передачи дополнительных метаданных о целостности при выполнении операций чтения и записи.
  • Виртуализация и безопасность
    • В системный вызов execveat добавлен флаг AT_EXECVE_CHECK, позволяющий выполнить проверку допустимости исполнения файла без его фактического запуска, но c учётом политик безопасности, прав доступа и активных LSM-модулей. Для использования в сочетании с AT_EXECVE_CHECK предложены securebit-флаги SECBIT_EXEC_RESTRICT_FILE и SECBIT_EXEC_DENY_INTERACTIVE, которые можно использовать для ограничения исполнения файлов со скриптами на интерпретируемых языках программирования. Флаг SECBIT_EXEC_RESTRICT_FILE предписывает компоновщикам и интерпретаторам использовать опцию AT_EXECVE_CHECK для проверки допустимости исполнения, а флаг SECBIT_EXEC_DENY_INTERACTIVE запрещает обрабатывать интерактивные команды. Основная идея изменения в возможности применения политик безопасности не только к традиционным исполняемым файлам, но и к текстовым файлам со скриптами, которые можно загрузить через запуск интерпретатора (т.е. запрет на исполнение может быть реализован не только при запуске "./script.sh" но и при выполнении в форме "sh script.sh").
    • На системах x86 реализована поддержка защищённых счётчиков времени для гостевых систем, не позволяющих изменять системные часы гостевой системы из хост окружения. Возможность реализована на базе механизма AMD SEV (Secure Encrypted Virtualization), применяемого в системах виртуализации для защиты виртуальных машин от вмешательства со стороны гипервизора или администратора хост-системы.
    • В систему мандатного контроля доступа SELinux добавлена поддержка xperm-правил, позволяющих привязывать политики SELinux к определённым вызовам ioctl() или сообщениям netlink.
    • Для заверения модулей ядра цифровой подписью вместо SHA1 по умолчанию задействован алгоритм SHA512.
    • В драйверах для гостевых систем VirtualBox включена поддержка архитектуры ARM64.
    • В гипервизоре KVM продолжена работа над задействованием механизма Intel TDX (Trusted Domain Extensions) для шифрования памяти гостевых систем.
    • В virtio_blk добавлена поддержка режима восстановления ошибок.
  • Сетевая подсистема
    • В реализации протокола RxRPC появилась возможность использования больших кадров UDP для повышения пропускной способности.
    • Для TCP добавлена поддержка алгоритма RACK-TLP для определения потери пакетов.
    • Добавлен новый параметр sysctl tcp_tw_reuse_delay, действующий в привязке к пространству имён (network namespace) и позволяющий определить задержку, вносимую перед тем как система сможет повторно использовать номер сетевого порта после закрытия TCP-сокета.
    • Добавлена возможность выбора провайдера точного времени (PTP) для формирования временных меток на уровнях PHY и MAC.
    • Для IPsec реализована поддержка механизма агрегирования и фрагментирования инкапсулированных IP-пакетов - IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
    • В систему сетевых сокетов добавлена поддержка передачи информации о приоритете (SO_PRIORITY) в форме управляющих сообщений (cmsg - control messages). Для сетевых сокетов добавлена опция SO_RCVPRIORITY, включающая в функции recvmsg() передачу информацию о приоритете сокета.
  • Оборудование
    • Добавлен драйвер amdxdna для интегрированных в CPU AMD ускорителей NPU (Neural Processing Unit) на базе архитектуры XDNA, предназначенных для ускорения операций, связанных с машинным обучением. NPU на базе архитектуры XDNA поставляется в сериях 7040 и 8040 процессоров AMD Ryzen, ускорителях AMD Alveo V70 и SoC AMD Versal.
    • В драйвер i915 добавлены идентификаторы новых GPU, реализован обработчик сбоев инициализации HDMI, повышена надёжность сброса движков GPU на Haswell и более старых системах.
    • Продолжена работа над drm-драйвером (Direct Rendering Manager) Xe для GPU на базе архитектуры Intel Xe, которая используется в видеокартах Intel семейства Arc и интегрированной графике, начиная с процессоров Tiger Lake.
    • В драйвере Nouveau добавлена возможность передачи буферов с логами GSP-RM через debugfs.
    • В драйвере AMDGPU реализована поддержка механизма DRM panic, отображающего подобие "синего экрана смерти" при сбоях. Продолжена подготовка к поддержке будущей серии графических карт Radeon RX 9000 на базе архитектуры RDNA4. Обновлена поддержка DCN 3.5, GG 9.5, IH 4.4, PSP 13.x, SMU 13.x, VCN 5.x, JPEG 5.x, GC 12.x, DC FAMS, RAS и ISP.
    • В DRM-драйвер msm (GPU Qualcomm Adreno) добавлена поддержка платформы Qualcomm SM6150 (QCS615).
    • В DRM-драйвер panfrost добавлена поддержка SoC MediaTek MT8188 c GPU Mali-G57.
    • В DRM-драйвер vc4 добавлена поддержка SoC Broadcom BCM2712 (Raspberry Pi 5).
    • В vfio-драйвер nvgrace-gpu добавлена поддержка чипов NVIDIA Grace Blackwell 200.
    • В состав включён драйвер для контроллеров Intel THC (Touch Host Controller), применяемый для взаимодействия с сенсорными экранами и тачпадами на некоторых ноутбуках. Добавлена поддержка устройств Wacom с интерфейсом PCI. Добавлена поддержка игровых контроллеров QH Electronics.
    • Добавлена поддержка ARM-плат, SoC и устройств: Qualcomm Snapdragon 8 Elite (SM8750), Qualcomm Snapdragon AR2 (SAR2130P), Qualcomm IQ6/IQ8, Snapdragon 425 (MSM8917), Samsung Exynos 9810, Blaize BLZP1600, Microchip SAMA7D65, Renesas R-Car V4H ES3.0, Renesas RZ/G3E. Добавлена поддержка SoC SpacemiT K1 на базе архитектуры RISC-V.
    • В звуковой подсистеме ALSA для MIDI 2.0 расширены API rawmidi и sequencer. В API для выноса операций сжатия на сторону звуковой карты добавлена поддержка ASRC (Asynchronous Sample Rate Conversion).
    • Добавлена поддержка звуковых систем устройств Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 и 18i20. Добавлена поддержка беспроводных наушников SteelSeries Arctis 9.

  1. OpenNews: Релиз ядра Linux 6.13
  2. OpenNews: Релиз ядра Linux 6.12 с поддержкой Realtime-режима
  3. OpenNews: Релиз ядра Linux 6.11
  4. OpenNews: Релиз ядра Linux 6.10
  5. OpenNews: Релиз ядра Linux 6.9
Обсуждение (104 +31) | Тип: Программы | Интересно
·23.03.2025 Проект Landrun развивает непривилегированную систему изоляции приложений (112 +21)
  Проект Landrun начал развитие новой системы для изолированного выполнения отдельных приложений. Для изоляции задействован LSM-модуль ядра Linux Landlock, позволяющий обойтись без выполнения привилегированных операций во время создания sandbox-окружения. По своим задачам Landrun близок к утилите Firejail, но отличается более простой реализацией, легковесностью и возможностью работы под обычным непривилегированным пользователем без поставки с флагом suid. Код проекта написан на языке Go и распространяется под лицензией GPLv2.

Механизм Landlock позволяет непривилегированным программам ограничить использование объектов ядра Linux, таких как иерархии файлов, сетевые сокеты и ioctl. В отличие от пространств имён и фильтрации системных вызовов изолированное окружение формируется ядром Linux в форме дополнительного слоя над существующими системными механизмами управления доступом. Для взаимодействия с подсистемой Landlock в утилите landrun используется библиотека go-landlock от разработчиков LandLock.

Landrun позволяет снизить риск компрометации основной системы при запуске не заслуживающих доверия или потенциально уязвимых программ. Из возможностей отмечается поддержка выборочного ограничения доступа на уровне отдельных каталогов, привязка полномочий к файловыми путям (разрешение или запрет чтения, записи и исполнения) и контроль над инициированием и приёмом TCP-соединений.

Например, при помощи Landrun процессу можно запретить запуск исполняемых файлов, разрешить запись только в отдельный подкаталог c данными, запретить создание слушающих сокетов для приёма сетевых соединений и разрешить отправку сетевых запросов только на указанные TCP-порты. В простейшем случае для запрета записи, запуска и сетевых возможностей программу можно выполнить командой "landrun --ro /", а для изоляции nginx можно использовать:


   landrun --rox /usr/bin --ro /lib,/lib64,/var/www --rwx /var/log --bind-tcp 80,443 /usr/bin/nginx

В планах на будущее упоминается расширенное управление доступом к файловой системе, поддержка UDP и управление ресурсами процессов. Для ограничения доступа на уровне файловой системы требуется как минимум ядро Linux 5.13, а для сетевых ограничений - 6.8.

Дополнительно можно отметить, что в кодовую базу Firejail уже приняты изменения, позволяющие использовать подсистему ядра Landlock для изоляции без suid-бита и повышения привилегий, но релиз с данной поддержкой ещё не опубликован.

  1. OpenNews: Ошибка в LSM-модуле Landlock позволяла заново получить сброшенные привилегии
  2. OpenNews: Выпуск системы изоляции приложений Firejail 0.9.72
  3. OpenNews: Представлен TinyKVM для виртуализации на уровне отдельных процессов
  4. OpenNews: Выпуск Bubblewrap 0.9, прослойки для создания изолированных окружений
  5. OpenNews: Microsoft открыл Hyperlight, гипервизор для изоляции отдельных функций в приложениях
Обсуждение (112 +21) | Тип: Программы |
·23.03.2025 В NixOS предложен метод защиты от подстановки бэкдоров, таких как в XZ (156 +18)
  Для включения в репозиторий пакетов nixpkgs, применяемый в дистрибутиве NixOS, предложен режим повторяемых сборок, позволяющий выявлять случаи внедрения в код бэкдоров, напоминающие инцидент с проектом XZ. Представленный метод защиты позволяет обнаружить модификации в архивах с исходным кодом релиза, отсутствующие в репозиториях с кодом.

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

Напомним, что в случае с проектом XZ репозиторий с кодом не содержал подозрительных изменений. Образующие бэкдор вредоносные компоненты поставлялись внутри файлов, используемых в тестовом наборе для проверки корректности работы распаковщика XZ. Бэкдор активировался на уровне системы сборки, а сам исходный код XZ совпадал с кодом из репозитория. Активирующие бэкдор m4-макросы для инструментария Automake были включены только в готовый архив с кодом и отсутствовали в репозитории.

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

Для упрощения проверки соответствия файлов-архивов и срезов репозитория, соответствующих релизам, некоторые открытые проекты, такие как PostgreSQL, ввели в обиход систему повторяемой генерации архивов. В данном случае предоставляется инструментарий, позволяющий самостоятельно собрать из кода свой архив, полностью соответствующий готовому архиву, доступному для загрузки. Если независимо созданный архив и архив, предоставляемый основным проектом, будут отличаться - имеет место компрометация репозитория или эталонного архива.

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

Как выход предложено собирать бинарные файлы релиза, как из репозитория (например, можно использовать автоматически генерируемый в GitHub архив для релизного тега), так и из архива, подготовленного сопровождающим, сравнивая затем результат. В качестве эксперимента включение подобной проверки пока предложено только для пакета "xz". Если эксперимент окажется удачным проверки планируют использовать и в других пакетах в nixpkgs.

  1. OpenNews: В NixOS обеспечена поддержка повторяемых сборок для iso-образа
  2. OpenNews: Проект XZ опубликовал результат аудита коммитов и первое обновление после выявления бэкдора
  3. OpenNews: В библиотеке xz/liblzma выявлен бэкдор, организующий вход через sshd
  4. OpenNews: Уязвимости в PCP и Nix, позволяющие поднять привилегии в системе
  5. OpenNews: Выпуск дистрибутива NixOS 24.11, использующего пакетный менеджер Nix
Обсуждение (156 +18) | Тип: К сведению |
·22.03.2025 Уязвимости в Pagure и OBS, допускавшие компрометацию пакетов в репозиториях Fedora и openSUSE (40 +10 )
  Исследователи безопасности из компании Fenrisk раскрыли информацию об уязвимостях в инструментариях Pagure и OBS (Open Build Service), позволявших скомпрометировать инфраструктуры формирования пакетов дистрибутивов Fedora и openSUSE. Исследователи продемонстрировали возможность совершения атаки для выполнения произвольного кода на серверах с Pagure и OBS, что можно было использовать для подстановки изменений в пакеты в репозиториях Fedora и openSUSE.

В платформе Pagure, используемой в Fedora для совместной работы c кодом и метаданными пакетов, выявлены 4 уязвимости. Для эксплуатации выявленных проблем требуется наличие учётной записи в сервисе Pagure, которую может получить любой желающий (в настоящее время в Pagure.io зарегистрировано 24899 пользователей). Три проблемы позволяют прочитать файлы в системе, а одна проблемы выполнить свой код на сервере. Проблемы были выявлены 1 января 2024 года, сообщены через bugzilla.redhat.com 25 апреля 2024 года и устранены в Pagure через 3 часа.

  • Уязвимости CVE-2024-4981 и CVE-2024-47515 вызваны некорректной обработкой символических ссылок в функциях обновления файла и генерации архивов. Уязвимости позволяют прочитать содержимое локальных файлов на сервере, например, можно узнать содержимое файла с параметрами сеанса администратора Pagure и получить доступ с его правами. Эксплуатация уязвимости в функции _update_file_in_git() сводится к созданию репозитория в Pagure; добавлению в него коммита с новым файлом, который создан как символическая ссылка на желаемый системный файл; открытию данного файла для редактирования в web-интерфейсе.
  • Уязвимость (CVE-2024-4982) в функции view_issue_raw_file() позволяет выйти за пределы базового каталога через указание символов "/.." в параметрах запрошенного Issue. Проблема позволяет прочитать файлы в системе, насколько позволяют права доступа процесса под, которым выполняется web-интерфейс. Например, для просмотра файла /etc/passwd можно открыть страницу "http://pagure.local:5000/your-repository/issue/raw/../../../../../../../etc/passwd".
  • Уязвимость (CVE-2024-47516) в функции PagureRepo.log(), даёт возможность добиться подстановки своих команд и выполнения кода на сервере. Проблема вызвана тем, что при просмотре истории изменения файла через web-интерфейс вызывается команда "git" с передачей идентификатора ветки в командной строке (например, "/usr/bin/git --pretty=oneline --abbrev-commit <HERE> -- README.md"). Корректность идентификатора не проверяется, поэтому можно вместо него передать любую опцию командной строки, например, "--output=/tmp/foo.bar" для перенаправления вывода в файл. Атакующий может перезаписать файл в системе через отправку запроса следующего вида:
    
       http://pagure.local:5000/test/history/README.md?identifier=--output=/tmp/foo.bar
    

    Pagure выполняется под пользователем git, поэтому перезаписать получится только файлы данного пользователя. Для организации выполнения своего кода на сервере можно воспользоваться сервисом для доступа к репозиторию по SSH, при обращении к которому выполняется команда "bash -c /usr/libexec/pagure/aclchecker.py". Атакующий может использовать уязвимость для перезаписи файла "/srv/git/.bashrc" и данный файл будет запущен командным интерпретатором bash при обращении к репозиторию по ssh.

    Атака сводится к регистрации в системе Pagure, созданию репозитория, добавлению в репозиторий файла README.md с примечанием к коммиту вида "|| /bin/bash" и отправке запроса "http://pagure.local:5000/test/history/README.md?identifier=--output=/srv/git/.bashrc". В ходе данных шагов в файл "/srv/git/.bashrc" будет записана строка вида "34а5с43 || /bin/bash". Для запуска созданного файла "/srv/git/.bashrc" достаточно подключиться к репозиторию по SSH под своей учётной записью. Выполнения кода с правами пользователя git на сервере Pagure позволяет контролировать всё содержимое репозиториев с пакетами.






В платформе OBS (Open Build Service), применяемой в openSUSE и некоторых других дистрибутивах для сборки пакетов, выявлена одна уязвимость (CVE-2024-22033), позволяющая выполнить свой код на сервере. Уязвимость выявлена 27 июня 2024 года, сообщена проекту openSUSE 29 июня и устранена 10 июля.

Уязвимость присутствует в сервисе "obs-service-download_url", в котором отсутствовала должная проверка URL, применяемого при запуске утилиты wget из скрипта, осуществляющего загрузку исходного кода в OBS. Атакующий может указать в сервисе OBS конфигурацию формируемого пакета, в которой вместо URL для загрузки кода будет указана опция командной строки для wget, например:


   <services>
   <service name="download_url">
   <param name="url">--output-document=/tmp/test</param>
   <param name="download-manifest">tempfile</param>
   </service>
   </services>

Для обхода возвращения ошибки при попытке запустить wget без URL в примере указана опция "download-manifest", позволяющая указать список URL в отдельном файле. Вышеуказанный пример приведёт к запуску команды:


   /usr/bin/wget -i /srv/obs/service/XXXXX/src/tempfile -4 --output-document=/tmp/test

которая позволяет записать в файл /tmp/test содержимое, загруженное по ссылке, указанной в файле /srv/obs/service/XXXXX/src/tempfile из кода, загруженного атакующим в OBS через интерфейс build.opensuse.org, допускающий свободную регистрацию. Кроме перезаписи файла на сервере, атакующий также может отправить себе любой файл, указав вместо "--output-document" опцию "--post-file", например, "--post-file=/etc/passwd". Таким образом атакующий может читать и записывать файлы на сервере, насколько позволяют права доступа, под которым выполняется сервис OBS.

Для того, чтобы превратить возможность записи в файл в выполнение кода на сервере исследователи предложили метод, состоящий из двух этапов. Два этапа необходимы, так атакующий может создать файл ".wgetrc" с настройками к wget, но этого недостаточно для запуска команд. Но при этом, через ".wgetrc" можно создать условия для выполнения в системе любой программы, но без передачи ей аргументов. Для запуска произвольного кода предложено запускать программу "prove", которая обрабатывает файл конфигурации ".proverc", допускающий указание опции "--exec" для выполнения любого кода.

На первом этапе через вышеотмеченные манипуляции с "download-manifest" в домашнем каталоге пользователя "obsservicerun" создаётся файл ".proverc", включающая команды, которые будут выполнены при запуске процесса "prove". На втором этапе создаётся файл .wgetrc" с параметром "use-askpass=/usr/bin/prove", приводящим к вызову "prove". После появления данных файлов достаточно создать условия загрузки любых данных при помощи wget и это приведёт к запуску кода атакующего на сервере с правами пользователя "obsservicerun". Прав пользователя "obsservicerun" достаточно для извлечения из репозиториев ключей, используемых пользователями OBS для заверения пакетов.

Дополнение: Команда SUSE Product Security считает, что опасность уязвимости в OBS переоценена и заявление исследователей о том, что проблема позволяет скомпрометировать все пакеты в дистрибутиве openSUSE не соответствует действительности. Отмечается, что сервисы в инфраструктуре build.opensuse.org запускаются с использованием изолированных контейнеров, заново создаваемых и не содержащих критичной информации. Выявленная уязвимость оценена как опасная, но недостаточная для компрометации сборочной инфраструктуры openSUSE и формируемых пакетов. Кроме того, указано что действия в интерфейсе OBS, описанные в примере атаки, могли быть совершены только в варианте OBS, локально установленном на рабочей станции разработчика.

  1. OpenNews: Через уязвимость в WordPress атакующие подменили страницы сайта openSUSE
  2. OpenNews: Сервисы openSUSE отключены из-за компрометации системы аутентификации (дополнено)
  3. OpenNews: Серверы инфраструктуры Fedora и Red Hat были взломаны
  4. OpenNews: Проект XZ опубликовал результат аудита коммитов и первое обновление после выявления бэкдора
  5. OpenNews: Форум проекта openSUSE подвергся взлому (дополнено)
Обсуждение (40 +10 ) | Тип: Проблемы безопасности | Интересно
·22.03.2025 Выпуск операционной системы ReactOS 0.4.15 (460 +47)
  После более трёх лет разработки представлен релиз операционной системы ReactOS 0.4.15, нацеленной на обеспечение совместимости с программами и драйверами Microsoft Windows, а также предлагающий оформление в стиле Windows. Для загрузки подготовлены установочный ISO-образ (117 МБ) и Live-сборка (в zip-архиве 85 МБ). Код проекта распространяется под лицензиями GPLv2 и LGPLv2.

После прошлого выпуска внесено более 8600 изменений и закрыто 1319 отчётов о проблемах. Ключевые изменения:

  • Визуальный стиль по умолчанию изменён на стиль "Mizu".
  • Добавлена поддержка размещения крупных пиктограмм в панели задач.
  • Добавлена поддержка архивов в формате ZIP, с которыми можно работать в файловом менеджере, как c виртуальной файловой системой, а также распаковывать при помощи отдельного мастера.
  • На рабочий стол добавлена пиктограмма "Internet Browser" для вызова web-браузера.
  • Решены проблемы с некорректным отображением пиктограмм в приложениях, таких как Microsoft Office 2000, Microsoft Visual Basic 6 и Hoyle Cards. Повышена стабильность работы библиотеки Shell32.
  • В ядре значительно переделан PnP-менеджер (Plug and Play), что расширило возможности ReactOS по запуску сторонних драйверов, созданных для Windows.
  • Добавлена возможность загрузки ReactOS с USB-устройств на чипсетах с контроллерами EHCI, OHCI и UHCI. Решены проблемы с зацикливанием в USB-драйвере при неготовности USB-устройства, мешавшие загрузке на некоторых системах.
  • Улучшен звуковой стек. Из Windows Driver Kit (WDK) перенесён драйвер AC’97, позволяющий использовать звук при установке в VirtualBox и выборе в настройках звукового контроллера ICH AC’97 или при загрузке на системах со старыми материнскими платами. Добавлена поддержка более высокой частоты дискретизации, многоканального вывода, новых форматов звуковых файлов и зацикливания воспроизведения wav-файлов.
  • В системе управления памятью переработан механизм "Section Objects", позволяющий совместно использовать области памяти. Изменение решило проблему с невозможностью запуска исполняемых файлов с внешних разделов, таких как сетевые хранилища и совместные диски виртуальных машин.
  • Из Windows Driver Kit (WDK) перенесён драйвер FAT, открытый компанией Microsoft. Новый драйвер FAT решил проблемы с низкой стабильностью и производительностью старого драйвера, а также позволил реализовать корректное извлечение внешних устройств.
  • Реализованы механизмы для восстановления, сброса состояния и кэширования реестра, позволившие повысить живучесть системы в случае аварийного завершения или выключения питания. Механизм восстановления позволяет автоматически откорректировать повреждённые области реестра, механизм сброса состояния (flush) обеспечивает периодическое сохранение изменений на диск, а кэширование заметно повышает скорость работы с реестром.
  • В ядре улучшена подсистема Se (Security Subsystem), в которой реализован механизм для управления доступом к системным объектам.
  • Расширены возможности базовых приложений и системных утилит. Например, в графическом редакторе Paint появился инструмент для работы с текстом, а в текстовом редакторе Notepad реализован диалог вывода на печать. Улучшен IME (Input Method Editor) для управления методами ввода.
  • Добавлена начальная поддержка загрузки на многопроцессорных системах со включённым режимом SMP.
  • Значительно улучшена работа в 64-разрядном режиме.
  • Добавлена новая утилита командной строки tasklist для отображения списка активных задач.
  • Обновлён код сторонних компонентов: ACPICA 20210730, mpg123 1.26.2, mbedtls 2.16.11, libxml2 2.9.12.
  • Добавлены Windows Driver Framework и Kernel Mode Driver Framework от Microsoft.
  • Реализации d3dx9 и wininet синхронизированы с Wine 6.0, msi с Wine Staging 7.3, а dbghelp с Wine Staging 5.16. В regapi перенесены DLL из Wine Staging 5.7, а в dbgeng из Wine Staging 4.18. В gdi32 из Wine перенесён код для поддержки формата Metafile.

В master-ветке дополнительно развивается поддержка UEFI, SMP и управления энергопотреблением, добавлены графический инсталлятор и драйвер NTFS.

  1. OpenNews: Выпуск операционной системы ReactOS 0.4.14
  2. OpenNews: Новая версия сборочного окружения RosBE (ReactOS Build Environment)
  3. OpenNews: ReactOS удалось запустить на системе с процессором Эльбрус-8С1
  4. OpenNews: Для ReactOS реализована начальная поддержка SMP
  5. OpenNews: В ReactOS обеспечена возможность загрузки с Btrfs
Обсуждение (460 +47) | Тип: Программы |
·21.03.2025 Google развивает систему перезагрузки ядра без остановки работы устройств (75 +38)
  Инженеры из компании Google опубликовали для обсуждения разработчиками ядра Linux набор патчей с реализацией подсистемы Live Update Orchestrator (LUO), предназначенной для обновления ядра в Live-режиме. В отличие от таких механизмов, как livepatch, Ksplice, kpatch и kGraft, новая система не ограничивается возможностью применения отдельных исправлений к работающему ядру Linux, а позволяет полноценно перезагрузить и обновить ядро без остановки работы отдельных устройств. Проект базируется на наборе патчей KHO (Kexec HandOver) к механизму kexec, применяемому для загрузки нового ядра из уже запущенного ядра Linux без физической перезагрузки.

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

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

Для координации сохранения состояния и переключения на новое ядро LUO предоставляет API, позволяющий другим подсистемам ядра подключать обработчики для отслеживания и участия в процессе Live-перезагрузки. Среди подсистем, которые могут интегрироваться с LUO, отмечены гипервизор KVM, iommu, система прерываний и драйверы. Для передачи состояния памяти от старого ядра к новому задействован KHO (Kexec HandOver). Управление производится через файлы sysfs "/sys/kernel/liveupdate/{state, prepare, finish}".

  1. OpenNews: Проект TuxTape для развёртывания инфраструктуры live-патчей к ядру Linux
  2. OpenNews: Для ядра Linux предложен livepatch, механизм обновления без перезагрузки
  3. OpenNews: Oracle поглотил компанию Ksplice, развивающую технологию обновления Linux-ядра без перезагрузки
  4. OpenNews: Компания SUSE открыла код kGraft, системы для обновления ядра Linux без перезагрузки
  5. OpenNews: Компания Red Hat открыла код kpatch для организации обновления на лету ядра Linux
Обсуждение (75 +38) | Тип: К сведению |
·21.03.2025 Перегрузка инфраструктуры KDE, GNOME, Fedora, Codeberg и SourceHut из-за ИИ-индексаторов (203 +32)
  Различные открытые проекты столкнулись с волной сбоев и замедления работы элементов инфраструктуры из-за повышения активности индексаторов содержимого сайтов (скраперов), собирающих информацию для обучения больших языковых моделей или для обеспечения ИИ-поиска в Web (например, компания Anthropic вчера представила вариант модели Claude 3.7 с возможностью поиска в Web).

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

После начала блокировки подобного трафика некоторые индексаторы начали притворяться типовыми браузерами для обхода фильтрации по идентификатору User Agent и использовать распределённые сети, охватывающие большое число хостов, для преодоления ограничений интенсивности обращений с одного IP. Наиболее сильно из-за активности ИИ-индексаторов страдают инфраструктуры открытых проектов, использующих собственные хостинги Git-репозиториев, форумы и Wiki, которые изначально не были рассчитаны на обработку высокой нагрузки.

Проблемы возникли у платформы совместной разработки SourceHut, развиваемой Дрю ДеВолтом (Drew DeVault), автором пользовательского окружения Sway. Дрю сетует на то, что в очередной раз вместо того, чтобы заниматься развитием платформы ему приходится тратить большую часть своего времени на разгребание неожиданно возникших проблем. Четыре года назад проблемой для SourceHut стало использование CI-инфраструктуры для майнинга криптовалют. Два года назад пришлось разбираться с флудом запросами "git clone" из-за сервиса Go Module Mirror. В прошлом году платформа была выведена из строя на неделю из-за DDoS-атаки. Теперь возникла новая напасть - ИИ-индексаторы.

По словам Дрю, решение нескольких приоритетных задач было отложено на недели или даже месяцы из-за того, что создателей SourceHut постоянно отвлекает блокировка ИИ-ботов. Чтобы избежать сбоев правила блокировки приходится пересматривать по несколько раз в день. Для снижения запросов к ресурсоёмким обработчикам в SourceHut были внедрены ловушки на базе инструментария Nepenthes, генерирующего в ответ на запросы ботов случайный контент с зацикленными на ловушку ссылками. До этого разработчики SourceHut из-за агрессивного поведения ИИ-ботов были вынуждены заблокировать трафик из нескольких облачных платформ, включая Google Cloud Platform и Azure.

При этом введённые меры не лишены ложных срабатываний, от чего уже пострадали многие пользователи, так как внедрённая система блокировки не всегда может отличить реальных пользователей от ботов (например, возникли проблемы со сборкой пакетов для репозиториев Nix). ИИ-боты сканируют всё до чего могут дотянуться, включая ресурсоёмкие операции, такие как "git blame", перебирают каждую страницу в "git log" каждого репозитория, мимикрируя под запросы обычных пользователей, используя случайные индинтификаторы реальных браузеров (User Agent) и отправляя запросы с десятков тысяч IP, не связанных с какой-то одной подсетью.

Другие проекты, обратившие внимание на проблему:

  • Из-за высокой нагрузки на инфраструктуру для противостояния ИИ-индексаторам разработчики GNOME внедрили систему защиты от ботов Anubis, допускающую вход только после вычисления хэша sha256 (proof-of-work). При открытии страниц в GitLab GNOME теперь появляется характерная аниме-заставка, которая у некоторых пользователей приводит к минутной задержке загрузки страниц. За два с половиной часа тестирования только 3% запросов прошили проверку в Anubis, а 97% обращений были совершены ботами. Ранее для предотвращения высокой нагрузки от ИИ-ботов разработчики GNOME ограничили интенсивность обращений с IP-адресов при доступе незарегистрированных пользователей к запросам на слияние и к коммитам.
  • В проекте Fedora из-за запросов ИИ-индексаторов наблюдаются сбои с работой платформы совместной разработки Pagure. В процессе противостояния с ИИ-ботами пришлось заблокировать множество подсетей, включая весь диапазон IP-адресов Бразилии, что привело к блокировке и некоторых пользователей.
  • Сообщается о проблемах с сервисом совместной разработки Codeberg и инфраструктурой платформы Forgejo (code.forgejo.org), которые пытаются отразить поток запросов ИИ-индексаторов. Упоминаются как индексаторы, отправляющие запросы с указанием известных ИИ-платформ в заголовке User Agent, так и ИИ-боты, прикрывающиеся идентификаторами обычных браузеров и отправляющие запросы с десятков тысяч IP-адресов.
  • GitLab-сервер проекта KDE на некоторое время оказался недоступен из-за перегрузки в результате активности ИИ-индексаторов, отравлявших запросы из подсети, принадлежащей компании Alibaba. Запросы поступали с одним заголовком User-Agent, притворяющимся браузером MS Edge. В настоящее время активность бота блокирована на уровне фильтрации по User-Agent.
  • Из-за высокой нагрузки на сайт разработчики Inkscape начали блокировку по спискам Prodigious и планируют установить систему Anubis для защиты от ИИ-индексаторов.
  • Из-за наплыва ИИ-индексаторов отмечаются сбои в работе форума проекта FreeCAD и проблемы с Wiki проекта Arch Linux.
  • Разработчики открытой социальной сети Diaspora сообщили о возрастании нагрузки на форумы Discourse, Wiki и web-сайт проекта. По статистике за ноябрь и декабрь, собранной до нашествия обезличенных ботов, около 70% всего трафика пришлось на запросы от ИИ-индексаторов: 24.6% трафика сгенерировано ботом GPTBot, 17.1% - Amazonbot, 4.3% - ClaudeBot, 2.2% - meta-externalagent (для сравнения на ботов Google и Bing приходится по 0.14% трафика). В пиковые моменты интенсивность работы ботов достигала 10 запросов в секунду. ИИ-боты не обращали внимание на robots.txt, перебирая всё, вплоть до истории редактирования в Wiki. При блокировке IP-адресов, боты возобновляли работу с новых адресов, а при блокировке User-Agent переходили к индексации под идентификаторами типовых браузеров.

Администраторы микроблогинговой платформы Framapiaf подготовили список блокировки, насчитывающий 460 тысяч адресов с которых зафиксирована активность ИИ-ботов. Отдельно развивается проект ai.robots.txt, собравший список идентификаторов (User Agent) ИИ-индексаторов, которые не скрывают имя бота, а также опубликовавший статистику о том, какие из ботов учитывают правила из файла robots.txt. Примеры блокировки по заголовку User-Agent предложены для Apache httpd и nginx.

Дополнительно можно отметить ловушку для ИИ-ботов AI Labyrinth, представленную вчера компанией Cloudflare. Пользователям Cloudflare предоставлена опция, позволяющая вместо блокировки ИИ-ботов, игнорирующих запрет на индексацию, отдавать фиктивные страницы и зацикливать ботов на их обработке. Предполагается, что выдача ИИ-ботам мусорного контента заставит их разработчиков следовать правилам robots.txt и снизить интенсивность запросов. По статистике Cloudflare около 1% всего трафика в сети приходится на ИИ-ботов.

  1. OpenNews: По статистике Cloudflare 6.8% интернет-трафика является потенциально мусорным
  2. OpenNews: Платформа совместной разработки SourceHut была выведена из строя на 7 дней из-за DDoS-атаки
  3. OpenNews: Проблемы из-за подготовленных AI-инструментами отчётов об уязвимостях
  4. OpenNews: Платформа совместной разработки SourceHut запрещает размещение проектов, связанных с криптовалютами
  5. OpenNews: SourceHut отменил блокировку зеркала модулей Go
Обсуждение (203 +32) | Тип: К сведению | Интересно
·20.03.2025 Браузер Chrome переведён на шрифтовой движок Skrifa, написанный на Rust (242 +18)
  Компания Google перевела браузер Chrome на библиотеку Skrifa, написанную на языке Rust и предоставляющую возможности для обработки шрифтов в формате OpenType. Skrifa реализует подмножество возможностей шрифтового движка FreeType, необходимое для 2D-библиотеки Skia, применяемой в Chrome и Chromium. Для избавления библиотеки Skia от привязки к движку FreeType создан новый шрифтовой бэкенд, основанный на Skrifa.

В Chrome 128 написанный на Rust бэкенд был включён в экспериментальном режиме для редко используемых форматов шрифтов, таких как CFF2 и цветные шрифты. Начиная с выпуска Chrome 133 новый бэкенд задействован для всех web-шрифтов в сборках для платформ Linux, Android и ChromeOS. На платформах Windows и macOS новый движок пока используется в качестве запасного и применяется в случае, если система не поддерживает формат шрифта, который пытается отобразить браузер.

Код Skrifa разработан инженерами Google в рамках инструментария Fontations и открыт под лицензиями MIT и Apache 2.0. Для проверки корректности работы Skrifa подготовлено около 700 unit-тестов. Библиотека поддерживает декодирование глифов в форматах glyf, CFF, CFF2, COLRv0, COLRv1, EBDT, CBDT и sbix, вариативные шрифты в форматах glyf, CFF2 и COLRv1, хинтиг шрифтов в форматах glyf, CFF и CFF2.

Помимо библиотеки Skrifa, предоставляющей API для доступа к метаданным шрифтов и загрузки контуров глифов, инструментарий Fontations включает низкоуровневые библиотеки для чтения, разбора, изменения и создания шрифтовых данных в формате OpenType. В свою очередь Fontations является частью проекта Oxidize, созданного для перевода утилит и библиотек для работы с текстом и шрифтами с компонентов на языках Python (fonttools, fontmake, nanoemoji) и C++ (HarfBuzz, FreeType) на новые реализации, написанные на Rust.

Разработка компонентов на Rust началась из-за недостаточной эффективности выявления ошибок при помощи fuzzing-тестирования, так как форматы шрифтов слишком сложны для охвата всех возможных комбинаций. Например, на прошлой неделе во FreeType была выявлена критическая уязвимость, позволяющая выполнить код при обработке специально оформленных шрифтов из переполнения буфера. Помимо движка FreeType проблемы с обеспечением безопасности могут создавать и используемые в нём зависимости, такие как bzip2, libpng и zlib.

Использование Rust позволило значительно снизить вероятность появления проблем при работе с памятью, повысить качество кода, снизить затраты времени на исправление проблем с безопасностью и ускорить внесение улучшений в возможности Chrome, связанные со шрифтами. По статистике Google и Microsoft около 70% опасных уязвимостей вызваны проблемами при работе с памятью, которых можно избежать при использовании языка Rust без unsafe-блоков.

Например, использование Rust, позволило бы избежать ранее выявлявшихся в коде FreeType проблем, связанных с обращением к освобождённым областям памяти, выходом за границу буфера, доступом к массивам без проверки индексов, целочисленными переполнениями, некорректным использованием необнулённых областей памяти и ошибками приведения типов.

  1. OpenNews: Уязвимость во FreeType, позволяющая выполнить код при обработке шрифтов
  2. OpenNews: Google отключил поддержку io_uring в ChromeOS и Android из-за плачевного состояния безопасности
  3. OpenNews: Методы безопасной работы с памятью позволили существенно снизить число уязвимостей в Android
  4. OpenNews: В кодовой базе Chromium разрешено использование языка Rust
  5. OpenNews: 70% проблем с безопасностью в Chromium вызваны ошибками при работе с памятью
Обсуждение (242 +18) | Тип: К сведению |
·20.03.2025 Выпуск miracle-wm 0.5, композитного менеджера на базе Wayland и Mir (48 +7)
  Мэтью Косарек (Matthew Kosarek), разработчик из компании Canonical, опубликовал выпуск композитного менеджера miracle-wm 0.5, использующего протокол Wayland и компоненты для построения композитных менеджеров Mir. Miracle-wm поддерживает мозаичную (tiling) компоновку окон, схожую с аналогичной в проектах i3 и Sway. В качестве панели может применяться Waybar. Код проекта написан на языке C++ и распространяется под лицензией GPLv3. Готовые сборки сформированы в формате snap, а также в пакетах rpm и deb для Fedora и Ubuntu.

Целью miracle-wm является создание композитного сервера, применяющего мозаичное управление окнами, но более функционального и стильного, чем такие продукты, как Swayfx. При этом проект позволяет использовать и классические приёмы работы с плавающими окнами, например, можно размещать отдельные окна поверх мозаичной сетки или закреплять окна к определённому месту на рабочем столе. Поддерживается виртуальные рабочие столы с возможностью выставления для каждого рабочего стола своего режима работы с окнами по умолчанию (мозаичная компоновка или плавающие окна).

Предполагается, что miracle-wm может оказаться полезным пользователям, которые отдают предпочтение мозаичной компоновке, но желают получить визуальные эффекты и более яркое графическое оформление с плавными переходами и цветами. Конфигурация определяется в формате YAML. Для установки miracle-wm можно использовать команду "sudo snap install miracle-wm --classic".

Основные новшества:

  • Добавлена возможность перемещения контейнеров (закреплённых окон) в режиме drag&drop. Для захвата окна используется левая кнопка мыши с удержанием клавиш Meta (Win) и Shift, после чего окно можно свободно перемещать по мозаичной сетке.
  • Добавлена поддержка перемещения плавающих окон при помощи указателя мыши. Для захвата окна используется левая кнопка мыши с удержанием клавиши Meta (Win).
  • Появилась возможность прикрепления к плавающему окну мини-ячеек с другими окнами, которые можно перемещать вместе, не привязываясь к основной мозаичной сетке.
  • Реализованы соответствующие оконному менеджеру i3 и композитному менеджеру Sway критерии, определяющие область действия управляющих IPC-команд.
  • Добавлена анимация закрытия окон.
  • По умолчанию включена возможность плавного пропадания и появления окон.


  1. OpenNews: Выпуск miracle-wm 0.4, композитного менеджера на базе Wayland и Mir
  2. OpenNews: Выпуск композитного сервера Niri 0.1.10, использующего Wayland
  3. OpenNews: AMD развивает собственный композитный сервер ACS, использующий Wayland
  4. OpenNews: Выпуск Hyprland 0.47, композитного сервера на базе Wayland
  5. OpenNews: Выпуск labwc 0.8.3, композитного сервера для Wayland
Обсуждение (48 +7) | Тип: Программы |
·19.03.2025 Выпуск среды рабочего стола GNOME 48 (235 +26)
  После шести месяцев разработки представлен выпуск среды рабочего стола GNOME 48. Для быстрой оценки возможностей GNOME 48 предложены специализированные Live-сборки на основе openSUSE и установочной образ, подготовленный в рамках инициативы GNOME OS. GNOME 48 также уже включён в состав экспериментальных сборок Ubuntu 25.04 и Fedora 42.

В новом выпуске:

  • Добавлена поддержка расширенного динамического диапазона яркости (HDR, High Dynamic Range) и возможность вывода HDR-контента на мониторы, поддерживающие HDR. Для включения поддержки HDR в конфигураторе в секции с настройками экрана появилась опция "High Dynamic Range".
  • В композитный сервер Mutter добавлена поддержка тройной буферизации, позволяющей добиться более плавной отрисовки изменений на экране и анимации. При тройной буферизации используется три экранных буфера - в первый осуществляется отрисовка, из второго производится вывод на экран, а третий используется для продолжения непрерывного процесса отрисовки, если первый буфер был заполнен до завершения вертикальной развёртки. Применение третьего дополнительного буфера позволяет избавиться от рывков, возникающих при двойной буферизации из-за невозможности переключения между буферами отрисовки и вывода до завершения вертикальной развёртки (vblank), ценой увеличения задержки вывода.
  • Новые окна теперь по умолчанию размещаются с выравниванием по центру экрана. Улучшено позиционирование окон в многомониторных конфигурациях.
  • Реализована стековая компоновка списка уведомлений, в которой уведомления сгруппированы по приложениям. Для того чтобы избежать нагромождения группы свёрнуты и для просмотра отдельных уведомлений необходимо раскрыть желаемую группу.
  • Предложен новый музыкальный проигрыватель Decibels, который отличается минималистичным интерфейсом, оптимизированным для воспроизведения отдельных звуковых файлов при попытке их открытия в других приложениях, например, в файловом менеджере или почтовом клиенте. В окне визуализируется форма звуковой волны, имеется ползунок для быстрой смены позиции, переключатель скорости воспроизведения, регулятор громкости и кнопки для быстрой перемотки на 5 и 10 секунд вперёд и назад. Код Decibels написан на языке TypeScript с использованием JavaScript-обвязок над GStreamer, Libadwaita, Gio, GObject и GTK4, и распространяется под лицензией AGPLv3.

  • В просмотрщик изображений встроены инструменты для редактирования, позволяющие кадрировать, поворачивать и зеркально отражать изображения. Изменены элементы интерфейса для изменения масштаба, добавлена кнопка для возвращения к исходному масштабу и меню для быстрого выбора типовых уровней масштабирования. Добавлена экспериментальная поддержка форматов RAW-изображений и метаданных, таких как формат XMP.
  • По умолчанию задействован новый шрифт Adwaita Sans, который пришёл на смену шрифту Cantarell, применявшемуся с 2010 года. Adwaita Sans основан на шрифте Inter, спроектированном для использования в интерфейсах пользователя и оптимизированном для достижения высокой чёткости символов малого и среднего размера (менее 12px) при отображении на экранах компьютеров. В отличие от шрифта Cantarell вокруг проекта Inter сформировалось большое сообщество, продолжающее развитие шрифта, устраняющее недостатки, реализующее новые шрифтовые возможности и тестирующее качество отображения для различных языков и типов экранов.

    Для терминалов и редакторов кода задействован моноширинный шрифт Adwaita Mono, являющийся модифицированным вариантом шрифта Iosevka, приближенным по стилю к шрифту Inter.

  • В конфигуратор добавлена новая секция "Digital Wellbeing" для выработки привычек здорового поведения при работе за компьютером. Программа позволяет проанализировать сколько времени пользователь проводит за компьютером каждый день и оценить динамику изменений за последние дни или недели. При желании можно настроить вывод уведомления или перевод экрана в черно-белый режим при превышении заданного для себя дневного лимита. Также программа может использоваться для напоминания о необходимости сделать перерыв после непрерывной работы, время которой превышает рекомендованные нормы.
  • В настройки управления питанием добавлена опция для продления жизни аккумулятора через ограничение максимального уровня заряда в 80%.
  • Обновлён интерфейс текстового редактора - панель интегрирована в заголовок окна, а все опции сосредоточены в одном меню. Предоставлен быстрый доступ к параметрам автоматического форматирования. В основное окно перемещён индикатор положения курсора.
  • В web-браузере Epiphany расширены возможности диалога для навигации по истории посещений. Сокращено число операций обновления экрана. Добавлена возможность закрытия закреплённых вкладок. Упрощён интерфейс для импорта закладок и паролей из других браузеров. Реализована цикличная прокрутка элементов в выпадающем блоке адресной строки. Улучшен механизм автозаполнения полей с паролями. В контекстное меню на странице открытия новой вкладки добавлен пункт для перезагрузки страницы. Улучшены диалоги для работы с закладками и показа информации о проблемах с конфиденциальностью (заблокированного кода для отслеживания).
  • В JavaScript-движке GJS при выполнении многих типовых операций снижена нагрузка на CPU и сокращено потребление памяти.
  • В системе индексации файлов снижено потребление памяти при обработке содержимого больших каталогов и ускорено извлечение метаданных из мультимедийных файлов.
  • Повышена стабильность и производительность конфигураций с мониторами, напрямую подключёнными к дискретной видеокарте.
  • В файловом менеджере значительно повышена производительность кода загрузки содержимого каталогов и отрисовки изменений при прокрутке. При навигации по каталогам с большим числом миниатюр производительность загрузки содержимого возросла в пять раз, а отрисовки при прокрутке - в 10 раз.
  • В библиотеке GTK ускорены операции создания и изменения размера элементов интерфейса.
  • Добавлена поддержка глобальных сочетаний клавиш - приложения могут определять общесистемные комбинации клавиш, действующие когда окно приложения не в фокусе. Для добавления общесистемных комбинаций клавиш требуется подтверждение операции пользователем.
  • Расширена поддержка специальных функциональных клавиш, таких как Copy, Paste, Cut, Undo и Redo, которые теперь могут использоваться в полях ввода. Для быстрого перехода к поиску реализована поддержка клавиши Find.
  • Улучшен интерфейс для редактирования контактов в адресной книге.
  • В конфигураторе в секции "Region and Language" обновлён диалог настройки форматов и локали. Проведена реструктуризация настроек управления энергопотреблением.
  • В экранном ридере Orca реализована корректная поддержка комбинаций клавиш в окружениях на базе Wayland.
  • Немного оптимизированы цвета в интерфейсе приложений, а кнопки и формы ввода сильнее скруглены.
  • Улучшен диалог редактирования событий в календаре-планировщике. Изменена форма планирования даты и времени. Добавлена поддержка указания часового пояса.
  • В композитный сервер Mutter добавлена возможность сборки без стека отрисовки шрифтов.
  • Добавлена поддержка порталов xdg для задания общесистемных комбинаций клавиш и доступа к USB-устройствам (требуется наличие Flatpak 1.16).
  • Развиваемый проектом дистрибутив GNOME OS переведён на использование компонента systemd-sysupdate для организации атомарного обновления системы. Замена OSTree на systemd-sysupdate позволила задействовать верифицированный процесс загрузки на системах с UEFI Secure Boot. Инструментарий systemd-sysupdate предназначен для автоматического определения, загрузки и установки обновлений с использованием атомарного механизма замены разделов, файлов или каталогов. Systemd-sysupdate позволяет использовать два независимых раздела/файла/каталога, на одном из которых находится текущий работающий ресурс, а на другом устанавливается очередное обновление, после чего разделы/файлы/каталоги меняются местами.

  1. OpenNews: Доступен графический тулкит GTK 4.18
  2. OpenNews: Музыкальный проигрыватель Decibels принят в основной состав GNOME
  3. OpenNews: Выпуск Phosh 0.45.0, GNOME-окружения для смартфонов
  4. OpenNews: Превращение GNOME OS в дистрибутив для обычных пользователей
  5. OpenNews: Выпуск среды рабочего стола GNOME 47
Обсуждение (235 +26) | Тип: Программы |
·19.03.2025 Выпуск Java SE 24 и OpenJDK 24 (91 +7)
  После шести месяцев разработки компания Oracle опубликовала платформу Java SE 24 (Java Platform, Standard Edition 24), в качестве эталонной реализации которой используется открытый проект OpenJDK. За исключением удаления некоторых устаревших возможностей в Java SE 24 сохранена обратная совместимость с прошлыми выпусками платформы Java - большинство ранее написанных Java-проектов без изменений будут работоспособны при запуске под управлением новой версии. Готовые для установки сборки Java SE 24 (JDK, JRE и Server JRE) подготовлены для Linux (x86_64, AArch64), Windows (x86_64) и macOS (x86_64, AArch64). Разработанная в рамках проекта OpenJDK эталонная реализация Java SE 24 полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с коммерческими продуктами.

Java SE 24 отнесён к категории выпусков с обычным сроком поддержки, обновления для которого будут выпускаться до следующего релиза. В качестве ветки с длительным сроком поддержки (LTS) следует использовать Java SE 21 или Java SE 17, обновления для которых будут выпускаться до 2031 и 2029 годов соответственно (общедоступные - до 2028 и 2026 годов). Расширенная поддержка LTS-ветки Java SE 8 продлится до 2030 года, а Java SE 11 - до 2032 года. Следующим LTS-релизом станет осенний выпуск Java SE 25.

Среди предложенных в Java SE 24 новшеств:

  • Предложен экспериментальный генеративный режим работы сборщика мусора Shenandoah, при котором раздельно обрабатываются старые и недавно созданные объекты для повышения эффективности очистки объектов с небольшим временем жизни. Новый режим обеспечивает более предсказуемую пропускную способность, устойчивость к изменению нагрузки и снижение потребления памяти при сборке мусора. Планировщик Shenandoah нацелен на сокращение времени остановок во время сборки мусора за счёт проведения большего объёма работ параллельно с выполнением Java-приложений.
  • В HotSpot JVM реализована экспериментальная поддержка компактных заголовков объектов, размер которых на 64-разрядных системах уменьшен с 96 до 64 бит (с 12 до 8 байт). Уменьшение размера заголовков позволяет сократить размер кучи и повысить эффективность работы кэша.
  • В сборщике мусора G1 упрощена реализация барьеров, отслеживающих доступ приложения к памяти. В новой версии операции расширения барьеров перенесены на более поздний этап компиляции в C2 JIT. Проведённые тесты показывают, что подобный перенос позволяет снизить накладные расходы в JIT-компиляторе C2 на 10-20% в зависимости от приложения.
  • Добавлен API для использования криптографических функций формирования ключа (KDF, key derivation function), позволяющих сформировать дополнительные ключи необходимой длины на основе секретного ключа (например, пароля) и произвольного набора данных. KDF API пока имеет статус предварительного (preview).
  • Добавлена возможность упреждающей (Ahead-of-Time) загрузки и компоновки классов. Изменение позволяет ускорить запуск HotSpot JVM за счёт предоставления используемых в приложении классов в уже загруженном и скомпонованном состоянии. Во время первого запуска приложения состояние всех классов сбрасывается в кэш и при последующих запусках используется для ускорения загрузки.
  • Добавлен API Class-File для разбора, генерации и преобразования файлов с классами Java.

    
       ClassFile cf = ClassFile.of();
       ClassModel classModel = cf.parse(bytes);
       byte[] newBytes = cf.build(classModel.thisClass().asSymbol(),
            classBuilder -> {
                for (ClassElement ce : classModel) {
                    if (!(ce instanceof MethodModel mm
                            && mm.methodName().stringValue().startsWith("debug"))) {
                        classBuilder.with(ce);
                    }
                }
            });
    
    
  • Добавлен расширенный API Stream, поддерживающий определение собственных промежуточных операций, которые могут оказаться полезны в случаях, когда существующих встроенных промежуточных операций недостаточно для желаемого преобразования данных. Собственные обработчики подключаются при помощи новой промежуточной операции Stream::gather(Gatherer), которая обрабатывает элементы потока, применяя к ним заданный пользователем обработчик.
    
       jshell> Stream.of(1,2,3,4,5,6,7,8,9).gather(new WindowFixed(3)).toList()
       $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    
  • Предложена четвёртая предварительная реализация ограниченных значений (Scoped Values), позволяющих совместно использовать неизменяемые данные в потоках и эффективно обмениваться данными между дочерними потоками (значения наследуются). Scoped Values развиваются для замены механизма переменных локальных к потоку (thread-local variables) и более эффективны при использовании очень большого числа виртуальных потоков (тысячи и миллионы потоков). Главное отличие Scoped Values от переменных локальных к потоку в том, что первые записываются один раз, в дальнейшем не могут быть изменены и остаются доступны только на время выполнения потока.
  • В механизмы сопоставления с образцом добавлена предварительная поддержка использования примитивных типов (int, byte, char и другие базовые типы, не являющиеся объектами) во всех видах шаблонов, в операторе "instanceof" и в блоках "switch".
    
       switch (x.getStatus()) {
           case 0 -> "okay";
           case 1 -> "warning";
           case 2 -> "error";
           case int i -> "unknown status: " + i;
       }
       if (i instanceof byte b) {
        ... b ...
       }
    
  • Предложена девятая предварительная реализация API Vector, предоставляющего функции для векторных вычислений, которые выполняются с использованием векторных инструкций процессоров x86_64 и AArch64 и позволяют одновременно применить операции сразу к нескольким значениям (SIMD). В отличие от предоставляемых в JIT-компиляторе HotSpot возможностей по автовекторизации скалярных операций, новый API даёт возможность явно управлять векторизацией для параллельной обработки данных.
  • Реализована поддержка синхронизации виртуальных потоков без их прикрепления (pinning) к потокам, связанным с платформой. Виртуальные потоки в синхронизированном методе или выражении в состоянии блокировки теперь освобождают свой платформенный поток, позволяя другим виртуальным потокам использовать его, что значительно увеличивает количество доступных виртуальных потоков и улучшает масштабируемость приложений, использующих многопоточность.
  • Добавлен третий предварительный вариант возможности, разрешающей указание в конструкторах выражений перед вызовом super(...), используемого для явного вызова конструктора родительского класса из конструктора наследуемого класса, если эти выражения не ссылаются на создаваемый конструктором экземпляр.
    
       class Outer {
           void hello() {
               System.out.println("Hello");
           }
           class Inner {
               Inner() {
                   hello();
                   super();
               }
           }
       }
    
  • В утилите jlink реализована поддержка создания образов run-time без использования файлов JMOD, что позволяет примерно на 25% сократить размер JDK.
  • Добавлен второй предварительный вариант использования одного выражения "import module M" для импорта сразу всех пакетов, экспортируемых указанным модулем. Изменение существенно упрощает повторное использование модульных библиотек, позволяя подключать библиотеки и классы без определения их места в иерархии пакетов. Например, указание "import module java.base" приведёт к импорту всех 54 пакетов, входящих в модуль java.base, которые ранее потребовалось бы упоминать по-отдельности ("import java.io.*", "import java.util.*" и т.п.).
  • Добавлена четвёртая предварительная реализация неявно объявленных классов и безымянных экземпляров метода "main", в которых можно обойтись без объявлений public/static, передачи массива аргументов и прочих сущностей, связанных с объявлением класса.
    
       // было
       public class HelloWorld {
         public static void main(String[] args) {
           System.out.println("Hello world!");
         }
       }
    
       // теперь можно
       void main() {
           System.out.println("Hello, World!");
       }
    
  • Предложен для тестирования четвёртый предварительный вариант API для cтруктурированного параллелизма (Structured Concurrency), упрощающего разработку многопоточных приложений за счёт обработки нескольких задач, выполняемых в разных потоках, как единого блока.
  • В API KeyPairGenerator, Signature и KeyFactory добавлена поддержка алгоритмов ML-KEM (CRYSTALS-Kyber) и ML-DSA (CRYSTALS-Dilithium), стандартизированных Национальным институтом стандартов и технологий США (NIST) и стойких к подбору на квантовом компьютере. Данные алгоритмы используют методы криптографии, основанные на решении задач теории решёток, время решения которых не отличается на обычных и квантовых компьютерах.
  • В сборщике мусора ZGC удалена поддержка не генеративного режима работы, не разделяющего обработку "старых" и "молодых" объектов. Начиная с Java SE 23 генеративный режим ZGC применяется по умолчанию.
  • Добавлен вывод предупреждений об использовании API JNI (Java Native Interface) и FFM (Foreign Function & Memory) с целью подготовки разработчиков к ограничению доступа к данным API из-за включения в одном из будущих выпусков режима обеспечения целостности, по умолчанию запрещающего взаимодействие с нативным кодом.
  • Включён вывод предупреждения при использовании методов доступа к внешней памяти (вне JVM), предоставляемых классом sun.misc.Unsafe. Для обращения к памяти вне кучи (off-heap) и взаимодействия с внешними кодом рекомендуется использовать API VarHandle. В прошлом выпуске поддержка sun.misc.Unsafe была объявлена устаревшей.
  • Отключён Security Manager, который давно потерял актуальность и оказался невостребованным после прекращения поддержки браузерного плагина. Security Manager был переведён в разряд устаревших в Java 17. В одном из следующих выпусков планируется полностью удалить код Security Manager.
  • Удалён код для поддержки 32-разрядной платформы ОС Windows на системах x86. Объявлен устаревшим и запланирован к удалению порт Java для 32-разрядных систем x86 (будет прекращена поддержка Linux на 32-разрядных системах x86).

Дополнительно можно отметить публикацию обновления платформы для создания приложений с графическим интерфейсом JavaFX 24 и новый выпуск универсальной виртуальной машины GraalVM, поддерживающей запуск приложений на JavaScript (Node.js), Python, Ruby, R, любых языках для JVM (Java, Scala, Clojure, Kotlin) и языках, для которых может формироваться биткод LLVM (C, C++, Rust). Кроме поддержки JDK 24 в новой версии GraalVM проведены оптимизации для задач, связанных с машинным обучением, улучшена поддержка компиляции Java-байткода в машинный код, добавлен механизм SkipFlow для сокращения размера исполняемых файлов и уменьшения времени компиляции.

  1. OpenNews: Выпуск Java SE 23 и OpenJDK 23
  2. OpenNews: Выпуск платформы Java SE 22 и открытой эталонной реализации OpenJDK 22
  3. OpenNews: Треть Java-проектов на базе библиотеки Log4j продолжают использовать уязвимые версии
  4. OpenNews: Выпуск Java SE 21
  5. OpenNews: Компания Oracle представила универсальную виртуальную машину GraalVM
Обсуждение (91 +7) | Тип: Программы |
·19.03.2025 Представлены две модели умных часов на открытой платформе PebbleOS (102 +26)
  Эрик Мигиковски (Eric Migicovsky), основатель компании Pebble Technology, представил две новые модели умных часов, которые будут выпускаться на базе открытой платформы PebbleOS. Новые модели полностью совместимы с приложениями и темами оформления, разработанными для старых часов Pebble. Устройства являются усовершенствованными вариантами ранее выпускаемых часов Pebble 2 и Pebble Time 2, и отличаются увеличением автономной работы с 7 до 30 дней, громкоговорителем, иным вибросигналом, улучшенными кнопками, датчиками давления и магнитного поля.

Прошлые модели часов Pebble выпускались с 2013 по 2016 год и пользовались популярностью благодаря длительной автономной работе из-за экрана не базе электронной бумаги и возможности установки на часы дополнительных программ из каталога, насчитывающего более 10 тысяч приложений. В 2016 году производство и разработка часов Pebble были свёрнуты после поглощения компанией Fitbit. В 2021 году компания Fitbit была куплена корпорацией Google, которая в январе 2025 года открыла код операционной системы PebbleOS под лицензией Apache 2.0 в рамках инициативы по поддержке энтузиастов, заинтересованных в продолжении развития платформы.

Основатель Pebble воспользовался публикацией PebbleOS для возрождении проекта и разработал две новые модели часов - "Core 2 Duo" и "Core Time 2". Между собой новые модели отличаются использованием 1.26-дюймового черно-белого (144x168) и 1.5-дюймового цветного сенсорного (200x228) экрана на базе электронной бумаги, а также пластиковым и металлическим корпусом. В остальном параметры часов близки. Модель Core 2 Duo доступна для предзаказа по цене $149, а Core Time 2 - $225. Производство первой модели начнётся в июле, а второй в декабре.

У часов Core 2 Duo 1.26-дюймовый черно-белый экран и корпус идентичен ранее выпускаемой модели Pebble 2. Устройство тоже доступно в черном и белом исполнении, защищено от попадания влаги (IPX8), имеет встроенный микрофон, функции отслеживания продолжительности сна и шагомер. Отличия от Pebble 2 сводятся к автономной работе в течение 30 суток, задействованием Bluetooth LE чипа Nordic nRF52840, наличием громкоговорителя, барометра, компаса, линейного резонансного привода (тише и мощнее вибромотора) и более надёжными 4 кнопками.

Модель Core Time 2 оснащена 64-цветным 1.5-дюймовым экраном на базе электронной бумаги, превышающим экран модели Pebble Time 2, выполненный по той же технологии, на 53% по размеру и на 88% по числу пикселей. Экран сенсорный и накрыт плоской стеклянной линзой, которая в отличие от изогнутой линзы часов Pebble Time 2 вносит меньше искажений и бликов. Корпус и 4 кнопки выполнены из металла. Обеспечен уровень защиты от попадания влаги IPX8. Время автономной работы заявлено в 30 дней. Помимо функций отслеживания продолжительности сна и шагомера, часы укомплектованы пульсометром. Имеется микрофон и громкоговоритель.

Новые модели созданы в соответствии со следующими принципами:

  • Использование экрана на основе электронной бумаги, который хорошо читается при солнечном свете и не привлекает внимание окружающих своим свечением.
  • Длительная автономная работа от одной зарядки аккумулятора.
  • Простой и качественный интерфейс пользователя, предлагающий базовый набор наиболее часто используемых возможностей (показ времени, уведомления, управления воспроизведением музыки, будильник, прогноз погоды, календарь, шагомер и учёт времени сна).
  • Наличие кнопок, позволяющих совершать действия не смотря на экран (например, остановка воспроизведения музыки или переход к следующей композиции).
  • Доступность для модификации (hackable), расширения функциональности, создания своих надстроек и смены оформления.

Прошивки для устройств построены на открытом коде платформы PebbleOS и поддерживают все основные возможности старых часов Pebble, такие как вывод уведомлений и сообщений со смартфона (например, уведомления о входящих звонках и событиях календаря-планировщика, информация о новых SMS, email и сообщениях из популярных мессенджеров), списки действий, смена тем оформления экрана, будильник, таймер, календарь, управление воспроизведением музыки, функции фитнес-трекера, расширение функциональности через установку приложений из каталога apps.rebble.io. Для Android и iOS будут опубликованы новые сопутствующие приложения для взаимодействия смартфона с умными часами.

  1. OpenNews: Google открыл код операционной системы для умных часов Pebble
  2. OpenNews: Открыт код MuditaOS, мобильной платформы с поддержкой экранов на базе электронной бумаги
  3. OpenNews: Первая версия InfiniTime, прошивки для открытых умных часов PineTime
  4. OpenNews: Проект Pine64 выпустил водонепроницаемые умные часы PineTime
  5. OpenNews: Проект ZSWatch развивает открытые умные часы на базе ОС Zephyr
Обсуждение (102 +26) | Тип: К сведению |
Следующая страница (раньше) >>



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру