· | 30.03.2025 | Опубликован свободный видеокодек Theora 1.2 (72 +25) |
Организация 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, а вместо второго предложен новый промежуточный уровень).
| ||
Обсуждение (72 +25) |
Тип: К сведению |
| ||
· | 29.03.2025 | Представлен формат сжатия изображений Spectral JPEG XL (68 +22) |
Инженеры из компании Intel представили формат изображений Spectral JPEG XL, оптимизированный для эффективного сжатия изображений, охватывающих области спектра за границей диапазона видимого излучения. Предложенный формат предоставляет возможности, аналогичные спектральной редакции формата OpenEXR, но в отличие от последнего обеспечивает кодирование с потерями, что позволяет добиться сокращения размера файлов в 10-60 раз по сравнению со сжатием без потерь.
Спектральные изображения содержат не только информацию об интенсивности света в трех основных цветовых каналах (RGB), но охватывают часть ультрафиолетового и инфракрасного диапазонов. Подобные изображения используются в таких областях, как высококачественный рендеринг, анализ материалов и визуализация научных данных. Например, спектральные изображения могут использоваться для точного моделирования реальных оптических эффектов при рендеринге, для оценки того, как выглядит краска при различном освещении, и для идентификации материалов по их световым сигнатурам. Съёмка с захватом диапазонов вне видимого спектра даёт возможность более точно моделировать взаимодействие света с материалами, но приводит к значительному увеличению информации, хранимой для каждого пикселя.
Спектральные изображения могут включать десятки каналов, охватывающих различные диапазоны длин волн, и использовать для каждого канала 16- или 32-разрядные числа с плавающей запятой, что позволяет охватить более широкий диапазон значений яркости, чем на обычных фотографиях. Ценой подобной возможности становится существенное увеличение размера по сравнению с традиционными изображениями. В качестве примера упомянуто изображение с 81 дополнительным спектральным каналом, занимающее в формате OpenEXR 300 МБ. При помощи Spectral JPEG XL данное изображение удалось сжать до 3.9 МБ без потери спектральных характеристик.
![]() Для сокращения размера Spectral JPEG XL использует разделение данных о яркости и форме спектра, и применяет дискретное косинусное преобразование, позволяющее сохранить основные спектральные характеристики, но отбросить несущественные высокочастотные спектральные детали. Суть метода в преобразовании плавного изменения волновых характеристик в набор волновых коэффициентов (коэффициентов частоты), при совмещении воссоздающих исходную спектральную информацию. Более высокочастотные спектральные коэффициенты затем нормируются по отношению к общей яркости, что позволяет агрессивнее сжимать менее значимые данные. Идея в том, что с точки зрения восприятия наиболее важна средняя яркость и она сохраняется с наиболее высоким качеством, а коэффициенты высоких частот не столь важны и к ним применяется более высокий уровень сжатия и опционально более низкие разрешения. После этого информацию обрабатывает кодек, реализованный на базе существующего движка сжатия, разработанного для формата JPEG XL.
| ||
Обсуждение (68 +22) |
Тип: К сведению |
| ||
· | 29.03.2025 | Релиз сборочной системы CMake 4.0.0 (100 +9) |
Представлен релиз кроссплатформенного открытого генератора сценариев сборки CMake 4.0.0, выступающего в качестве альтернативы Autotools и используемого в таких проектах, как KDE, LLVM/Clang, MySQL, MariaDB, ReactOS и Blender. Код CMake написан на языке C++ и распространяется под лицензией BSD.
CMake примечателен предоставлением простого языка сценариев, средствами расширения функциональности через модули, поддержкой кэширования, наличием инструментов для кросс-компиляции, поддержкой генерации файлов сборки для широкого спектра систем сборки и компиляторов, наличием утилит ctest и cpack для определения сценариев тестирования и сборки пакетов, утилитой cmake-gui для интерактивной настройки параметров сборки. Основные изменения:
| ||
Обсуждение (100 +9) |
Тип: Программы |
| ||
· | 28.03.2025 | Выявлена возможность обхода ограничений доступа к "user namespace" в Ubuntu (74 +19) |
Исследователи безопасности из компании 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:
Для блокирования найденных лазеек разработчики 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.
| ||
Обсуждение (74 +19) |
Тип: Проблемы безопасности |
| ||
· | 28.03.2025 | Бета-выпуск Ubuntu 25.04 (233 +10) |
Представлен бета-выпуск дистрибутива Ubuntu 25.04 "Plucky Puffin", после формирования которого произведена полная заморозка пакетной базы, и разработчики перешли к итоговому тестированию и исправлению ошибок. Релиз запланирован на 17 апреля и отнесён к промежуточным выпускам, обновления для которых формируются в течение 9 месяцев. Готовые тестовые образы созданы для Ubuntu, Ubuntu Server, Lubuntu, Kubuntu, Ubuntu Mate, Ubuntu Budgie, Ubuntu Studio, Xubuntu, UbuntuKylin (редакция для Китая), Ubuntu Unity, Edubuntu и Ubuntu Cinnamon.
Основные изменения:
| ||
Обсуждение (233 +10) |
Тип: Программы |
| ||
· | 27.03.2025 | Утечка пользовательской базы списка рассылки автора сервиса HaveIBeenPwned (81 +47) |
Трой Хант (Troy Hunt), известный деятель в области компьютерной безопасности, автор курсов по защите информации, создатель сервиса проверки скомпрометированных паролей "Have I Been Pwned?" и региональный директор Microsoft, раскрыл сведения об утечке базы пользователей собственного списка рассылки. История показательна тем, что даже признанные специалисты в области компьютерной безопасности могут стать жертвами типового фишинга при определённом стечении обстоятельств.
Трою пришло письмо от имени сервиса Mailchimp c предупреждением о приостановке работы его списка рассылки и необходимости выполнения определённых проверок. Трой перешёл по ссылке в письме, ввёл на открывшейся странице параметры учётной записи в Mailchimp, подтвердил запрос двухфакторной аутентификации и страница зависла...., а атакующие получили доступ к пользовательской базе его списка рассылки и выгрузили сведения о email и IP-адресах 16627 подписчиков. Примечательно, что в выгрузку вошли 7535 адресов пользователей, ранее отписавшихся от рассылки, но сервис Mailchimp сохранил их несмотря на отписку и включил в экспортируемые данные. Трой не стал умалчивать свою оплошность и подробно разобрал инцидент в своём блоге, а также добавил информацию об утечке на свой сервис haveibeenpwned.com. Трой считает, что он не заподозрил подвоха из-за стечения нескольких факторов. Во время получения письма Трой был в поездке, не адаптировался после смены часовых поясов и был сильно уставшим. Письмо было прочитано именно в тот момент, когда бдительность была подавлена. Вторым фактором стало то, что письмо вначале было просмотрено на iPhone с почтовым клиентом Outlook, который показал только имя отправителя и не отобразил email. Затем, когда письмо было повторно открыто утром на компьютере, Трой не стал перепроверять параметры и не обратил внимание на то, что письмо отправлено с подозрительного адреса "hr@group-f.be". Текст был стилизован под стандартное сообщение Mailchimp и предупреждал об ограничении отправки рассылки из-за получения жалобы на спам. Информация была подана ровно в той мере, чтобы вызвать беспокойство, но не переусердствовать. В письме предлагалось проверить недавно отправленные рассылки и предпринять действия для разблокировки. По ссылке вместо mailchimp.com открылся сайт mailchimp-sso.com. Менеджер паролей 1Password автоматически не заполнил форму входа, но и это было проигнорировано. После зависания формы аутентификации Трой очнулся и перезашёл на реальный сайт Mailchimp, но было уже поздно - атакующие использовали захваченные учётные данные для получения токена для доступа к API и выполнили экспорт информации.
| ||
Обсуждение (81 +47) |
Тип: Проблемы безопасности |
| ||
· | 27.03.2025 | В Live-образах Debian 12 реализована поддержка повторяемых сборок (112 +22) |
Разработчики проекта Debian объявили о реализации повторяемых сборок для всех официальных Live-образов Debian 12.10, а также для сборок всех значительных сред рабочего стола из репозиториев Debian 11, 12 и 13 (testing). Подготовлена инструкция, при помощи которой на основе доступных в репозитории исходных текстов пользователи могут сформировать свои Live-образы, на 100% идентичные на бинарном уровне с предоставляемыми проектом готовыми Live-образами.
Во всём репозитории Debian 12, насчитывающем 33223 исходных пакетов, поддержка повторяемых сборок достигла 96.9% для архитектуры x86_64 и 96.5% для архитектуры ARM64. В репозиториях Debian Testing уровень повторяемых сборок оценён в 96.5% для архитектуры ARM64 и 96.3% для x86_64 при пересборке 37322 исходных пакетов. Тест повторяемых сборок в репозитории Debian Testing провален для 819 пакетов (2.2%), а у 428 пакетов (1.1%) возникли общие проблемы при компиляции из исходного кода. Для сравнения в Arch Linux возможность повторяемой сборки реализована для 86.3% пакетов из репозиторев core и extra, насчитывающих 12800 пакетов. В репозитории openSUSE Factory, насчитывающем 15754 пакета, уровень повторяемых сборок составляет 98.24%. Повторяемые сборки дают возможность пользователю сформировать собственные сборки, побитово совпадающие с предлагаемыми для загрузки готовыми сборками. Пользователь может лично убедиться, что распространяемые в пакетах и загрузочных образах бинарные файлы собраны из предоставляемых исходных текстов и не содержат скрытых изменений. Проверка тождественности бинарной сборки позволяет не полагаться лишь на доверие к сборочной инфраструктуре дистрибутива, компрометация компилятора или сборочного инструментария в которой может привести к подстановке скрытых закладок. При формировании повторяемых сборок учитываются такие нюансы, как точное соответствие зависимостей; использование неизменного состава и версий сборочного инструментария; идентичный набор опций и настроек по умолчанию; сохранение порядка сборки файлов (применение тех же методов сортировки); отключение добавления компилятором непостоянной служебной информации, такой как случайные значения, ссылки на файловые пути и данные о дате и времени сборки. На воспроизводимость сборок также влияют ошибки и состояния гонки в инструментарии.
| ||
Обсуждение (112 +22) |
Тип: К сведению |
| ||
· | 27.03.2025 | В ядро Linux добавлена поддержка работы в качестве хост-системы для Hyper-V (100 +13) |
В состав кодовой базы ядра Linux, на основе которой формируется выпуск 6.15, принято изменение, добавляющее возможность использования Linux в качестве корневого окружения (Dom0. root partition) для гипервизора Hyper-V (Microsoft Hypervisor). Хост-окружение отвечает за управление гипервизором, организацию запуска гостевых систем, выделение ресурсов и обеспечение взаимодействия виртуальных машин с оборудованием. Управления гипервизором в Linux осуществляется через устройство /dev/mshv. Кроме того, в том же наборе патчей для виртуальных машин, использующих Hyper-V, добавлена возможность отключения на лету отдельных процессорных ядер (CPU offlining).
Изначально возможность использования Linux в роли хост-окружения для системы виртуализации Hyper-V была представлена в 2020 году. Linux для управления Hyper-V уже применяется в дистрибутиве Azure Linux и инфраструктуре Microsoft, но для сторонних проектов подобная возможность была доступна только в форме отдельных патчей. Теперь данные патчи включены в основной состав ядра. Драйверы Hyper-V для гостевых систем были добавлены в ядро Linux в 2009 году и поставляются начиная с выпуска 2.6.32. Необходимость использования Linux для управления гипервизором Hyper-V обусловлена желанием упростить сопровождение и повысить производительность серверов, обслуживающих облачные системы Microsoft, в условиях того, что с 2018 года число гостевых систем с Linux в облачном сервисе Azure превышает число окружений с Windows. ![]() Отдельно компания Microsoft опубликовала обновление открытого проекта Hyperlight, развивающего гипервизор для встраивания в приложения. Гипервизор оформлен в виде разделяемой библиотеки, обеспечивающей выполнение отдельных функций в легковесных виртуальных машинах (micro-VM) и организующей обмен данными с этими функциями. Hyperlight может потребоваться, например, при необходимости изоляции части кода, не заслуживающего доверия или требующего особой защиты. Из изменений отмечается реализация надстройки hyperlight-wasm, позволяющей запускать в отдельных виртуальных машинах Wasm-модули и компоненты, скомпилированные в промежуточный код WebAssembly. Предполагается, что использование виртуальной машины обеспечит более надёжную изоляцию при необходимости запуска стороннего WebAssembly-кода. Hyperlight-Wasm может использоваться в Windows (WHP - Windows Hypervisor Platform) и в Linux (KVM или Hyper-V через /dev/mshv). Для выполнения WebAssembly-кода применяется специальный урезанный образ гостевой системы, применяющий runtime Wasmtime для запуска WebAssembly-компонентов, скомпилированных из кода на различных языках программирования. В виртуальной машине используется единый линейный фрагмент памяти. Работа осуществляется без виртуальных устройств, без операционной системы и без разделения на процессы. Запуск виртуальной машины производится с минимальными задержками и накладными расходами - создание легковесной виртуальной машины hyperlight занимает всего 1-2 миллисекунды, что в 100 раз меньше, чем при запуске обычной виртуальной машины. ![]() Дополнительно можно отметить принятие в ветку ядра Linux 6.15 патча с поддержкой блочных устройств, у которых размер блока превышает страницу памяти. Например, Linux теперь сможет работать с устройствами с размером сектора 64Кб на системах со страницами памяти, размером 4Кб.
| ||
· | 26.03.2025 | Google переходит к разработке Android за закрытыми дверями с открытием кода после релизов (229 –31) |
Компания Google начиная со следующей недели переходит на новую модель разработки платформы Android, в соответствии с которой релизы будут развиваться за закрытыми дверями, без публикации в открытом доступе промежуточных результатов разработки и без публичного рецензирования изменений в отдельных компонентах. Платформа продолжит быть открытой и распространяться под лицензией Apache 2.0, но исходный код в репозитории AOSP (Android Open Source Project) будет размещаться только после готовности релизов.
В настоящее время какие-то части платформы, такие как Bluetooth-стек, развиваются публично, а какие-то вначале создаются во внутреннем репозитории Google и становятся доступны только при публикации кода очередного релиза. Публикация кода с новыми API зависит от их пригодности для тестирования - для некоторых версий Android код реализаций API публиковался до релиза, а для некоторых - после. Кроме Google доступ к внутренней ветке имеют производители устройств, подписавшие лицензионное соглашение GMS (Google Mobile Services). Компания Google решила отказаться от практикуемой до сих пор смешанной модели и в будущем перенесёт разработку всех компонентов Android в свою внутреннюю ветку. Вместо двух веток - открытой и внутренней, при разработке будет использоваться только внутренняя ветка, код из которой станет открываться в привязке к релизам. После перехода на модель разработки с одной активной веткой для сторонних участников код платформы по-прежнему останется доступен, но уже не получится непрерывно отслеживать разработку отдельных компонентов Android, код которых будет размещаться не по мере принятия патчей, а только после готовности релиза. Среди компонентов, разработка которых будет переведена с открытой на внутреннюю ветку упоминаются система сборки, движок обновлений, Bluetooth-стек, фреймворк виртуализации и конфигурация SELinux. Предполагается, что изменение не повлияет на разработчиков производных продуктов и прошивок, основанных на AOSP, так как подобные сборки, как правило, формируются на основе определённых тегов или веток в репозитории, а не используют находящуюся в разработке нестабильную ветку "main". Затруднения могут возникнуть у разработчиков, заинтересованных в отслеживании изменений - вместо анализа непрерывного потока изменений придётся изучать целиком все изменения в релизе. Усложнится и участие сторонних разработчиков, желающих вносить свой вклад в проект, так как состояние кодовой базы в AOSP будет сильно отставать от ветки, находящейся в разработке. Целью изменения называется желание упростить процесс разработки Android. Наличие двух веток, при том, что часть компонентов развивается в одной ветке, а часть в другой, приводит к тому, что по мере разработки релиза в ветках накапливаются различия и Google приходится тратить ресурсы на синхронизацию изменений и слияние патчей между открытой и внутренней ветками. Основная работа по развитию API ведётся во внутренней ветке, и открытая ветка часто сильно отстаёт от неё, что приводит к возникновению конфликтов при переносе во внутреннюю ветку изменений из компонентов, развиваемых в открытой ветке.
| ||
Обсуждение (229 –31) |
Тип: К сведению |
Интересно
| ||
· | 26.03.2025 | Для KDE разрабатывают новый менеджер входа для замены SDDM (227 +36) |
Дэвид Эдмундсон (David Edmundson) и Оливер Бирд (Oliver Beard) представили в списке рассылки разработчиков KDE проект по созданию нового дисплейного менеджера - Plasma Login Manager. Желание заменить менеджер входа объясняется наличием не решаемых архитектурных проблем в дисплейном менеджере SDDM (Simple Desktop Display Manager), который начиная с Plasma 5 пришёл на смену KDM.
В качестве золотого стандарта, на который стоит ориентироваться при создании нового менеджера входа, отмечен GDM (GNOME Display Manager). GDM базируется на технологиях GNOME Shell и Mutter, и сильно завязан на них, что позволило добиться уровня интеграции с GNOME, недостижимого при использовании SDDM. В Plasma Login Manager пытаются воплотить похожую на GDM архитектуру, позволяющую более тесно интегрировать менеджер входа со средой рабочего стола KDE Plasma и композитным сервером Кwin. Проблемы возникли из-за того, что SDDM развивается как универсальный менеджер входа, написанный на Qt и подходящий для всех графических окружений. SDDM рассчитан на вывод одного окна с экраном входа, но разработчикам KDE требуется более тесная интеграция, чем просто окно, показывающее сеансы и пользователей. В SDDM также применяется собственная реализация функций управления энергопотреблением со своей системой настройки. Без усложнений SDDM не получается интегрировать с имеющимися в KDE Plasma средствами управления громкостью, яркостью, энергопотреблением и сетевыми соединениями. В SDDM также имеется проблема с дублированием функциональности, которая уже имеется в KDE, что значительно усложняет сопровождение. В итоге был подготовлен прототип нового многопроцессного менеджера входа Plasma Login Manager, использующий бэкенд на основе урезанной версии SDDM и механизм запуска, идентичный тому, что применяется для запуска сеанса рабочего стола KDE Plasma. Оформление экрана входа приближено к существующему блокировщику экрана KDE, а настройки унифицированы с KDE Plasma. Разработчики отказались от использования QML для кастомизации тем оформления в пользу поддержки существующих плагинов обоев рабочего стола, цветовых схем и тем оформления Plasma. Для тестирования доступен рабочий прототип Plasma Login Manager, который пока не доведён до уровня качества, пригодного для использования в стабильной ветке KDE Plasma. Бэкенд на основе кода SDDM и новый фронтэнд, а также модуль для конфигуратора (KCM) пока развиваются в отдельных репозиториях, которые в будущем планируют объединить. По возможностям Plasma Login Manager почти достиг паритета со старым менеджером входа. Среди возможностей, которые намерены реализовать в Plasma Login Manager:
![]()
| ||
· | 26.03.2025 | Компания Cloudflare опубликовала opkssh для аутентификации в SSH через OpenID Connect (152 +10) |
Компания Cloudflare представила инструментарий opkssh (OpenPubkey SSH), позволяющий интегрировать в OpenSSH средства централизованной аутентификации с возможностью входа через провайдеров OpenID Connect. При помощи opkssh можно избавиться от ручной работы по настройке SSH-ключей, а также организовать подключение к серверу с любых хостов, без необходимости создания закрытых ключей на каждом клиентском компьютере и без ручного копирования открытых ключей на сервер. Для подключения достаточно выполнить на сервере привязку к учётной записи у провайдера OpenID. Код инструментария написан на языке Go и распространяется под лицензией Apache 2.0.
Opkssh совместим с OpenID-провайдерами Google, Microsoft/Azure и Gitlab, что позволяет настроить вход через имеющиеся учётные записи в сервисах gmail.com, microsoft.com и gitlab.com. При использовании opkssh вместо не ограниченных по времени ключей SSH генерируются временные ключи, действующие считанные часы и формируемые на основе подтверждения от провайдера OpenID. Утечка подобных ключей после окончания срока действия не представляет угрозы безопасности. По умолчанию время действия ключа составляет 24 часа, после которых необходимо повторно идентифицировать себя через OpenID Connect. Интеграция с OpenSSH основана на возможности создания расширений протокола SSH, допускающих прикрепление произвольных данных к сертификатам SSH. После прохождения аутентификации через OpenID Connect клиент формирует открытый ключ, содержащий PK-токен, подтверждающий принадлежность ключа заявленному пользователю. Токен интегрируется в протокол SSH через поле с дополнительными данными SSH-сертификата. Создание PK-токенов и их проверка на стороне сервера осуществляется с использованием криптографического протокола OpenPubKey. OpenPubKey позволяет сгенерировать открытый ключ и привязать его к токену, выданному OpenID-провайдером. Через цифровую подпись провайдер подтверждает, что этот ключ создан заявленным аутентифицированным пользователем. Например, OpenID-провайдер Google может подтвердить, что пользователь аутентифицирован как test@gmail.com. На стороне севера выполняется проверка подписан ли прикреплённый токен провайдером OpenID и соответствует ли цифровая подпись заявленному открытому ключу, т.е. сервер может удостовериться,
что именно пользователь test@gmail.com создал открытый ключ для подключившегося SSH-клиента.
![]() Интеграция с OpenSSH организована через указание программы opkssh в файле конфигурации "sshd_config" через директиву "AuthorizedKeysCommand" (например: "AuthorizedKeysCommand /usr/local/bin/opkssh verify %u %k %t"). Настройка связывания учётных записей с OpenID Connect осуществляется на стороне сервера SSH. На стороне клиента SSH изменения настроек не требуется, но перед входом необходимо запустить команду "opkssh login" и в появившемся окне браузера выбрать провайдера OpenID и выполнить через него аутентификацию. Утилита opkssh сгенерирует ключи SSH и получит PK-токен, подтверждающий, что пользователь прошёл аутентификацию и позволяющий проверить, что созданные ключи принадлежат заявленному пользователю. Открытый ключ SSH, к которому через поле с дополнительными данными прикреплён PK-токен, будет записан в файл ~/.ssh/id_ecdsas и начнёт передаваться при подключении к серверу утилитой ssh. Подключение к серверу производится с использованием штатной для SSH схемы "ssh логин@сервер", при этом на сервере логин предварительно должен быть отождествлён с учётной записью в OpenID, которую использует пользователь. Таким образом работа сводится к тому, что ssh-клиент отправляет на ssh-сервер публичный ключ, а сервер запускает команду "opkssh verify" для проверки ключа. Для привязки учётной записи к OpenID администратор сервера выполняет команду "opkssh add". Например, для того чтобы разрешить вход на сервер под пользователем "root" с OpenID-аутентификацией через учётную запись test@gmail.com в Gmail следует выполнить "sudo opkssh add root test@gmail.com google", после чего клиент сможет подключаться под параметрами данной учётной записи командой "ssh root@хост_сервера". Привязку учётной записи также можно выполнить вручную через файл конфигурации /etc/opk/auth_id (или ~/.opk/auth_id), в который для вышеприведённого примера будет записана строка "root test@gmail.com https://accounts.google.com". Дополнительно через файл
/etc/opk/providers можно определить список допустимых OpenID-провайдеров, их параметры и список разрешённых идентификаторов клиентов.
![]()
| ||
Обсуждение (152 +10) |
Тип: К сведению |
| ||
· | 25.03.2025 | Уязвимости в ingress-nginx, позволяющие выполнить код и захватить управление кластерами Kubernetes (87 +18 ↻) |
В развиваемом проектом 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 Дополнение: Опубликован готовый прототип эксплоита для тестирования проявления уязвимости.
| ||
Обсуждение (87 +18 ↻) |
Тип: Проблемы безопасности |
Интересно
| ||
· | 25.03.2025 | Разработчики GRUB2 рассматривают возможность использования языка Rust (196 +9) |
Владимир Сербиненко, один из трёх мэйнтейнеров загрузчика 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.
| ||
Обсуждение (196 +9) |
Тип: К сведению |
| ||
· | 25.03.2025 | Windows Defender блокирует свободный драйвер WinRing0, используемый в официальном OEM-ПО (111 +11) |
Начиная с 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).
| ||
· | 24.03.2025 | Релиз ядра Linux 6.14 (121 +37) |
После двух месяцев разработки Линус Торвальдс представил релиз ядра 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:
| ||
Обсуждение (121 +37) |
Тип: Программы |
Интересно
| ||
Следующая страница (раньше) >> |
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |