The OpenNET Project / Index page

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

·03.04.2025 Выпуск Rust 1.86. Подготовка официальной спецификации языка Rust (51 +4)
  Опубликован релиз языка программирования общего назначения Rust 1.86, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).

Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.

Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.

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

  • Добавлена поддержка приведения (upcast) типажей к базовому супертипажу (supertrait), т.е. появилась возможность прямого преобразования ссылки на объект типажа в ссылку на объект супертипажа без необходимости создания специального метода в типаже, возвращающего ссылку на супертипаж. Аналогичную операцию можно выполнять и с другими видами умных указателей, например, "Arc<dyn Trait> -> Arc<dyn Supertrait>" и "*const dyn Trait -> *const dyn Supertrait".
    
       trait Trait: Supertrait {}
       trait Supertrait {}
    
       fn upcast(x: &dyn Trait) -> &dyn Supertrait {
           x
       }
    
  • В HashMap и срезы (slice) добавлен метод get_disjoint_mut() для одновременного получения нескольких изменяемых ссылок на элементы. Ранее borrow checker не допускал одновременное использование ссылок, полученных при помощи метода get_mut().
    
       let v = &mut [1, 2, 3];
       if let Ok([a, b]) = v.get_disjoint_mut([0, 2]) {
           *a = 413;
           *b = 612;
       }
       assert_eq!(v, &[413, 2, 612]);
    
       if let Ok([a, b]) = v.get_disjoint_mut([0..1, 1..3]) {
           a[0] = 8;
           b[0] = 88;
           b[1] = 888; 
       }
       assert_eq!(v, &[8, 88, 888]);
    
  • Разрешено маркировать safe-функции при помощи атрибута "#[target_feature]", указывающего, что функция использует заданные возможности CPU. Safe-функцию, помеченную атрибутом "#[target_feature]", другая safe-функция может безопасно вызвать только при условии, что она тоже помечена "#[target_feature]" (иначе подобные функции нужно вызывать в unsafe-блоке). При этом их нельзя передавать в функции, принимающие обобщенные (generic) параметры, ограниченные типажами Fn*. Ранее атрибут "#[target_feature]" мог применяться только к функциям, помеченным как "unsafe".
    
       #[target_feature(enable = "avx2")]
       fn requires_avx2() {
        // ... 
       }
    
       #[target_feature(enable = "avx2")]
       fn safe_callsite() {
           requires_avx2();
       }
    
       fn unsafe_callsite() {
            if is_x86_feature_detected!("avx2") {
               unsafe { requires_avx2() };
           }
       }
    
  • В компиляторе Rust включена подстановка отладочных проверок (debug-assert), что указатель не содержит значение NULL при чтении и записи ненулевых размеров, а также при повторном заимствовании (reborrow) указателя в ссылку. Например, при включении отладочных проверок нижеприведённый код теперь будет приводить к состоянию "panic":
    
       let _x = *std::ptr::null::<u8>();
       let _x = &*std::ptr::null::<u8>();
    
  • По умолчанию включена lint-проверка "missing_abi", приводящая к выводу предупреждения, если после ключевого слова extern не указан ABI. Ранее, если после extern не указан ABI, подразумевалось, что используется ABI "C". Теперь рекомендуется явно указывать ABI "C", например, 'extern "C" {}' и 'extern "C" fn'
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
  • Признак "const" применён в функциях:
  • Реализован третий уровень поддержки для платформ {aarch64-unknown,x86_64-pc}-nto-qnx710_iosock, {aarch64-unknown,x86_64-pc}-nto-qnx800, {x86_64,i686}-win7-windows-gnu, amdgcn-amd-amdhsa, x86_64-pc-cygwin, {mips,mipsel}-mti-none-elf, m68k-unknown-none-elf, armv7a-nuttx-{eabi,eabihf}, aarch64-unknown-nuttx и thumbv7a-nuttx-{eabi,eabihf}. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.
  • Добавлено предупреждение о прекращении второго уровня поддержки для целевой платформы i586-pc-windows-msvc в следующем выпуске (1.87). Рекомендуется использовать платформу i686-pc-windows-msvc, которая отличается поддержкой инструкций SSE2. Платформа i586-pc-windows-msvc потеряла смысл, так как для Windows 10 необходима поддержка SSE2, а более ранние выпуски Windows в Rust не поддерживаются.

Дополнительно можно отметить, что компания Ferrocene передала сообществу спецификацию на язык Rust (FLS - Ferrocene Language Specification), созданную в процессе разработки своего компилятора Rust для критически важных систем и периодически синхронизируемую с актуальным состоянием основного компилятора Rust. Спецификация FLS включает структурированное и детальное руководство по синтаксису, семантике и поведению Rust, пригодное для верификации, оценки совместимости и стандартизации.

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

  1. OpenNews: Открытие кода Rust-компилятора Ferrocene
  2. OpenNews: Релиз языка программирования Rust 2024 (1.85)
  3. OpenNews: Для ядра Linux 6.15 предложен начальный код драйвера Nova, написанный на Rust
  4. OpenNews: Браузер Chrome переведён на шрифтовой движок Skrifa, написанный на Rust
  5. OpenNews: В GCC-фронтэнде с компилятором Rust реализован Borrow checker
Обсуждение (51 +4) | Тип: Программы |
·03.04.2025 Утверждён переход Fedora 43 на пакетный менеджер RPM 6. Смена лидера Fedora (50 +12)
  Комитет FESCo (Fedora Engineering Steering Committee), отвечающий за техническую часть разработки дистрибутива Fedora Linux, утвердил переход на пакетный менеджер RPM 6 в осеннем выпуске Fedora 43. Релиз RPM 6.0 намечен на 3 квартал 2025 года.

Ветка RPM 6 примечательна поддержкой нового формата (RPM 6), позволяющего создавать пакеты размером более 4 ГБ (преодоление данного ограничения важно, так как SRC-пакет с Chromium близок к пределу и имеет размер 3.7 ГБ). В формате RPM 6 задействованы 64-разрядные поля с размерами, модернизированы структуры, связанные с криптографией, и добавлены MIME-сведения о файлах. Версии RPM 5 пропущена для исключения пересечений с проектом RPM5, который не связан с RPM от Red Hat и развивался независимыми разработчиками.

Поддержка формата RPM 4, использующего cpio, будет сохранена в полном объёме. Более того, ветка RPM 6 не навязывает переход на новый формат пакетов и дистрибутивы на своё усмотрение смогут остаться на формате RPM 4. Например, Fedora 43 будет поставляться пакетный менеджер RPM 6.0, но формат пакетов пока останется RPM 4. Для тех, кто пожелает перейти на новый формат в ветку RPM 4.x добавлена поддержка чтения и установки пакетов в формате RPM 6.

Из значительных изменений в RPM 6 также выделяется включение по умолчанию проверки подлинности пакетов с использованием цифровой подписи. Для того, чтобы обязательная проверка подписи не усложняла установку пакетов, собранных самостоятельно, в RPM 6 в утилиту rpmbuild добавлена поддержка автоматического формирования локальных подписей во время сборки. Также предусмотрена опция "--nosignature", позволяющая принудительно установить пакет без проверки подписи.

Среди других изменений: при разработке разрешено использование кода на языке C++ (C++20); возможно использование нескольких подписей OpenPGP для каждого пакета; прекращена поддержка хэшей MD5, SHA1 и DSA; прекращена поддержка устаревшего формата RPM 3. Расширены возможности утилиты rpmkeys по работе с ключами, например, для обновления OpenPGP-ключей можно использовать команду "rpmkeys --import". Сама по себе утилита rpmkeys теперь рассматривается в Fedora как основной инструмент для управления хранилищем ключей для RPM (использование gpg-pubkey объявлено устаревшим). В качестве альтернативы GnuPG предоставлена возможность использования инструментария Sequoia-sq, написанного на Rust.

Дополнительно можно отметить назначение нового лидера проекта Fedora. Вместо Мэтью Миллера (Matthew Miller), занимавшего пост лидера с 2014 года, назначен Джеф Спалета (Jef Spaleta), который вовлечён в работу со времён, когда проект Fedora ещё не перешёл в руки компании Red Hat. В прошлом Джеф несколько лет входил в управляющий совет Fedora, как представитель сообщества.

Лидер Fedora является официальной должностью в компании Red Hat. Лидер не выбирается путем голосования участников сообщества, а выдвигается прошлым лидером проекта и утверждается компанией Red Hat. Координацией развития дистрибутива занимается управляющий совет, состоящий из 4 представителей от компании RedHat и 5 от сообщества независимых разработчиков. К лидеру проекта предъявляется ряд требований, таких как высокая квалификация, наличие опыта работы в сообществе, умение принимать решения и выслушивать пожелания других людей.

  1. OpenNews: Выпуск пакетного менеджера RPM 4.20 и начало разработки RPM 6
  2. OpenNews: Red Hat прекратит подготовку rpm-пакетов с LibreOffice для RHEL и Fedora
  3. OpenNews: Инициатива по созданию форка проекта RPM5
  4. OpenNews: В Fedora планируют заменить пакетный менеджер DNF на Microdnf
  5. OpenNews: В Fedora 41 намечен переход на пакетный менеджер DNF5
Обсуждение (50 +12) | Тип: К сведению |
·03.04.2025 Mozilla развивает Thunderbird Pro и сервис Thundermail в стиле Gmail и Office365 (144 +14)
  Райан Сайпс (Ryan Sipes), директор MZLA Technologies Corporation, дочерней компании организации Mozilla Foundation, курирующей разработку почтового клиента Thunderbird, представил планы по созданию новых сервисов, нацеленных на расширение возможностей использования Thunderbird. Отмечается, что Thunderbird неуклонно теряет пользователей, оставаясь только клиентским решением, так как пользователи всё чаще предпочитают экосистемы, предлагающие одновременно почтовые клиенты и сервисы, такие как Gmail и Office365.

Gmail и Office365 привязаны к решениям отдельных производителей (vendor lock) и имеют проблемы с переносимостью, проявляющиеся при взаимодействии других клиентских приложений с сервисом или при попытке интеграции со сторонними системами. Организация Mozilla намерена сформировать альтернативную свободо-ориентированную экосистему "Thunderbird Pro", предоставляющую сервисы, похожие на Gmail и Office365, но построенные с использованием только открытого ПО.

Ключевым звеном инициативы "Thunderbird Pro" станет почтовый сервис Thundermail, позволяющий регистрировать почтовые ящики и email-адреса. Развиваемый в настоящее время прототип основан на платформе Stalwart. С сопровождающим данную платформу уже согласована совместная работа по реализации функциональности, необходимой для Thundermail, такой как интеграция компонентов для календаря-планировщика и адресной книги. Для сервиса уже зарегистрированы домены Thundermail.com и tb.pro, на которых размещена заглушка для подписки на уведомление о начале тестирования.

Платформа Stalwart написана на языке Rust, распространяется под лицензией AGPL-3.0 и предоставляет комбинированное решение для создания почтовых серверов. В состав входит SMTP-сервер со встроенной поддержкой расширений DANE, MTA-STS, SMTP TLS, DMARC, DKIM, SPF и ARC. Для обращения к почтовым ящикам предоставляется сервер с поддержкой протоколов JMAP, IMAP4 и POP3. В платформу интегрированы средства для фильтрации спама и защиты от фишинга, включающие такие механизмы как статистический баесовский классификатор, AI-анализатор на основе большой языковой модели, фильтры DNSBL и проверка по серым спискам. Среди дополнительных возможностей: управляющий web-интерфейс, встроенная поддержка S/MIME и OpenPGP, движок полнотекстового поиска, возможность использования Sieve-скриптов, квоты, управление TLS-сертификатами, ACL, аутентификация через OpenID Connect и OAuth 2.0, возможности для создания отказоустойчивых конфигураций и масштабирования.

В состав инициативы Thunderbird Pro также включены следующие сервисы:

  • Thunderbird Appointment - инструмент для планирования встреч и управления расписанием. Для упрощения согласования времени проведения встречи достаточно отправить другому пользователю ссылку и он сам сможет выбрать удобное время с учётом позиций, занятых у отправителя в календаре-планировщике Thunderbird. Код Appointment находится на стадии бета-тестирования, написан на Python и распространяется под лицензией MPL-2.0.
  • Thunderbird Send - сервис обмена файлами между пользователями, применяющий сквозное шифрование (end-to-end). Thunderbird Send является перерождением сервиса Firefox Send, закрытого после неспособности справиться с вредоносной активностью, такой как распространение вредоносного ПО и передача украденных данных. Отмечается, что новый вариант значительно переделан и адаптирован для прямого обмена файлами. Код написан на TypeScript и открыт под лицензией MPL-2.0.
  • Thunderbird Assist - AI-ассистент, развиваемый совместно с разработчиками фреймворка Flower AI. Идея проекта в создании чат-бота, обрабатывающего запросы на стороне пользователя. Если устройство недостаточно мощное для выполнения больших языковых моделей, опционально будет предоставлена возможность переноса вычислений в облако с использованием технологий конфиденциальных вычислений NVIDIA, по аналогии с работой Apple Private Cloud Compute. Код Thunderbird Assist находится на стадии подготовки к публикации.

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

Дополнительно можно отметить релиз почтового клиента Thunderbird 137.0, построенного на кодовой базе Firefox 137. Thunderbird 137 стал вторым выпуском, опубликованным в рамках новой модели формирования значительных релизов. Кроме исправления ошибок и уязвимостей в новой версии отключена интеграция индикатора в системных лоток Linux-систем, а для платформы Windows предоставлена поддержка сортировки почтовых папок по именам файлов. Одновременно в ESR-ветке с длительным сроком поддержки опубликован выпуск Thunderbird 128.9.0 с исправлением ошибок и уязвимостей.

  1. OpenNews: Mozilla сворачивает сервисы Firefox Send и Firefox Notes
  2. OpenNews: Mozilla объявила о развитии собственной платформы показа рекламы
  3. OpenNews: Mozilla диверсифицирует бизнес через AI-продукты и платформу online-рекламы
  4. OpenNews: Mozilla пояснила причину удаления обещаний не продавать данные пользователей
  5. OpenNews: Компания Mozilla выступила против запрета отчислений за трафик поисковой системе Google
Обсуждение (144 +14) | Тип: К сведению | Интересно
·02.04.2025 Релиз фреймворка Qt 6.9 (107 +20)
  Компания Qt Company опубликовала релиз фреймворка Qt 6.9, в котором продолжена работа по стабилизации и наращиванию функциональности ветки Qt 6. В Qt 6.9 предоставлена поддержка платформ Windows 10+, macOS 12+, Linux (Ubuntu 22.04/24.04, openSUSE 15.5, SUSE 15 SP5, RHEL 8.10/9.4, Debian 11.6), iOS 16+, Android 9+(API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS и QNX. Исходные тексты компонентов Qt поставляются под лицензиями LGPLv3 и GPLv2. Qt 6.9 получил статус промежуточного выпуска, общедоступная поддержка которого будет осуществляться 6 месяцев (+ ещё 6 месяцев для коммерческих пользователей).

Основные изменения в Qt 6.9:

  • Продолжено развитие модуля Qt Graphs, предназначенного для построения 2D- и 3D-графиков, а также визуализации больших коллекций быстро меняющихся данных. Модуль использует Qt Quick 3D и движок рендеринга RHI (Rendering Hardware Interface), поддерживающий различные 3D API (OpenGL, Vulkan, Metal и Direct 3D). В новой версии добавлена поддержка прозрачности в QML-типе Surface3D, реализован класс QSpline3DSeries для отрисовки данных в виде 3D-сплайнов, добавлены дополнительные возможности по настройке оформления диаграмм, осей и меток. Появилась возможность подстановки графиков в приложения на базе Qt Quick 3D, используя свойство "importScene" в сценах на базе View3D. Упрощена настройка параметров ввода в 2D-диаграммах. В QGraphsView появилась поддержка точного позиционирования прямоугольной области (plotArea) для отображения графика.
  • Реализована возможность определения в тексте кодов emoji и использования корректных цветных шрифтов для их отображения. В QFontDatabase добавлен новый API для выбора семейства шрифтов для emoji. В настоящее время поддерживаются шрифты в форматах CBDT и COLRv1. При желании парсинг emoji может быть отключён.
  • Добавлен API для создания интерфейсов, в которых элементы интерфейса смешиваются с содержимым и не отвлекают пользователя (контент охватывает всё пространство окна, без выделения заголовка). Для расширения области интерфейса приложения на всё окно добавлен флаг Qt.ExpandedClientAreaHint, а для выделения областей со служебными элементами, такими как заголовок, футер и меню, которые не должны пересекаться с внутренними элементами интерфейса приложения, в Qt Quick реализовано свойство "SafeArea".
  • В модуль Qt SVG добавлена начальная поддержка CSS-анимации, которая пока применима только для свойств "color", "fill", "stroke" и "transform".
  • Проведена работа по повышению производительности.
    • На системах с гибридными CPU, оснащёнными отдельными высокопроизводительными и энергоэффективными ядрами, в QThread добавлена возможность передачи планировщику подсказки на каком типе ядер CPU следует выполнять указанный поток.
    • Для приложений, использующих QQuickPaintedItem с OpenGL, разрешено использование режима отрисовки FramebufferObject, при котором применяется аппаратное ускорение.
    • В RHI-бэкенде (Rendering Hardware Interface) для OpenGL ES задействовано расширение с поддержкой мультисэмплированной отрисовки, позволяющей повысить производительность Qt Quick и Qt Quick 3D на современных GPU.
    • В RHI-бэкенд для Direct 3D добавлен отдельный поток для отслеживания завершения вертикальной развёртки (vblank), позволивший сократить задержки в интерактивных интерфейсах.
    • Во всех RHI-бэкендах, кроме OpenGL, добавлена поддержка механизма Variable Rate Shading (VRS), при помощи которого в приложениях виртуальной реальности на базе Quick 3D XR обеспечена поддержка отрисовки с учётом направления взгляда пользователя.
    • В Qt Quick предложен новый элемент RectangularShadow, позволяющий снизить нагрузку на CPU при использование в интерфейсе эффектов затенения и свечения.
    • В классе QHeaderView значительно снижено потребление памяти при отключении изменения размера и перегруппировки секций.
  • В Quick 3D реализована техника "Weighted Blended", позволяющая отрисовывать прозрачные объекты без выполнения отдельных операций сортировки глубины. Реализованная техника позволяет исключить появление артефактов из-за неверной сортировки, возникающих когда объекты перекрывают друг друга. По нагрузке на процессор и потреблению памяти новый метод идентичен старому.
  • Добавлен модуль Qt Network Authorization, предоставляющий API для аутентификации при помощи протоколов OAuth1 и OAuth2, которые можно использовать для получения доступа к online-сервисам без раскрытия пользовательского пароля.
  • Проведена работа по усилению защиты модуля Qt HTTP Server. В QHttpServerConfiguration добавлена возможность ограничения максимального числа входящих запросов. В QHttp2Configuration для клиентов HTTP/2 добавлена поддержка настройки максимального числа одновременно создаваемых потоков.
  • В QML Language Server, реализации сервера LSP (Language Server Protocol) для QML, обеспечена отдача информации о структуре QML, позволяющая отображать иерархическое представление структуры QML в редакторах кода и интегрированных средах разработки.
  • В Qt Quick добавлен новый компонент ContextMenu, упрощающий привязку контекстных меню к элементам, открываемым при поступлении специфичных для платформ событий, таких как клик правой кнопкой мыши. Для компонентов TextField и TextArea добавлены контекстные меню по умолчанию.

  1. OpenNews: Релиз фреймворка Qt 6.8
  2. OpenNews: Выпуск среды разработки Qt Creator 16
  3. OpenNews: Опубликована среда рабочего стола LXQt 2.1.0
  4. OpenNews: Проект по интеграции с Qt web-движка Servo, развиваемого на языке Rust
  5. OpenNews: Доступен графический тулкит GTK 4.18
Обсуждение (107 +20) | Тип: Программы |
·02.04.2025 Выпуск почтового клиента Betterbird 128.9.0, форка Thunderbird (137 +41)
  Представлен релиз почтового клиента Betterbird, являющегося soft-форком Mozilla Thunderbird, развиваемого силами сообщества и основанного на технологиях Mozilla Firefox. Betterbird 128.9 построен на кодовой базе ветки с длительным сроком поддержки Thunderbird 128.9.0 ESR, обновления для которой выпускаются в течение года. Для загрузки доступны установочные пакеты для Windows и macOS, а также бинарные сборки для Linux. Поддерживается локализация интерфейса для русского и украинского языков.

Проект Betterbird был основан Йоргом Кноблохом (Jörg Knobloch), бывшим мейнтейнером Thunderbird, который принимал участие в работе над проектом с 2016-го года. В 2020-м году, после обвинений в токсичном поведении и агрессивных нападках на других участников проекта, решением Thunderbird Council он был отстранён от участия в любых проектах, связанных с Thunderbird на 3 месяца ("3 months mandatory ban from participation in Thunderbird communities"). После нарушения условий отстранения он был исключён из числа мейнтейнеров и пожизненно отстранён от любого участия в проектах компании MZLA Technologies Corporation, курирующей разработку Thunderbird.

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

  • Режим многострочного просмотра, как в MS Outlook, Lotus Notes и Postbox.
  • Вертикальные закладки.
  • Цветовые акценты в оформлении.
  • Перенос поля со списком почтовых вложений в верхнюю часть окна письма.
  • Изменение размера панели в заголовке окна.
  • Дополнительные индикаторы при сортировке.
  • Дополнительные виды и компоновки (layouts) главного окна.
  • Редактирование заголовков в сообщении при отправке.
  • Дополнительные режимы просмотра переписки (threading).
  • Режим ручной сортировки для директорий и папок.
  • Поддержка более сложных условий поиска, включая регулярные выражения.
  • Глобальный поиск по сообщениям, зашифрованным PGP.
  • Поддержка иконки в системном трее в Windows и Linux.
  • Сворачивание в трей в Linux.
  • Поддержка Movemail.

Ключевые изменения и исправления в Betterbird 128 по сравнению с Thunderbird 128:

  • Убраны ненужные сообщения об ошибке для несуществующих сообщений.
  • Исправлено некорректное отображение дней недели при определённых форматах даты.
  • Добавлена автоматическая установка языковых пакетов для Betterbird из диалога с настройками.
  • Сохранение писем через пункт в меню и посредством drag-n-drop использует одно и то же имя для файла.
  • Исправлена некорректная работа расширения OWL.
  • Исправлена проблема в работе с расширением Quick Folder Move Classic, из-за которой новые и переименованные папки не показывались как недавно изменённые.
  • Количество папок в аккаунтах, использующих IMAP, больше не показывается как удвоенное (было вызвано проблемами в IMAP-бэкенде Thunderbird).
  • Исправлено сворачивание в трей под Linux в окружениях, использующих Wayland.
  • Исправлены проблемы с показом изображений в искажённом виде.
  • Устранена проблема с повреждением данных в mbox, проявлявшаяся при сортировке писем, полученных через POP3, если фильтр сортировки был настроен на поиск значения внутри тела письма.
  • Решена проблема с некорректным отображением результатов поиска при сортировке (quick filter) только по теме письма.
  • Ошибки, возникающие при обработке mbox-архива, теперь всегда корректно отображаются в консоли.
  • Улучшена производительность при работе с виртуальными папками (IMAP) и поиском по ним.
  • Исправлены разнообразные ошибки при поиске и сортировке писем при помощи сложных регулярных выражений.

  1. OpenNews: Опубликован почтовый клиент Thunderbird 136.0
  2. OpenNews: Thunderbird переходит к ежемесячному формированию значительных релизов
  3. OpenNews: Первый выпуск Thunderbird для Android, продолжающий развитие K-9 Mail
  4. OpenNews: Новые версии почтового клиента Claws Mail 3.20.0 и 4.2.0
  5. OpenNews: Выпуск почтового клиента Geary 46.0
Обсуждение (137 +41) | Автор: Аноним | Тип: Программы |
·02.04.2025 Релиз Rockbox 4.0, открытой прошивки для аудиоплееров (84 +33)
  После пяти с половиной лет разработки состоялся релиз проекта Rockbox 4.0, развивающего альтернативную прошивку для различных моделей аудиоплееров. По сравнению с штатными прошивками Rockbox предоставляет поддержку дополнительных форматов, функций и плагинов. Проект не основан на Linux и поставляется с собственным POSIX-совместимым ядром. Код написан на языке Си и распространяется под лицензией GPL. Rockbox может быть загружен с карты памяти, без удаления основной прошивки плеера.

Среди доступных в Rockbox функций: будильник, просмотр документов, фотографий и видео, голосовой интерфейс, поддержка Cue, возможность вывода текстов песен и обложек альбомов, система закладок, диктофон, запись с FM Radio, простой файловый менеджер. Из отличий также отмечается: энергоэкономичность (19-21 часов вместо 14-16 часов) и высокая скорость работы с большими списками воспроизведения. Поддерживаются до 20 тыс. композиций в плейлисте и до 10 тыс. файлов в каталоге (для сравнения прошивка Archos поддерживает не более 999 файлов).

Основные изменения:

  • Добавлена поддержка устройств:
    • AIGO EROS Q, EROS K и клоны данных моделей, такие как AGPTek H3, HifiWalker H2 и Surfans F20.
    • FiiO M3K.
    • Shanling Q1.
    • xDuoo X3ii и X20.
  • В категорию стабильных переведены порты для устройств:
    • AGPTek Rocker.
    • EROS Q, EROS K (+клоны AGPTek H3, HifiWalker H2 и Surfans F20).
    • FiiO M3K.
    • Shanling Q1.
    • xDuoo X3, X3ii и X20.
  • Ядро:
    • Удалена поддержка архитектуры CPU SH, а также устройств на базе HWCODEC и экранов charcell.
    • Добавлена поддержка частоты дискретизации до 192KHz на оборудовании, на котором это возможно.
    • Значительно улучшена поддержка ATA SSD, включая адаптеры iFlash ATA-SD.
    • Добавлена поддержка ATA-накопителей с размером логических секторов, превышающих 512 байт. В файловых системах добавлена поддержка произвольных соотношений логических и физических размеров секторов.
    • Добавлена поддержка таблиц разделов в формате GPT и накопителей, размером более 2 ТБ.
    • Включена возможность создания нескольких разделов на накопителях ATA и SD. Обеспечено формирования Multiboot-прошивок.
    • Проведена чистка и переработка многих внутренних API.
    • По умолчанию для имён файлов и обработки текста задействована кодировка UTF-8.
  • Кодеки:
    • Для улучшения воспроизведения на устройствах с SID (Sound Interface Device) задействована библиотека crSID.
    • При помощи библиотеки libayumi реализована поддержка воспроизведения видеоформатов, используемых в видеоиграх.
    • Добавлена поддержка воспроизведения формата VTX (ZX Spectrum).
    • Улучшена поддержка форматов FLAC, Speex, Opus, mp4/aac и WMA Pro, а также улучшены парсеры метаданных для различных мультимедийных контейнеров.
    • Добавлена поддержка обложек альбомов, встроенных в мультимедийные файлы.
    • Добавлена поддержка 7-канальных файлов FLAC.
  • Проведена оптимизация производительности интерфейса пользователя. Модернизирован движок тем оформления. Улучшено отображение метаданных и переработана навигация по базе данных. Расширены возможности работы с закладками и списками воспроизведения. Из плагина в основной состав перенесена поддержка скробблинга (отслеживания того, что слушает пользователь).
  • Улучшена поддержка кириллицы в шрифте 14-Rockbox-Mix. Обновлены шрифты Terminus.
  • Добавлена поддержка движков синтеза речи mimic, Google Translate (online) и Piper TTS. Значительно улучшено качество синтеза речи для языков, отличных от английского. Добавлены заранее сгенерированные речевые файлы для различных языков, включая русский.
  • Предложены плагины c играми 'picross', 'amaze' и 'xrick', плагин для переключения раскладки клавиатуры и просмотрщик скробблера Last.FM.
  • Прекращена поддержка устаревших устройств Archos Player/Studio, Archos Recorder / v2, Archos FM Recorder и Archos Ondio FM / SP, что позволило упростить внутреннюю архитектуру ядра. Также удалены не завершённые порты для устройств iAudio 7, Sansa C100, M200(v1-3), Logik DAX, ifp-7xx, Samsung YP-Z5 и Tatung TPJ-1102.

Общий список устройств, имеющих статус стабильных:

  • Aigo: Eros Q, Eros K (+ клоны AGPTek H3, HifiWalker H2 и Surfans F20)
  • Apple: iPod 1g-6g (Classic), iPod Mini 1g and 2g, iPod Nano 1g и 2g
  • AGPTek Rocker
  • Archos: Jukebox 5000, 6000, Studio, Recorder, FM Recorder, Recorder V2 и Ondio
  • Cowon: серии iAudio M3, iAudio M5, iAudio X5
  • Creative: Zen Mozaic, Zen X-Fi, Zen X-Fi Style, Zen X-Fi3
  • FiiO: M3K
  • iriver:серии H10, H100, H300
  • MPIO: HD300
  • Olympus: M-Robe 100
  • Packard Bell: Vibe 500
  • Philips: GoGear HDD1630, GoGear HDD6330, GoGear SA9200
  • Samsung: YH-820, YH-920, YH-925
  • Sandisk: Sansa c200, e200, Clip, Clip Zip, Clip+, Fuze, Fuze+
  • Shanling: Q1
  • Sony: серии NWZ-E360, NWZ-E370, NWZ-E380
  • Toshiba: Gigabeat F/X
  • xDuoo X3, X3ii и X20

  1. OpenNews: Релиз Rockbox 3.14, открытой прошивки для аудиоплееров
  2. OpenNews: Synthstrom Audible откроет код прошивки музыкальных синтезаторов Deluge
  3. OpenNews: AMD опубликовал прототип openSIL, платформы для создания открытых прошивок
  4. OpenNews: Intel представил проект по развитию открытых прошивок для звуковых чипов
  5. OpenNews: Инструментарий для создания патчей к прошивкам чипов TI CC13XX и CC26XX с поддержкой BLE
Обсуждение (84 +33) | Тип: Программы |
·02.04.2025 Выпуск дистрибутива GoboLinux 017.01 с собственной иерархией файловой системы (144 +18)
  Представлен релиз дистрибутива GoboLinux 017.01, в котором вместо традиционной для Unix-систем иерархии файлов используется стековая организация дерева каталогов, при которой каждая программа устанавливается в отдельный каталог. Размер установочного образа с поддержкой загрузки в Live-режиме - 2.3 ГБ (x86_64).

Корень файловой системы в GoboLinux содержит каталоги "/Programs", "/Users", "/System", "/Files", "/Mount" и "/Depot". Каталог каждого приложения включает все его компоненты, без разнесения по разным системным каталогам настроек, данных, библиотек и исполняемых файлов. Плюсом такого подхода является возможность параллельной установки разных версий одного приложения (например, /Programs/LibreOffice/25.2 и /Programs/LibreOffice/24.8) и упрощение поддержания системы (например, для удаления программы достаточно удалить связанный с ней каталог и почистить символические ссылки в /System/Index).

Для упрощения навигации по типам файлов в дистрибутиве присутствует каталог "/System/Index", в котором символическими ссылками отмечены различные типы содержимого, например, список доступных исполняемых файлов представлен в подкаталоге "/System/Index/bin", совместно используемых данных в "/System/Index/share", а библиотек в "/System/Index/lib" (например, /System/Index/lib/libgtk.so ссылается на /Programs/GTK/4.18/lib/libgtk-4.18.so). Таким образом все имеющиеся библиотеки оказываются отражены в каталоге "/System/Index/lib" и компоновщик использует его при поиске необходимых приложениям библиотек.

Для совместимости со стандартом FHS (Filesystem Hierarchy Standard) исполняемые файлы, библиотеки, логи и файлы конфигурации дополнительно распределены по каталогам "/bin", "/lib", "/var/log" и "/etc" через символические ссылки (например, /bin и /usr/bin являются символическими ссылками на "/System/Index/bin", а переменная окружения PATH указывает на "/System/Index/bin"). При этом, данные каталоги по умолчанию не видны пользователю, благодаря применению модуля ядра GoboHide. Указанный модуль скрывает некоторые каталоги при переборе содержимого, но допускает прямое обращение к файлам.

Для сборки пакетов используются наработки проекта ALFS (Automated Linux from Scratch). Сценарии сборки оформляются в форме "рецептов", при запуске которых автоматически загружается код программы и требуемые зависимости. Для быстрой установки программ без пересборки предлагается два репозитория с уже собранными бинарными пакетами - официальный, поддерживаемый командой разработчиков дистрибутива, и неофициальный, формируемый сообществом пользователей. Установка дистрибутива производится с использованием инсталлятора, поддерживающего работу как в графическом, так и текстовом режиме.

Выпуск GoboLinux 017.01 ознаменовал возрождение проекта (прошлый выпуск был опубликован пять лет назад). Релиз также приурочен к 1 апреля, так как, вероятно, многие уже забыли о существовании данного проекта и шуткой стало то, что это не шутка и дистрибутив с собственной моделью разбивки каталогов действительно существует. Создатель GoboLinux и его основной разработчик передал управление новому сопровождающему, который продолжит развитие дистрибутива. Изменения в новой версии:

  • В Live-окружении задействован модуль UnionFS-Fuse.
  • Библиотека Ncurses заменена на NcursesW.
  • Добавлена поддержка карт памяти eMMC.
  • Программа Freshen, применяемая для проверки наличия обновлений, портирована на Python 3.
  • Ядро Linux обновлено до версии 6.12.16 (ранее использовалась ветка 5.6). Для сжатия ядра, прошивок initramfs и образа squashfs задействован алгоритм zstd.
  • Обновлены версии пакетов Dracut 103, E2FSProgs 1.47.1, Fuse 3.16.2, GCC 14.2.0 (был 9.2.0), GRUB 2.12, SQlite 3.36.0 SquashFS-Tools4.6.1 Util-Linux 2.40.2.
  • Обновлены загрузочные скрипты и компоненты собственной разработки (Compile, ConfigTools, Dit, EnhancedSkel, GoboNet, Scripts). Добавлены компоненты BuildLiveCD и Freshen.
  • Решены многие проблемы, отмеченные пользователями в прошлом выпуске.

  1. OpenNews: Доступны Linux Standard Base 5.0 и стандарт иерархии файловой системы FHS 3.0
  2. OpenNews: Выпуск EasyOS 6.5, самобытного дистрибутива от создателя Puppy Linux
  3. OpenNews: Выпуск Bedrock Linux 0.7.3, сочетающего компоненты различных дистрибутивов
  4. OpenNews: Первый стабильный релиз децентрализованной системы установки приложений Zero Install
  5. OpenNews: Возрождение системы управления пакетами GNU Stow
Обсуждение (144 +18) | Тип: Программы |
·01.04.2025 Релиз Firefox 137 с поддержкой группировки вкладок (131 +36)
  Состоялся релиз web-браузера Firefox 137 и сформированы обновления прошлых веток с длительным сроком поддержки - 115.22.0 и 128.9.0. На стадию бета-тестирования переведена ветка Firefox 138, релиз которой намечен на 29 апреля.

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

  • Добавлена поддержка группировки вкладок, позволяющая объединять несколько вкладок и сворачивать их в одну кнопку, чтобы они не занимали место при просмотре других вкладок. Группе можно назначить имя и цвет, а также отдельно сохранить на случай, если содержимое понадобиться в будущем. Для создания группы можно использовать подменю "Добавить вкладку в группу" в контекстном меню, показываемом при клике правой кнопкой мыши на кнопках вкладок, или просто перетащив одну вкладку на другую (откроется диалог для создания группы).

    Группировка может оказаться полезной для разделения вкладок по тематике (развлечение, покупки, чтение на потом). Кроме того, группировка помогает, когда в процессе первоначального изучения какой-то темы или при выборе товара открывается много связанных страниц, к которым через какое-то время потребуется вернуться, но оставлять в форме отдельных вкладок второстепенные страницы не хочется, так как они занимают место в панели. Возможность пока по умолчанию включена не для всех и постепенно будет активироваться для всё большего процента пользователей. Для принудительного включения на странице about:config можно активировать параметр "browser.tabs.groups.enabled"

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

    При отправке поискового запроса из адресной строки, введённые данные теперь остаются в адресной строке как есть, даже после отправки запроса к поисковой системе, что позволяет при необходимости изменить запрос напрямую в адресной строке. Например, при отправке запроса "samba vulnerability" в адресной строке теперь не показывается URL поисковой системы, а остаётся введённый текст:

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

  • При начале ввода поискового запроса в адресной строке, находясь на странице какого-то сайта, в числе рекомендаций автоматически будет предложена возможность отправки запроса через поисковую систему этого сайта, если он предоставляет соответствующие функции. После отправки двух подобных поисковых запросов на сайт, браузер предложит добавить поисковый движок сайта в список поисковых систем.
  • Предоставлена возможность выбора области поиска, используя управляющие теги, такие как @bookmarks, @tabs, @history и @actions. При вводе символа "@" появляется подсказка по доступным тегам.

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

    Новые возможности адресной строки пока активированы по умолчанию только для небольшого процента пользователей. Для принудительного включения в "about:config" можно использовать параметры из секции "browser.urlbar", такие как "browser.urlbar.quicksuggest.enabled", "browser.urlbar.unifiedSearchButton.always" и "browser.urlbar.suggest.calculator").

  • В сборках для платформы Linux включено использование аппаратного ускорения декодирования видео в формате HEVC (H.265).
  • При просмотре PDF-документов обеспечено определение всех ссылок и превращение их в гиперссылки.
  • В PDF-просмотрщик добавлен диалог для прикрепления к документу изображения своей подписи.
  • Добавлена поддержка API SVG Path для отображения фигур и создания контуров при помощи SVG-элемента "path". Добавлена поддержка методов getPathData(), setPathData() и getPathSegmentAtLength(), предоставляемых интерфейсом SVGPathElement.
  • Добавлено CSS-свойство "hyphenate-limit-chars", которое можно использовать для указания минимального числа символов в частях слова, разделённых при переносе конца слова на другую строку.
  • В CSS-свойство text-decoration-line добавлена поддержка значений "spelling-error" и "grammar-error" для оформления выделения в тексте синтаксических и грамматических ошибок.
  • Добавлен метод Math.sumPrecise() для вычисления суммы элементов массивов и других перечисляемых объектов с точностью, превышающей точность обычного суммирования в цикле (исключаются потери точности при промежуточном сохранении результатов).
  • Добавлен метод Atomics.pause() для информирования о нахождении потока в состоянии блокировки из-за , ожидания доступа к общему ресурсу, что может использоваться системой при регулировании энергопотребления CPU.
  • Для дополнений выставлено ограничение (10 МБ) на размер данных, сохраняемых через API storage.session.
  • В инструментах для web-разработчика в панели инспектирования шрифтов добавлено отображение метаданных шрифтов, таких как версия, автор, поставщик и лицензия.
  • В панели инспектирования сетевой активности предоставлена возможность переопределения ответов на сетевые запросы (вместо реального ответа можно подставить содержимое выбранного файла).
  • В версии для платформы Android добавлена поддержка видео в формате HEVC (H.265).

Кроме новшеств и исправления ошибок в Firefox 137 устранено 14 уязвимостей. 13 уязвимостей помечены как опасные. Все из опасных уязвимостей вызваны проблемами работы с памятью, такими как переполнения буферов и обращение к уже освобождённым областям памяти. Потенциально данные проблемы способны привести к выполнению кода злоумышленника при открытии специально оформленных страниц.

  1. OpenNews: Релиз Firefox 136 с поддержкой вертикальных вкладок
  2. OpenNews: Mozilla переходит к поставке Firefox с условиями использования
  3. OpenNews: В Firefox существенно модернизирована адресная строка
  4. OpenNews: Европейскому регулятору подана жалоба о появлении в Firefox функции отслеживания пользователей
  5. OpenNews: В Firefox появится группировка вкладок
Обсуждение (131 +36) | Тип: Программы |
·01.04.2025 Выпуск системы резервного копирования Restic 0.18. Атака на CDC (39 +12)
  Представлен выпуск системы резервного копирования Restic 0.18, позволяющей хранить резервные копии в зашифрованном виде в версионированном репозитории с поддержкой дедупликации. Система изначально рассчитана на то, что резервные копии сохраняются в окружениях, не заслуживающих доверия, и попадание резервной копии в чужие руки не должно скомпрометировать систему. При создании резервной копии возможно определение гибких правил для включения и исключения файлов и каталогов (формат правил напоминает rsync или gitignore). Поддерживается работа в Linux, macOS, Windows и BSD-системах. Код проекта написан на языке Go и распространяется под лицензией BSD.

Резервные копии могут храниться в локальной ФС, на внешнем сервере с доступом по SFTP/SSH или HTTP REST, в облаках Amazon S3, OpenStack Swift, BackBlaze B2, Microsoft Azure Blob Storage и Google Cloud Storage, а также в любых хранилищах, для которых имеются бэкенды rclone. Для хранения также может использоваться развиваемый проектом rest server, обеспечивающий более высокую производительность по сравнению с другими бэкендами и способный работать в режиме только для дополнения, не позволяющем удалить или изменить резервные копии в случае компрометации исходного сервера и доступа к ключам шифрования.

Система поддерживает снапшоты, отражающие состояние иерархии каталогов в разные моменты времени (снапшоты создаются автоматически для каждой резервной копии). Возможно копирование снапшотов между разными репозиториями. Для экономии трафика в процессе создания резервных копий копируются только изменившиеся данные. Снапшот с резервной копией может быть примонтирован в форме виртуального раздела (монтирование осуществляется при помощи FUSE). Также предоставляются команды для анализа изменений и выборочного извлечения файлов.

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

На внешних серверах информация сохраняется в зашифрованном виде - для контрольных сумм и дедупликации используются хэши SHA-256, для шифрования - алгоритм AES-256-CTR, а для гарантирования целостности - коды аутентификации на основе Poly1305-AES. Предусмотрена возможность верификации резервной копии по контрольным суммам и кодам аутентификации для подтверждения, что целостность файлов не нарушена.


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

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

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

Уязвимость не специфична для Restic и затрагивает другие системы резервного копирования, использующие разделение данных на блоки при помощи техники CDC (Content-Defined Chunking), такие как BorgBackup, Tarsnap, Bupstash и Duplicacy. В Tarsnap проблема устранена в обновлении 1.0.41, в BorgBackup ведётся работа над исправлением, которое намерены включить в ветку borg 2. В Bupstash последнее изменение было 2 года назад, а в Duplicacy - 4 месяца назад.

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

Кроме устранения уязвимости в Restic 0.18 также предложено несколько новшеств:

  • Добавлена экспериментальная поддержка "холодных" хранилищ резервных копий (данные становятся доступны для извлечения через минуты или часы после запроса), поддерживающих протокол S3, таких как Amazon S3 Glacier.
  • В команды check и tag добавлена поддержка вывода в формате JSON.
  • При сборке образов для GitHub Container Registry учтены рекомендации SLSA (Supply-chain Levels for Software Artifacts).
  • В команду ls добавлен выбор метода сортировки вывода. В команде find по умолчанию задействована сортировка по дате (от новых к старым).
  • Предоставлена возможности исключения из операции перепаковки файлов, размером меньше заданного.
  • Добавлена настройка для включения/отключения восстановления расширенных атрибутов файлов.
  • Добавлена поддержка ОС DragonFlyBSD.
  • Добавлена поддержка расширенных атрибутов файлов на системах с NetBSD 10+.
  • В ветке restic 0.19.0 намечено удаление поддержки устаревших возможностей, активированных через настройки deprecate-legacy-index, deprecate-s3-legacy-layout, explicit-s3-anonymous-auth и safe-forget-keep-tags.
  • Прекращена поддержка старых версий Windows и macOS, для работы теперь требуется как минимум Windows 10, Windows Server 2016 или macOS 11. Прекращена поддержка версий TLS до 1.2.

  1. OpenNews: Тестирование сервиса резервного копирования Tarsnap
  2. OpenNews: Релиз системы резервного копирования BorgBackup 1.1.0
  3. OpenNews: Доступна система резервного копирования Bacula 13.0.0
  4. OpenNews: Доступен GNU Anastasis, инструментарий для резервного копирования ключей шифрования
  5. OpenNews: Доступна система резервного копирования restic 0.15
Обсуждение (39 +12) | Тип: Программы |
·31.03.2025 Разработчики OrioleDB предложили улучшить API для альтернативных движков PostgreSQL (30 +12)
  Разработчики OrioleDB проанализировали текущее состояние низкоуровневого API, применяемого для доступа расширений к таблицам и индексам в PostgreSQL (Table/Index Access Method (AM) API), и предложили пути его улучшения. С момента появления в PostgreSQL 12 подобного API разработчики получили возможность создавать альтернативные механизмы хранения данных. Однако, несмотря на наличие этого API и известные ограничения встроенного механизма хранения, до сих пор не появилось полнофункциональных транзакционных движков хранения, реализованных исключительно в виде расширений.

Наиболее востребованными функциями для альтернативных табличных движков PostgreSQL являются:

  • Альтернативные реализации MVCC, например, хранилища на основе журнала UNDO.
  • Индексно-организованные таблицы, где индекс не является необязательным дополнением к таблице, которое ускоряет запросы, а представляет собой основную структуру данных, в которой хранятся данные таблицы.

Изменения, необходимые в API Table/Index AM для поддержки альтернативных реализаций MVCC, рассматриваются с оглядкой на расширение OrioleDB, разработанное для устранения известных недостатков встроенного механизма хранения PostgreSQL. Проблема в том, что для полной интеграции OrioleDB с PostgreSQL требуются внесение изменений в код PostgreSQL, что усложняет внедрение проекта и подчёркивает необходимость модернизации текущего API Table AM.

API Table AM не навязывает напрямую способ реализации MVCC. Тем не менее, API Table AM и API Index AM делают следующее предположение: каждый TID (Tuple/row Identifier) либо индексируется всеми индексами, либо не индексируется вообще. Даже если Index AM имеет несколько ссылок на один TID (например, GIN), все эти ссылки должны соответствовать одному и тому же индексированному значению.

Этот принцип критиковали за увеличение числа операций записи ("write amplification") - если обновляется один индексированный атрибут, необходимо обновить каждый индекс в таблице. При необходимости в полной мере использовать преимущества журнала UNDO или построить другой метод хранения без "усиления записи" (например, метод WARM), требуется нарушить это предположение.

Table AM основанный на UNDO, который не будет нарушать это предположение, напоминает существующий метод HOT (Heap-Only Tuples), за исключением того, что старые версии строк сохраняются в журнале UNDO и не должны умещаться в той же странице. Но, по мнению авторов, этого преимущества недостаточно, чтобы оправдать существование отдельного Table AM.

Практические ограничения существующего API:

  • Во время обновления строки таблицы индексы обновляются по принципу «все или ничего».
  • Отсутствие в API Index AM возможности точечного удаления определённых кортежей. В настоящее время можно удалять кортежи из индексов массово с помощью методов ambulkdelete и amvacuumcleanup. Попытка реализовать точечное удаление через этот API привела бы к низкой эффективности, поскольку большинство текущих реализаций должны сканировать весь индекс. Кроме того, API не позволяет указать какие из кортежей, ссылающиеся на один и тот же TID, следует удалить. Он может удалить только их все.
  • Индексы в настоящее время ссылаются на строки таблицы по номеру блока (32 бита) и номеру смещения (16 бит). И только 11 бит номера смещения можно безопасно передать из TID таблицы во все методы доступа индекса. При этом альтернативным реализациям MVCC может потребоваться хранить дополнительную полезную нагрузку (payload) вместе с TID. Например, в OrioleDB требуется один или несколько бит для реализации индексов "delete-marking" или полной информации о видимости.

Предложено два способа преодолеть ограничения на практике:

    Подход 1: API Index AM предоставляет возможности для альтернативной реализации MVCC.

    В то время как Table AM продолжает отвечать за все компоненты MVCC, Index AM предоставляет необходимые возможности для альтернативной реализации MVCC, а именно: хранение пользовательской полезной нагрузки (payload) вместе с TID, метод точечного удаления и даже метод точечного обновления (если TID в индексе не может быть изменён, пользовательская полезная нагрузка – может). Кроме этого, так как необходимо разрешить нескольким кортежам индекса ссылаться на один и тот же TID, методы API, применяемые при сканировании индекса, также нуждаются в обновлении.

    Подход 2: Индексы, поддерживающие MVCC.

    Альтернативой было бы разрешить индексы, поддерживающие MVCC. То есть "executor" (или, возможно, Table AM) просто вызывает методы insert() и delete() в Index AM, в то время как Index AM предоставляет возможность сканирования c учётом MVCC. Это значительно упростило бы сканирование с использованием только индексов (index-only). Даже весь Table AM в таком случае мог бы стать промежуточным слоем, хранящим данные в индексе.

    На диаграмме ниже приведён пример. Значение индекса 2 обновляется транзакцией 11 со значения "A" на значение "B". Поэтому значение "A" отмечено как xmax == 11, а значение "B" отмечено как xmin == 11. Таким образом можно сканировать индекс 2 и получать только видимые кортежи в соответствии с MVCC без проверок кучи (heap). Сборка мусора индекса 2 также может быть выполнена без использования кучи.

    При внедрении всех перечисленных новшеств в API индексных методов доступа, маловероятно, чтобы удалось одновременно доработать все индексы для поддержки всех новых возможностей. Более реалистично разрешить несколько реализаций для одного индексного метода доступа. Например, в дополнение к обычному B-tree, расширение сможет реализовать альтернативный B-tree с поддержкой MVCC внутри индекса и поддержкой идентификаторов записи произвольной длины.

    Таким образом, предлагается пересмотреть не только API Table AM, но и API Index AM, который исправно служил сообществу PostgreSQL на протяжении многих лет. Более того, предлагается разделить Index AM на логический слой и слой реализации. Эта переосмысленная архитектура позволит PostgreSQL поддерживать различные модели хранения.

    1. OpenNews: Седьмая бета-версия OrioleDB, высокопроизводительного движка хранения для PostgreSQL
    2. OpenNews: Для PostgreSQL представлен движок хранения OrioleDB, обходящийся без операции VACUUM
    3. OpenNews: Доступны IvorySQL 4.0 и SynchDB 1.0, надстройки к PostgreSQL для взаимодействия с другими СУБД
    4. OpenNews: Microsoft открыл код СУБД DocumentDB, основанной на PostgreSQL
    5. OpenNews: Релиз FerretDB 2.0, реализации MongoDB на базе СУБД PostgreSQL
Обсуждение (30 +12) | Автор: Alexander Korotkov | Тип: Обобщение |
·31.03.2025 Доступна платформа обмена сообщениями Zulip 10 (78 +15)
  Опубликован релиз Zulip 10, серверной платформы для развёртывания корпоративных мессенджеров, подходящих для организации общения сотрудников и групп разработчиков. Проект изначально был разработан компанией Zulip и открыт после её поглощения компанией Dropbox под лицензией Apache 2.0. Код серверной части написан на языке Python с использованием фреймворка Django. Клиентское ПО доступно для Linux, Windows, macOS, Android и iOS, также предоставляется встроенный web-интерфейс.

Система поддерживает как прямой обмен сообщениями между двумя людьми, так и проведение групповых обсуждений. Zulip можно сравнить с сервисом Slack и рассматривать как внутрикорпоративный аналог Twitter, применяемый для общения и обсуждений рабочих вопросов в больших группах сотрудников. Предоставляются средства для отслеживания состояния и участия одновременно в нескольких обсуждениях с использованием нитевидной модели отображения сообщений, которая является оптимальным компромиссом между привязкой к комнатам в Slack и единым публичным пространством Twitter. Одновременное нитевидное отображение всех обсуждений позволяет в одном месте охватить все группы, при этом сохранив логическое разделение между ними.

Из возможностей Zulip также можно отметить поддержку отправки сообщений пользователю в offline-режиме (сообщения будут доставлены после появления в online), сохранение полной истории обсуждений на сервере и средства для поиска в архиве, возможность отправки файлов в режиме Drag-and-drop, автоматическую подсветку синтаксиса для передаваемых в сообщениях блоков кода, встроенный язык разметки для быстрого оформления списков и форматирования текста, средства для групповой отправки уведомлений, возможность создания закрытых групп, интеграция с Trac, Nagios, Github, Jenkins, Git, Subversion, JIRA, Puppet, RSS, Twitter и другими сервисами, средства для привязки к сообщениям наглядных меток.

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

  • Добавлены инструменты для управления правами доступа, позволяющие манипулировать правами на уровне отдельных пользователей, групп пользователей и ролей. Например, в интерфейсе можно разрешить перемещение сообщений пользователям, которым назначена роль модератора, или которые включены в группу менеджеров. При помощи групп можно воссоздать структуру управления организацией, например, начальники могут быть объединены в группу менеджеров, которая может быть разбита на подгруппы, отвечающие за технологии и дизайн.
  • Добавлены дополнительные возможности управления группами. Появилась поддержка предоставления отдельных прав для создания и администрирования групп, добавления и удаления участников. Также можно определять каким пользователям разрешено самостоятельно присоединяться и покидать группы. Добавлена поддержка подключения пользователей к группе на этапе отправки инвайта. Вместо удаления группы реализована деактивация, при которой для аудита сохраняется вся история группы. В панель с настройками групп добавлены отдельные вкладки для общих настроек, управления составом групп и назначением прав доступа.
  • В интерфейс администратора добавлены новые настройки для каналов, позволяющие определить для каждого канала администраторов и лиц, имеющих право подключения/отключения пользователей. На уровне отдельных пользователей и групп можно выборочно назначать доступ в режиме только чтения, ограничивать редактирование уже отправленных сообщений, управлять подпиской на приватные каналы, назначать участников, уполномоченных закрывать темы. Добавлена возможность скрытия или оставления архивных каналов.
  • Добавлена концепция общего чата, в котором отображаются сообщений без привязки к теме.
  • Реализована поддержка настройки размера шрифта и межстрочных интервалов, позволяющая более гибко адаптировать интерфейс под свои предпочтения, чем изменение масштаба.
  • В боковую панель со списком пользователей добавлена отдельная секция с недавно подключившимися участниками. В меню панели добавлена опция для показа аватаров в списке. Обновлены индикаторы доступности участников.
  • Расширены возможности по созданию ссылок на сообщения, каналы и темы обсуждений. Ранее созданные ссылки на темы теперь продолжают действовать после переименования темы или перемещения в другой канал. При вставке через буфер обмена ссылки в программы, поддерживающие формат HTML, обеспечено автоматическое форматирование ссылки в виде "#channel > topic". Аналогично, при вставке полных URL при написании новых сообщений подобные ссылки преобразуются в формат ссылок Zulip. Упрощено создание ссылок на темы обсуждений.
  • Улучшен интерфейс составления новых сообщений. Добавлена функция сохранения типовых отрывков текста для их быстрой вставки при составлении нового сообщения. В боковую панель добавлены кнопки для отправки сообщения с созданием новой темы и для прямой отправки сообщения другому пользователю. Добавлена опция для перенаправления сообщения или его части в другой чат. Упрощена совместная работа над списками задач (todo).
  • Проведены оптимизации обработки и хранения сообщений, благодаря которым сообщения в окне просмотра теперь появляются без задержки.
  • Добавлен индикатор, показываемый когда другой участник приступил к редактированию уже отправленного сообщения (ранее предоставлялся только индикатор написания нового сообщения).
  • Добавлен модуль интеграции с Zoom, использующий OAuth. В модуле интеграции с BigBlueButton добавлена поддержка голосовых вызовов (без видео). Добавлены модули интеграции для Airbyte и Onyx, и улучшены для GitHub, GitLab, GoCD, Linear, NewRelic и Slack.
  • Добавлен тестовый модуль для краткого изложения сути обсуждения в теме, используя выбранные пользователем большие языковые модели.
  • На сервер добавлена поддержка загрузки больших файлов, используя протокол TUS. Проведена оптимизация протокола синхронизации, позволившая сократить трафик и нагрузку на CPU в крупных организациях.
  • Устранены уязвимости:
    • CVE-2025-27149 - при экспорте публичных данных была возможна утечка метаданных о приватных сообщениях и строк с идентификаторами браузеров клиентов.
    • CVE-2025-30368, CVE-2025-30369: файлы с экспортом и поля в профилях могли быть удалены администраторами других организаций.

  1. OpenNews: Завершено открытие серверной части сервиса мгновенного обмена сообщениями Wire
  2. OpenNews: Проект TFC развивает параноидально защищённую систему обмена сообщениями
  3. OpenNews: Проект Revolt развивает открытую альтернативу платформе Discord
  4. OpenNews: Первый выпуск коммуникационной платформы Fosscord, совместимой с Discord
  5. OpenNews: Доступна система обмена сообщениями Briar, способная работать в режиме P2P
Обсуждение (78 +15) | Тип: Программы |
·30.03.2025 Опубликован свободный видеокодек Theora 1.2 (167 +42)
  Организация Xiph.Org, известная разработкой видео- и аудиокодеков Daala, Opus, FLAC, Vorbis и Speex, представила новую редакцию свободного кодека Theora 1.2, сформированную спустя 15 с половиной лет после прошлого обновления. Кодек распространяется под свободной лицензией без сбора лицензионных отчислений (royalty-free). Формат сжатия видео Theora, как правило, используется совместно с аудиокодеком Vorbis в контейнерах Ogg и может работать в режимах с переменным и фиксированным битрейтом. По уровню качества кодирования Theora близок к H.264 и DiVX. Эталонная реализация кодека распространяется под лицензией BSD.

Основное внимание при подготовке новой редакции было уделено повышению производительности и эффективности кодирования. На уровне битового потока (bitstream) Theora 1.2 полностью соответствует стандартизированному в 2004 году формату кодирования видео Theora. API и ABI интерфейсы новой версии также сохраняют полную совместимость с прошлыми выпусками Theora. В состав Theora 1.2 включены 190-страничная спецификация, документация на API, черновик спецификации RTP-расширений для потокового вещания и эталонные реализации кодировщика и декодировщика.

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

Кроме того, в Theora 1.2 проведена оптимизация эталонного декодировщика, добавлена поддержка платформы RISC OS и значительно улучшена поддержка архитектуры ARM. Добавлены оптимизации для CPU ARM и DSP TI C64x+. Предложено три уровня скорости кодирования (старый уровень 2 переименован в 3, а вместо второго предложен новый промежуточный уровень).

  1. OpenNews: Разработчики Chrome и Firefox рассматривают возможность прекращения поддержки видеокодека Theora
  2. OpenNews: Финальный релиз видеокодека Theora 1.1
  3. OpenNews: Сообщество Xiph.Org представило видеокодек Daala с технологиями, опережающими VP9 и H.265/HEVC
  4. OpenNews: Доступен аудиокодек Opus 1.5
  5. OpenNews: Опубликован свободный звуковой кодек FLAC 1.5
Обсуждение (167 +42) | Тип: К сведению |
·29.03.2025 Представлен формат сжатия изображений Spectral JPEG XL (74 +35)
  Инженеры из компании Intel представили формат изображений Spectral JPEG XL, оптимизированный для эффективного сжатия изображений, охватывающих области спектра за границей диапазона видимого излучения. Предложенный формат предоставляет возможности, аналогичные спектральной редакции формата OpenEXR, но в отличие от последнего обеспечивает кодирование с потерями, что позволяет добиться сокращения размера файлов в 10-60 раз по сравнению со сжатием без потерь.

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

Съёмка с захватом диапазонов вне видимого спектра даёт возможность более точно моделировать взаимодействие света с материалами, но приводит к значительному увеличению информации, хранимой для каждого пикселя. Спектральные изображения могут включать десятки каналов, охватывающих различные диапазоны длин волн, и использовать для каждого канала 16- или 32-разрядные числа с плавающей запятой, что позволяет охватить более широкий диапазон значений яркости, чем на обычных фотографиях. Ценой подобной возможности становится существенное увеличение размера по сравнению с традиционными изображениями. В качестве примера упомянуто изображение с 81 дополнительным спектральным каналом, занимающее в формате OpenEXR 300 МБ. При помощи Spectral JPEG XL данное изображение удалось сжать до 3.9 МБ без потери спектральных характеристик.

Для сокращения размера Spectral JPEG XL использует разделение данных о яркости и форме спектра, и применяет дискретное косинусное преобразование, позволяющее сохранить основные спектральные характеристики, но отбросить несущественные высокочастотные спектральные детали. Суть метода в преобразовании плавного изменения волновых характеристик в набор волновых коэффициентов (коэффициентов частоты), при совмещении воссоздающих исходную спектральную информацию.

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

  1. OpenNews: Уязвимости в реализации JPEG XL из состава FFmpeg
  2. OpenNews: Samsung обеспечил поддержку формата изображений JPEG XL
  3. OpenNews: В Safari 17 и WebKit включена поддержка формата изображений JPEG XL
  4. OpenNews: Google упраздняет поддержку JPEG XL в Chrome
  5. OpenNews: Представлен формат сжатия изображений QOI
Обсуждение (74 +35) | Тип: К сведению |
·29.03.2025 Релиз сборочной системы CMake 4.0.0 (130 +15)
  Представлен релиз кроссплатформенного открытого генератора сценариев сборки CMake 4.0.0, выступающего в качестве альтернативы Autotools и используемого в таких проектах, как KDE, LLVM/Clang, MySQL, MariaDB, ReactOS и Blender. Код CMake написан на языке C++ и распространяется под лицензией BSD.

CMake примечателен предоставлением простого языка сценариев, средствами расширения функциональности через модули, поддержкой кэширования, наличием инструментов для кросс-компиляции, поддержкой генерации файлов сборки для широкого спектра систем сборки и компиляторов, наличием утилит ctest и cpack для определения сценариев тестирования и сборки пакетов, утилитой cmake-gui для интерактивной настройки параметров сборки.

Основные изменения:

  • Прекращена совместимость с версиями CMake до выпуска 3.5. При привязке к неподдерживаемым версиям в функциях cmake_minimum_required() и cmake_policy() теперь будет выводиться ошибка.
  • Добавлена переменная окружения "CMAKE_POLICY_VERSION_MINIMUM" для переопределения минимальной версии CMake, функциональность которой необходима для сборки проекта. Добавленная переменная позволяет обойтись без изменения вызовов cmake_minimum_required(VERSION) и cmake_policy(VERSION) в самом проекте, например, для настройки политики версий в проектах, не предусматривающих такую возможность.
  • В выражение генератора "$<PATH>" добавлена операция "NATIVE_PATH" для преобразования файлового пути из представления CMake (для разделения каталогов всегда используется "/"), в системный путь (в Unix-подобных системах используется "/", а в Windows - "\").
  • На платформе macOS при использовании генераторов сборочных сценариев на базе инструментария Ninja и генераторов Makefile, если в каталоге "/usr/bin" присутствует компилятор, то он отныне оставляется как есть, без привязки к компилятору в Xcode. При сборке для платформы macOS по умолчанию прекращён выбор SDK и передача компилятору флага "-isysroot" (SDK теперь выбирает сам компилятор, а не CMake).
  • Добавлено свойство LINK_WARNING_AS_ERROR, при котором предупреждения компоновщика будут трактоваться как ошибки. Для отключения действия данного свойства добавлена опция командной строки "--link-no-warning-as-error".
  • В утилиту cmake добавлена опция "--project-file" для задания альтернативного имени файла CMakeLists.txt.
  • В генератор CPack добавлена возможность создания несжатых tar-архивов.
  • В команду target_link_libraries() и переменные CMAKE_EXE_LINKER_FLAGS*, CMAKE_SHARED_LINKER_FLAGS*, CMAKE_MODULE_LINKER_FLAGS* добавлена поддержка префикса "LINKER:".
  • Добавлены новые переменные:
  • Добавлены новые свойства: DEBUGGER_WORKING_DIRECTORY и VS_SOLUTION_ITEMS (для прикрепления файлов к .sln для Visual Studio).
  • Обеспечено формирование готовых сборок CMake для SunOS для архитектур sparc64 и x86_64.

  1. OpenNews: Релиз системы сборки CMake 3.28
  2. OpenNews: Facebook опубликовал систему сборки Buck2
  3. OpenNews: Проект Сicada развивает систему автоматизации сборок, похожую на GitHub Actions
  4. OpenNews: Выпуск сборочной системы Meson 1.7.0
  5. OpenNews: Компания Apple открыла код сборочной системы Swift Build
Обсуждение (130 +15) | Тип: Программы |
·28.03.2025 Выявлена возможность обхода ограничений доступа к "user namespace" в Ubuntu (73 +21)
  Исследователи безопасности из компании Qualys выявили три способа обхода применяемых в Ubuntu ограничений доступа к пространству имён идентификаторов пользователя (user namespace). Начиная с выпуска 23.10 в Ubuntu применяется дополнительный слой изоляции, не позволяющий обычным непривилегированным пользователям создавать "user namespace". Сам по себе доступ к "user namespace" не является уязвимостью и многие дистрибутивы предоставляют его из коробки, так как он требуется в системах контейнерной изоляции и используется для sandbox-ограничений (например применяется для sandbox-изоляции браузеров).

Пространства имён (namespace) в ядре Linux позволяют привязать к разным процессам разные представления ресурсов, например, процесс может быть помещён в окружение со своими точками монтирования, IPC, PID и сетевым стеком, которые не пересекаются с окружением других процессов. При помощи "user namespace" непривилегированный процесс в контексте изолированного контейнера может обращаться к подсистемам ядра, в обычных условиях требующих повышенных привилегий, но оставаться при этом непривилегированным вне контейнера.

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

В Ubuntu в качестве дополнительного уровня защиты была реализована гибридная схема, выборочно оставляющая некоторым программам возможность создавать "user namespace" при наличии профиля AppArmor с правилом "allow userns create" или прав CAP_SYS_ADMIN. Подобная защита позволяла уменьшить риск эксплуатации уязвимостей в подсистемах ядра (сократить поверхность атаки), но при этом сохранить возможность полноценной sandbox-изоляции в избранных приложениях.

Создание "user namespace" с привилегированным доступом внутри контейнера представляет угрозу только если в системе не установлены все доступные обновления и в ядре присутствует известная неисправленная уязвимость. Выявлено три способа обхода механизма ограничения доступа к "user namespace", позволяющих непривилегированному локальному пользователю создать "user namespace" c привилегиями администратора внутри, достаточными для выполнения эксплоитов, требующих прав CAP_SYS_ADMIN или CAP_NET_ADMIN:

  • Атакующий может использовать утилиту aa-exec, входящую в базовую поставку, для применения к себе имеющихся в системе профилей AppArmor, среди прочего и тех, что разрешают доступ к "user namespace". Например, можно применить к своему процессу профили от chrome, flatpak и trinity.
    
       $ aa-exec -p trinity -- unshare -U -r -m /bin/sh
    
  • Атакующий может запустить командную оболочку из пакета busybox, поставляемого по умолчанию и снабжённого профилем AppArmor, допускающим создание "user namespace".
    
       $ busybox sh
       ~$ /usr/bin/unshare -U -r -m /bin/sh
    
  • Атакущий может использовать переменную окружения LD_PRELOAD для загрузки своей библиотеки в контексте любой программы, имеющей AppArmor-профиль для доступа к "user namespace". Например, подобные права имеет файловый менеджер nautilus в Ubuntu Desktop.
    
       LD_PRELOAD=./shell.so /usr/bin/nautilus
    

Для блокирования найденных лазеек разработчики Ubuntu рекомендуют отключить возможность изменения профилей AppArmor утилитой aa-exec, выставив настройку "sysctl kernel.apparmor_restrict_unprivileged_unconfined=1". Также рекомендовано деактивировать профили AppArmor у приложений, имеющих доступ к "user namespace". В поставке по умолчанию подобные профили присутствуют у busybox и nautilus, а для проверки наличия отдельно установленных программ с подобными правами можно использовать команду "sudo aa-status --filter.mode=unconfined". Для отключения AppArmor-профилей busybox и nautilus (если не требуется использование утилит busybox с "user namespace" и можно обойтись без генерации миниатюр в nautilus) следует использовать команды:


   sudo ln -s /etc/apparmor.d/busybox /etc/apparmor.d/disable
   sudo apparmor_parser -R /etc/apparmor.d/busybox
   sudo ln -s /etc/apparmor.d/nautilus /etc/apparmor.d/disable
   sudo apparmor_parser -R /etc/apparmor.d/nautilus

Дополнительно можно отметить раскрытие сведений об уязвимости (CVE-2025-0927) в драйвере HFS+, позволяющей получить root-привилегии в системе. Проблема вызвана переполнением буфера, возникающем при обработке специально сформированных образов ФС. Для эксплуатации уязвимости требуется доступ к созданию "user namespace" или монтированию дисковых образов (например, пользователям Ubuntu с активным локальным сеансом polkit предоставляет право создания loop-устройств и монтирования блочных устройств, применяемые для автоподключения USB Flash). Проблема проявляется только в ядрах Linux до версии 6.12. Опубликован рабочий эксплоит, использование которого продемонстрировано в Ubuntu 22.04 с ядром 6.5.0-18-generic.

  1. OpenNews: Уязвимости в утилите needrestart, позволяющие получить root-доступ в Ubuntu Server
  2. OpenNews: Уязвимость в OpenSSH, позволяющая удалённо выполнить код с правами root на серверах с Glibc
  3. OpenNews: Уязвимость в glibc, позволяющая получить root-доступ в системе
  4. OpenNews: Уязвимость в Glibc ld.so, позволяющая получить права root в большинстве дистрибутивов Linux
  5. OpenNews: Локальная уязвимость в ядре Linux, эксплуатируемая через nftables
Обсуждение (73 +21) | Тип: Проблемы безопасности |
Следующая страница (раньше) >>



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

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