Вернер Кох (Werner Koch), основной разработчик и создатель проекта GnuPG (GNU Privacy Guard), основал проект LibrePGP, сосредоточенный на развитии обновлённой спецификации, альтернативной стандарту OpenPGP. Форк был создан в ответ на изменения, намеченные рабочей группой IETF для внесения в следующее обновление спецификации OpenPGP (RFC-4880) и воспринятые Кохом как сомнительные с точки зрения сохранения совместимости и обеспечения безопасности. Поддержавшие форк разработчики проектов GnuPG, RNP (реализация OpenPGP от Thunderbird) и Gpg4win опасаются, что намеченные изменения окажутся губительны для существующих внедрений приложений на базе OpenPGP, пользователи которых рассчитывают на стабильность спецификации в длительной перспективе и не готовы мириться с изменениями, нарушающими совместимость.
LibrePGP включает полезные улучшения, последние годы развивавшиеся для будущего варианта спецификации OpenPGP, но при этом исключает изменения, негативно влияющие на обеспечение совместимости. Например, по сравнению с действующим стандартом RFC-4880 в LibrePGP приняты такие возможности, как:
Поддержка алгоритма шифрования Camellia (RFC-5581),
Расширения ECC (Elliptic Curve Cryptography) для OpenPGP (RFC-6637).
Обязательная поддержка хэшей SHA2-256 (SHA-1 и MD5 отнесены к категории не рекомендованных, а возможность расшифровки данных без версификации целостности отнесена к категории полностью устаревших).
Увеличение до 256 бит размера проверочного слепка (fingerprint).
Поддержка схемы цифровых подписей EdDSA и эллиптических кривых BrainpoolP256r1, BrainpoolP384r1, BrainpoolP512r1, Ed25519, Curve25519, Ed488 и X448.
Поддержка алгоритма CRYSTALS-Kyber, устойчивого к подбору на квантовых компьютерах.
Поддержка режимов аутентифицированного шифрования OCB (Offset codebook mode).
Реализация пятой версии формата цифровых подписей с защитой метаданных.
Поддержка расширенных субпакетов с цифровыми подписями.
Рабочая группа IETF вместо постепенного инкрементального обновления спецификации попыталась заново переизобрести стандарт и внести в него значительные изменения, нарушающие совместимость.
Навязывание поддержки симметричного режима шифрования GCM (Galois/Counter Mode), который трудно реализовать правильно, игнорируя при этом режим OCB (Offset codebook mode), патенты на который истекли несколько лет назад.
Добавление опциональных пакетов со случайным добавочным заполнением для защиты от анализа трафика. По мнению создателей LibrePGP, подобные пакеты с непроверяемым начальным случайным заполнением создают угрозу использования для создания скрытых каналов передачи данных и обхода систем предотвращения утечек данных. Ранее идея включения добавочного заполнения отвергалась, как являющаяся объектом не уровня шифрования, а уровня приложения.
Применение модифицированной схемы шифрования ECDH (изменение формата OID), вместо использования уже описанного в RFC-6637 и реализованного в PGP и GnuPG варианта.
Удаление некоторых используемых на практике возможностей, таких как классический метод отзыва ключей, флаг "m" для пометки MIME-данных и флаг "t" для отделения текстовых данных от бинарных (на смену флагу "t" пришёл флаг "u" для текста в кодировке UTF-8).
Отказ включать в новый формат подписей защиту метаданных подписанного файла (например, можно не нарушая подписи изменить имя файла).
Сомнительная возможность добавления "соли" к подписям (Salted signature) для усиления защиты от коллизионных атак с заданным префиксом. Значение с солью может использоваться как неотключаемый скрытый канал для передачи 32 байт данных в подписи.
Смещение стандарта в сторону основного использования для online-коммуникации, игнорируя потребности для длительного хранения данных.
Сторонники OpenPGP уже опубликовали критику на критику. В итоге, если не удастся найти компромисс раскол может привести к нарастанию несовместимостей в реализациях OpenPGP/LibrePGP. Частично для решения этой проблемы разработчики OpenPGP зафиксировали пятую версию формата подписей в виде совместимом с LibrePGP и перешли к работе над шестой версией.
Опубликован релиз платформы Electron 28.0.0, которая предоставляет самодостаточный фреймворк для разработки многоплатформенных пользовательских приложений, использующий в качестве основы компоненты Chromium, V8 и Node.js. Значительное изменение номера версии связано с обновлением до кодовой базы Chromium 120, платформы Node.js 18.18.2 и JavaScript-движка V8 12.0.
Добавлена поддержка JavaScript-модулей ESM (ECMAScript Modules), созданных в соответствии со спецификацией ECMAScript 6 и применяемых в браузерных web-приложениях (ранее в Electron поддерживались только модули CommonJS, специфичные для Node.js). ESM-модули можно использовать как в самом Electron, так и в обработчиках на базе API UtilityProcess. Поддержка EMS-модулей также добавлена в инструментарий для сборки и публикации приложений Electron Forge.
На платформе Linux реализована обработка переменной окружения ELECTRON_OZONE_PLATFORM_HINT, упрощающей включение поддержки протокола Wayland в приложениях на базе платформы Electron (можно обойтись без добавления флага "--ozone-platform-hint" в .desktop-файл).
В объект Display добавлены свойства detected, maximumCursorSize и nativeOrigin.
Настройка WebContents.backgroundThrottling по умолчанию изменена на значение "false", отключающего ограничение частоты кадров при выводе содержимого при помощи объекта BrowserWindow.
Удалены методы BrowserWindow.setTrafficLightPosition (следует использовать BrowserWindow.setWindowButtonPosition), BrowserWindow.getTrafficLightPosition (следует использовать BrowserWindow.getWindowButtonPosition), ipcRenderer.sendTo (следует использовать MessageChannel) и app.runningUnderRosettaTranslation (следует использовать app.runningUnderARM64Translation). Прекращена поддержка событий scroll-touch-[begin|end|edge].
Платформа Electron позволяет создавать любые графические приложения с использованием браузерных технологий, логика работы которых определяется на JavaScript, HTML и CSS, а функциональность может быть расширена через систему дополнений. Разработчикам доступны модули Node.js, а также расширенный API для формирования нативных диалогов, интеграции приложений, создания контекстных меню, интеграции с системой вывода уведомлений, манипуляции окнами, взаимодействия с подсистемами Chromium.
В отличие от web-приложений, программы на базе Electron поставляются в виде самодостаточных исполняемых файлов, не привязанных к браузеру. При этом разработчику не нужно заботиться о портировании приложения для различных платформ, Electron обеспечит возможность сборки для всех систем, поддерживаемых в Chromium. Electron также предоставляет средства для организации автоматической доставки и установки обновлений (обновления можно доставлять как с отдельного сервера, так и напрямую с GitHub).
Из программ, построенных на базе платформы Electron можно отметить редакторы Atom и Visual Studio Code, почтовый клиент Mailspring, инструментарий для работы с Git GitKraken, систему ведения блогов WordPress Desktop, BitTorrent-клиент WebTorrent Desktop, а также официальные клиенты к таким сервисам, как Skype, Signal, Slack, Basecamp, Twitch, Ghost, Wire, Wrike и Discord. Всего в каталоге программ Electron представлено 756 приложений. Для упрощения разработки новых приложений подготовлен набор типовых демонстрационных приложений, включающих примеры кода для решения различных задач.
После восьми месяцев разработки опубликован релиз Minetest 5.8.0, свободного кроссплатформенного игрового движка в жанре песочница, позволяющего создавать игры в стиле MineCraft, используя различные воксельные блоки для совместного формирования игроками различных структур и построек, образующих подобие виртуального мира. Предоставляемый движком геймплей полностью зависит от набора модов, создаваемых на языке Lua. Игра написана на языке С++ c использованием 3D-библиотеки IrrlichtMt (форк Irrlicht). Код Minetest распространяется под лицензией LGPL, а игровые ресурсы под лицензией CC BY-SA 3.0. Готовые сборки формируются для различных дистрибутивов Linux, Android, FreeBSD, Windows и macOS.
Прекращена поставка вместе с движком игры по умолчанию. Наличие встроенной игры создавало ложное впечатление, что Minetest игра, а не платформа для создания и распространения игр. При первом запуске вместо запуска игры по умолчанию пользователю теперь будет предлагается выбрать интересующую игру из каталога, интерфейс для доступа к которому встроен в клиент Minetest.
Реализовано новое меню с настройками, переработанное для упрощения поиска и изменения параметров движка.
Улучшено управление на устройствах с платформой Android. Для размещения блока в игре теперь достаточно одного касания к экрану. Переделано взаимодействие с джойстиком, эмулирующим нажатие клавиш. Перемещения стали более отзывчивыми, появилась возможность движения в любом направлении и с произвольной скоростью.
Полностью переписан код, отвечающий за работу со звуком. Повышена производительность звуковой подсистемы и добавлены новые опции воспроизведения звука, например, теперь можно выбирать стартовое время и смещение в потоке. Обеспечена загрузка звуковых данных по мере необходимости, что позволяет заметно снизить потребление оперативной памяти.
Модернизирован код, обеспечивающий сглаживание текстур. Предоставлена возможность выбора между алгоритмами сглаживания FXAA и SSAA (FXAA быстрее, но менее точный, а SSAA требует больше ресурсов, но позволяет добиться более высокого качества).
Расширены возможности написания скриптов для разработчиков модов и игр, например, добавлена поддержка динамического изменения текстуры элемента на лету.
Организация Open Source Initiative (OSI), занимающаяся проверкой лицензий на предмет соответствия критериям Open Source, опубликовала результаты анализа популярности открытых лицензий, в зависимости от используемых в проектах языков программирования. В общем виде наиболее популярными признаны лицензии MIT и Apache 2.0. В зависимости от используемых языков предпочтения меняются, например, в проектах на JavaScript наиболее популярна лицензия MIT, а в проектах на Python - Apache 2.0. Лицензия BSD занимает стабильно высокие, но не лидирующие позиции. GPL также достаточно распространена, но в большинстве случаев уступает MIT, Apache 2.0 и BSD.
Популярность лицензией для разных языков:
JavaScript (репозиторий NPM): MIT (53%), Apache 2.0 (14.76%), ISC (10.48%), без указания лицензии (13.49%), BSD-3 (1.45%), GPLv3 (0.46%).
C#/.NET (Nuget): 58.71% без указания лицензии, MIT (21.55%), Apache 2.0 (13.37%), LGPLv3 (1.33%).
Java (Maven): Apache 2.0 (69.18%), без лицензии (16.89%), MIT (7.4%), LGPLv3 (1.4%).
Python (PyPI): MIT (29.14%), Apache 2.0 (23.98%), без лицензии (23.69%), BSD-2 (6.25%), GPLv3 (6.11%).
Ruby (Gem): MIT (63.11%), без лицензии (23.37%), Apache 2.0 (6.66%), BSD-3 (1.26%) .
PHP (Composer): MIT (64.37%), без лицензии (11.25%), BSD-3 (5.72%), GPLv2 (4.61%), Apache 2.0 (3.92%), LGPLv3 (1.01%).
Go: Apache 2.0 (32.49%), без лицензии (29.67%), MIT (20.1%), BSD-3 (4.04%), GPLv3 (2.42%), MPLv2.0 (2.17%).
Rust (Crate): MIT + Apache 2.0 (30.83%), MIT (27.8%), Apache 2.0 (15.82%).
После десяти месяцев разработки Представлен выпуск дистрибутива Endless OS 5.1, нацеленного на создание простой в работе системы, в которой можно быстро подобрать приложения на свой вкус. Приложения распространяются в виде самодостаточных пакетов в формате Flatpak. Размер предлагаемых загрузочных образов составляет от 1.1 до 18 ГБ.
Дистрибутив не использует традиционные пакетные менеджеры, вместо которых предлагается минимальная атомарно обновляемая базовая система, работающая в режиме только для чтения и формируемая при помощи инструментария OSTree (системный образ атомарно обновляется из Git-подобного хранилища). Идентичные с Endless OS идеи в последнее время пытаются повторить разработчики Fedora в рамках проекта Silverblue по созданию атомарно обновляемого варианта Fedora Workstation, а также создатели Vanilla OS, tau-OS и Pop!_OS. Инсталлятор и система обновления Endless OS, используются в GNOME OS.
Endless OS относится к числу дистрибутивов, продвигающих инновации среди пользовательских Linux-систем. Рабочее окружение в Endless OS основано на значительно переработанном форке GNOME. При этом разработчики Endless активно участвуют в разработке upstream-проектов и передают им свои наработки. Например, в выпуске GTK+ 3.22 около 9.8% всех изменений было подготовлено разработчиками Endless, а курирующая проект компания Endless Mobile входит в надзорный совет GNOME Foundation, наряду с FSF, Debian, Google, Linux Foundation, Red Hat и SUSE.
В состав включено приложение Endless Key, предоставляющее интерфейс для доступа к различных образовательным ресурсам и обучающим видео.
Ядро Linux обновлено до версии 6.5. Добавлены драйверы NVIDIA 530.41.03. Обновлены пакеты с прошивками.
Улучшена работа Endless OS на платах Raspberry Pi. Добавлена поддержка аппаратного ускорения графики на платах Raspberry Pi 4 и 400. Обеспечена возможность загрузки с USB-накопителя, подключённого к плате Raspberry Pi.
Улучшена реализация полос прокрутки, которые в большинстве приложений теперь всегда видны по умолчанию, а не появляются только при наведении мыши к краю окна.
В файловом менеджере по умолчанию задействован режим отображения файлов в виде сетки пиктограмм (в настройках можно вернуть показ в виде списка файлов).
Из поставки удалены: приложение Hack для обучения детей программированию и программа для записи CD/DVD Brasero. В браузере прекращена автоматическая установка блокировщика рекламы Adblock Plus.
Доступен релиз Alpine Linux 3.19, минималистичного дистрибутива, построенного на базе системной библиотеки Musl и набора утилит BusyBox. Дистрибутив отличается повышенными требованиями к обеспечению безопасности и собран с защитой SSP (Stack Smashing Protection). В качестве системы инициализации используется OpenRC, для управления пакетами применяется собственный пакетный менеджер apk. Alpine применяется для формирования официальных образов контейнеров Docker и используется в проекте PostmarketOS. Загрузочные iso-образы (x86_64, x86, armhf, aarch64, armv7, ppc64le, s390x) подготовлены в шести вариантах: стандартном (207 МБ), с ядром без патчей (204 МБ), расширенном (957 МБ), для виртуальных машин (60 MB) и для гипервизора Xen (239 МБ).
В качестве бэкенда к iptables по умолчанию задействован пакет iptables-nft.
Пакеты с ядром для Raspberry Pi 2 (linux-rpi2) и Raspberry Pi 4 (linux-rpi4) объединены в один пакет linux-rpi.
Каталог с пакетам Python помечен как управляемый внешним инструментарием (утилита pip больше не сможет устанавливать пакеты в системный каталог, содержимое которого управляется пакетным менеджером apk). Вместо pip следует использовать pipx.
Из-за смены лицензии на несвободную удалены пакеты компании HashiCorp: Consul, Nomad, Packer, Terraform
и Vault.
После четырёх месяцев разработки представлен релиз системного менеджера systemd 255. Среди наиболее важных улучшений: поддержка экспорта накопителей через NVMe-TCP, компонент systemd-bsod для полноэкранного вывода сообщений об ошибках, утилита systemd-vmspawn для запуска виртуальных машин, утилита varlinkctl для управления сервисами Varlink, утилита systemd-pcrlock для анализа регистров TPM2 PCR и генерации правил доступа, модуль аутентификации pam_systemd_loadkey.so.
Ключевые изменения в новом выпуске:
Добавлен компонент "systemd-storagetm", дающий возможность автоматически экспортировать все локальные блочные устройства при помощи драйвера NVMe-TCP (NVMe over TCP), позволяющего обращаться к NVMe-накопителям по сети (NVM Express over Fabrics), используя протокол TCP. За предоставление доступа в режиме NVMe over TCP отвечает новый юнит "storage-target-mode.target", который можно включить на стадии загрузки, указав в командной строке ядра "rd.systemd.unit=storage-target-mode.target", например, при необходимости удалённого обращения к накопителю в диагностических целях.
Добавлен компонент "systemd-bsod" с реализацией аналога "синего экрана смерти", позволяющего на этапе загрузки выводить сообщения о критических ошибках (LOG_EMERG) в форме полноэкранного уведомления.
Добавлена утилита "systemd-vmspawn", представляющая аналог утилиты systemd-nspawn для запуска образа операционной системы в виртуальной машине (утилита systemd-nspawn предназначена для запуска контейнеров, а systemd-vmspawn предоставляет похожий интерфейс для виртуальных машин). В настоящее время для запуска виртуальных машин доступен только бэкенд на базе QEMU.
Добавлена утилита "varlinkctl" для вызова и интроспекции сервисов, использующих протокол Varlink.
Добавлена утилита "systemd-pcrlock" для анализа и предсказания состояний регистров TPM2 PCR (Platform Configuration Register) и формирования сохраняемых в индексе TPM2 NV правил доступа, разрешающих обращение к объектам TPM2, таким как ключи шифрования диска, только из заверенных цифровой подписью компонентов, запускаемых на стадии верифицированной загрузки. В качестве входных данных для анализа может использоваться результат запроса состояния PCR в TPM2, выдаваемый прошивкой UEFI лог событий текущей загрузки (/sys/kernel/security/tpm0/binary_bios_measurements) или локально сохранённый лог TPM2 (/run/log/systemd/tpm2-measure.log). Поддержка сохраняемых правил доступа добавлена в systemd-cryptsetup, systemd-cryptenroll и systemd-repart.
Добавлен PAM-модуль pam_systemd_loadkey.so, предназначенный для автоматического извлечения из хранилища ключей в ядре (keyring) парольной фразы, используемой в cryptsetup для разблокировки зашифрованной корневой ФС, и выставления этой парольной фразы в качестве токена аутентификации (PAM authtok). Модуль может применяться, например, для настройки авторазблокировки доступа к GNOME Keyring и KDE Wallet при включении автоматического входа в систему.
Добавлена поддержка перехода в спящий режим (hibernation) с сохранением содержимого памяти в файлы подкачки, хранимые в ФС Btrfs.
В юниты добавлены свойства MemoryPeak, MemorySwapPeak, MemorySwapCurrent и MemoryZSwapCurrent, соответствующие доступным через cgroup v2 свойствам memory.peak, memory.swap.peak, memory.swap.current и memory.zswap.current. Информация о данных свойствах включена в вывод "systemctl status".
Переработан способ запуска сервисов, который переведён на использование вызова posix_spawn с опциями CLONE_VM и CLONE_VFORK для запуска процесса и применение отдельного исполняемого файла systemd-executor для настройки запускаемого процесса. Ранее процессы ответвлялись функцией fork с копированием памяти управляющего процесса в режиме copy-on-write и выполнением необходимых настроек (монтирование пространств имён и выставление CGroup) до запуска целевого исполняемого фала через вызов exec, что приводило к проблемам из-за невозможности обращения к некоторым API Glibc на стадии между выполнением функций fork и exec.
Код для отслеживания внутренних процессов переведён на использование PIDFD вместо PID в окружениях с ядром, поддерживающим PIDFD (PIDFD связывается с конкретным процессом и не меняется, в том время как PID может быть привязан к другому процессу после завершения текущего процесса, ассоциированного с этим PID). Реализована возможность создания scope-юнитов, используя PIDFD вместо PID для выбора процессов.
Прекращена поддержка раздельных иерархий каталогов (когда /usr монтируется отдельно от корня или разделены каталоги /bin и /usr/bin, /lib и /usr/lib). В будущем также решено прекратить поддержку cgroups v1, скриптов сервисов System V и EFI-переменных SystemdOptions.
Команда "systemctl switch-root" ограничена для применения только в initrd. Для замены корневой ФС в обычном окружении следует использовать "systemctl soft-reboot".
Объявлены устаревшими параметры SuspendMode, HybridSleepMode, HibernateStat и HybridSleepState в секции "[Sleep]" файла systemd-sleep.conf. Данные параметры теперь игнорируются и могут принимать только значения по умолчанию.
В юниты добавлена опция SurviveFinalKillSignal, позволяющая игнорировать финальный сигнал SIGTERM/SIGKILL, выдаваемый во время завершения работы, что может оказаться полезным для оставления запущенным юнита во время мягкой перезагрузки системы в режиме soft-reboot.
Добавлена настройка NFTSet, позволяющая использовать идентификаторы cgroup для переключения логики в правилах межсетевого экрана.
Добавлена опция ConditionSecurity=measured-uki, гарантирующая, что юнит может быть запущен только в системе, загруженной с верифицированного образа ядра в формате UKI.
В systemd-boot добавлены новые горячие клавиши "B" и "O" для перезагрузки и выключения системы из загрузочного меню. Добавлена настройка "menu-disabled" для отключения показа загрузочного меню.
В утилиту systemd-repart добавлены новые опции "--copy-from" для получения описаний раздела из указанного образа ФС, "--copy-source" для указания базового каталога для параметра CopyFiles, "--make-ddi=confext", "--make-ddi=sysext" и "--make-ddi=portable" для генерации разных типов DDI, и "--tpm2-device-key" для привязки диска к определённому открытому ключу TPM2.
В утилиту journalctl в параметр "--lines" добавлено значение "+N" для вывода N старейших записей.
В udevadm добавлен флаг "--json" для вывода в формате JSON.
В утилиты systemd-analyze, systemd-tmpfiles, systemd-sysusers, systemd-sysctl и systemd-binfmt добавлена опция "--tldr" для вывода только фактических параметров конфигурации без пробелов и комментариев.
В подсистему seccomp добавлена поддержка архитектуры LoongArch64. Разрешено использование seccomp для фильтрации системных вызовов в сервисах, выполняемых не под пользователем root без включения настройки NoNewPrivileges=yes.
В утилиту systemd-mount добавлена опция "--tmpfs" для монтирования нового экземпляра 'tmpfs'.
Группа исследователей из Амстердамского свободного университета представила новую технику атаки SLAM (Spectre Linear Address Masking), предлагающую новый способ эксплуатации микроархитектурных уязвимостей класса Spectre, в котором утечка данных происходит при трансляции неканонических адресов, а для обхода проверок каноничности привлекаются предоставляемые в новых процессорах расширения для маскировки линейных адресов. Исследователями опубликован инструментарий с реализацией метода и предложена демонстрация, показывающая как можно извлечь из памяти ядра данные, соответствующие определённой маске (показано как за несколько десятков секунд в Ubuntu выделить из памяти ядра строку с хэшем пароля пользователя root).
Атака может быть совершена на системах с процессорами Intel, поддерживающими расширение LAM (Linear Address Masking), процессорами AMD с расширением UAI (Upper Address Ignore) и процессорами ARM с расширением TBI (Top Byte Ignore). Указанные расширения позволяют использовать часть битов 64-разрядных указателей для хранения не связанных с адресацией метаданных (для обычных программ не требуется столько памяти, что могут адресовать 64-разрядные указатели, поэтому верхние биты могут быть задействованы, например, для проверок, связанных с обеспечением безопасности). Интересно, что процессоры Intel, AMD и ARM с поддержкой LAM, UAI и TBI, и с 5-уровнемы таблицами страниц памяти ещё только анонсированы, но массово не производятся, что делает SLAM первой спекулятивной атакой на будущие CPU. Атака также может быть совершена на старых CPU AMD Zen+ и Zen 2, подверженных уязвимости CVE-2020-12965.
По аналогии с эксплуатацией уязвимостей Spectre для осуществления атаки SLAM требуется наличие в ядре определённых последовательностей инструкций (гаджетов), приводящих к спекулятивному выполнению инструкций. Подобные инструкции приводят к спекулятивному чтению данных из памяти в зависимости от внешних условий, на которые может влиять атакующий. После определения ошибочного прогноза результат спекулятивного выполнения отбрасывается, но обработанные данные остаются в кэше и могут затем быть извлечены при помощи анализа по сторонним каналам. Для извлечения осевших в кэше данных исследователями задействован метод Evict+Reload, основанный на создании условий для вытеснения данных из кэша (например, создаётся активность, равномерно заполняющая кэш типовым содержимым) и выполнения операций, время выполнения которых позволяет судить о наличии данных в процессорном кэше.
Для совершения атаки SLAM используются гаджеты на основе кода, в котором контролируемые атакующим данные (ниже переменная "secret") используются как указатель. Например:
void unmasked_gadget(long **secret) {
**secret;
}
Отмечается, что подобные шаблоны кода часто используются в программах, например, в ядре Linux выявлены десятки тысяч таких гаджетов, из которых как минимум несколько сотен пригодны для использования в эксплоитах. Утечка может быть предотвращена через добавление в подобные гаджеты дополнительных инструкций, блокирующих спекулятивное выполнение. Компания Intel намерена предоставить программный метод защиты от утечки до начала поставки процессоров с поддержкой LAM. Компания AMD рекомендовала использовать существующие методы блокирования атак класса Spectre v2. Разработчики ядра Linux для защиты от атаки решили отключить по умолчанию поддержку LAM до публикации рекомендаций Intel по блокированию уязвимости.
Компания Google опубликовала релиз web-браузера Chrome 120. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается от Chromium использованием логотипов Google, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого от копирования видеоконтента (DRM), системой автоматической установки обновлений, постоянным включением Sandbox-изоляции, поставкой ключей к Google API и передачей при поиске RLZ-параметров. Для тех, кому необходимо больше времени на обновление, отдельно поддерживается ветка Extended Stable, сопровождаемая 8 недель. Следующий выпуск Chrome 121 запланирован на 23 января.
Начался эксперимент по отключению поддержки сторонних Cookie, выставляемых при обращении к сайтам, отличным от домена текущей страницы. Подобные Cookie применяются для отслеживания перемещений пользователя между сайтами в коде рекламных сетей, виджетов социальных сетей и систем web-аналитики. В январе 2024 года сторонние Cookie будут отключены для 1% пользователей браузера. Изменения продвигаются в рамках инициативы Privacy Sandbox, нацеленной на достижение компромисса между потребностью пользователей сохранить конфиденциальность и желанием рекламных сетей и сайтов отслеживать предпочтения посетителей.
Вместо отслеживающих Cookie предлагается использовать следующие API:
FedCM (Federated Credential Management), позволяет создавать объединённые сервисы идентификации, обеспечивающие сохранение конфиденциальности и работающие без сторонних Cookie.
Private State Tokens, позволяет разделять разных пользователей без использования межсайтовых идентификаторов и передавать сведения о подлинности пользователя между разными контекстами.
Topics (критика), даёт возможность определять категории интересов пользователя, которые можно использовать для выделения групп пользователей со сходными интересами без идентификации отдельных пользователей при помощи отслеживающих Cookie. Интересы вычисляются на основе активности пользователя в браузере и сохраняются на устройстве пользователя. При помощи API Topics рекламная сеть может получить общие сведения об отдельных интересах без наличия информации о конкретной активности пользователя.
Protected Audience, решение задач ретаргетинга и оценки собственной аудитории (работа с пользователями, уже посещавшими ранее сайт).
Attribution Reporting, позволяет оценивать такие характеристики эффективности рекламы, как переходы и конверсия (покупка на сайте после перехода).
Storage Access API, может применяться для запроса у пользователя полномочий на получение доступа к хранилищу Cookie, если по умолчанию сторонние Cookie блокируются.
В соответствии с требованиями принятого в Евросоюзе закона DMA
(Digital Markets Act) некоторым пользователям будет показан диалог для выбора поисковой системы по умолчанию, возможности которого соответствуют настройкам chrome://settings/search. В Chrome 120 диалог будет показан 1% пользователей, а к моменту публикации Chrome 122 доведён до 100%.
Начался процесс прекращения поддержки видеокодека Theora. На начальном этапе Theora отключён для 1% пользователей, но до 16 января его планируют отключить для всех пользователей. На переходном этапе для возвращения кодека предусмотрена настройка "chrome://flags/#theora-video-codec". В качестве причины прекращения поддержки Theora упоминаются опасения, что в реализации Theora, в которой имеется достаточно сложная логика разбора бинарных данных и декодирования потоков, могут присутствовать уязвимости, похожие на недавние критические проблемы с кодировщиком VP8.
Оформление каталога Chrome Web Store переработано для упрощения поиска и управления дополнениями. Добавлены новые категории дополнений (например, добавлена категория с дополнениями на базе машинного обучения и раздел "выбор редакции"). В меню " ⋮ " добавлена возможность возвращения прошлого дизайна.
Расширена функциональность интерфейса "Проверка безопасности" (Safety check), показывающего сводку о возможных проблемах с безопасностью, таких как использование скомпрометированных паролей, состояние проверки вредоносных сайтов (Safe Browsing), наличие неустановленных обновлений и выявление вредоносных дополнений. В новой версии предложен проактивный режим, периодически выполняющий связанные с безопасностью проверки браузера и информирующий пользователя в случае выявления проблем. В настройки добавлены параметры для управления действиями в проактивном режиме.
Реализована адаптивная панель инструментов, меняющаяся в зависимости от изменения размера окна.
В менеджере паролей разрешено предоставление совместного доступа к отдельным паролям для членов группы Google Family Group, настроенной через Google Account. За один раз можно предоставить доступ только к одному паролю, после чего совместно используемый пароль не сможет быть обновлён или отозван отправителем.
Взаимодействие с принтерами перенесено в отдельный сервисный процесс, что позволило повысить стабильность браузера и улучшить отзывчивость интерфейса предпросмотра страницы перед выводом на печать.
В TLS включена реализация механизма инкапсуляции ключей (KEM, Key Encapsulation Mechanism), использующего гибридный алгоритм X25519Kyber768, устойчивый к подбору на квантовых компьютерах. Для создания сессионных ключей, применяемых для шифрования данных внутри TLS-соединений, теперь может использоваться комбинация из механизма обмена ключами X25519, основанного на эллиптических кривых и ныне применяемого в TLS, c алгоритмом Kyber-768, использующим методы криптографии, основанные на решении задач теории решёток, время решения которых не отличается на обычных и квантовых компьютерах.
В сервисе автоподавления запросов на подтверждение полномочий (Permission Suggestions Service) обеспечен учёт URL страницы, запрашивающей полномочия (на серверы Google будут передаваться хэши от запрашивающих полномочия URL).
В версии для Android прекращена поддержка платформы Android 7.0 "Nougat".
Добавлен фреймворк с реализацией концепции Close-запросов, позволяющих пользователю запрашивать закрытие модальных и всплывающих диалогов через нажатие клавиши Esc или используя экранный жест или кнопку "Назад" на смартфонах. Поддержка Close-запросов добавлена для диалогов, созданных при помощи элемента <dialog> или свойства "popover". Также добавлен API CloseWatcher, дающий возможность разработчикам приложений отслеживать Close-запросы и реагировать на их поступление (например, можно создать обработчик нажатия кнопки "назад" на Android-смартфоне).
В элемент "<details>" добавлена поддержка атрибута "name", позволяющего создавать группы через определение серии элементов "<details>" с одним именем.
В API Media Session добавлено событие "enterpictureinpicture", позволяющее сайту зарегистрировать обработчик, вызываемый при открытии содержимого в режиме "картинка в картинке".
Упрощён синтаксис вложенных CSS-блоков - вложенные CSS-правила теперь могут начинаться с любого элемента, без необходимости указания перед вложенным правилом символа амперсанда или использования функции is().
dl {
dt {
/* стиль для dl dt */
}
dd {
/* стиль для dl dd */
}
}
В CSS-свойстве "background-clip добавлена поддержка параметра "text" для отображения выбранного фона только в области, ограниченной символами текста. Например, указание "background: linear-gradient(60deg, red, yellow, red, yellow, red); background-clip: text; color: rgba(0, 0, 0, 0.2)" приведёт к отображению:
В CSS добавлен медиазапрос "scripting", который можно использовать для определения возможности выполнения скриптов, например на языке JavaScript, на текущей странице.
В CSS добавлен псевдокласс ":dir()", позволяющий выбрать элементы в зависимости от направленности текста (например, ":dir(ltr)" будет охватывать элементы, в которых текст выводится слева направо).
В CSS добавлены экспоненциальные функции pow(), sqrt(), hypot(), log() и exp().
В CSS добавлена поддержка свойств mask, mask-image, mask-repeat, mask-position, mask-clip, mask-origin, mask-size, mask-composite и mask-mode для скрытия элемента путём наложения изображения по определённым точкам.
В API FontFaceSet добавлен метод check(), позволяющий проверить может ли быть отображён текст при выбранных шрифтах без использования в FontFaceSet шрифтов, загрузка которых ещё не завершена.
В API WebGPU добавлена возможность использования в шейдерах 16-битного типа с плавающей запятой f16.
В API Media Capabilities в метод decodingInfo() добавлены поля hdrMetadataType, colorGamut и transferFunction для определения поддержки HDR.
В API MediaStreamTrack добавлена возможность получения информации о счётчиках полученных и отброшенных кадров видео.
Добавлена возможность передачи объекта ArrayBuffer в конструкторы VideoFrame, AudioData, EncodedVideoChunk, EncodedAudioChunk и ImageDecoder для прямого использования байтового массива без создания его копии.
В соответствии с изменившейся спецификацией для повышения защиты от XSS-атак и для улучшения переносимости между браузерами в SVGUseElement прекращена поддержка URL "data:", который до этого не поддерживался в движке WebKit.
Добавлена экспериментальная (origin trial) поддержка HTTP-заголовка
"Priority", через который можно передать сведения о приоритете обработки запроса (RFC 9218) на стадии первого обращения к ресурсу.
Внесены улучшения в инструменты для web-разработчиков. В отладчике по умолчанию включено игнорирование скриптов размещённых в каталогах "/node_modules/" и "/bower_components/" с модулями Node.js.
В режиме удалённой отладки реализован переключатель для выбора между мышью и сенсорным экраном. Улучшена отладка анимации. В панель Elements добавлен переключатель "media" для отладки элементов <audio> и <video>. По умолчанию включён вывод предупреждений об использовании сторонних Cookie. В утилиту Privacy Sandbox Analysis добавлен анализ используемых на сайте Cookie и вывод рекомендаций по использованию вместо Cookie новых API.
Кроме нововведений и исправления ошибок в новой версии устранено 10 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 13 премий на сумму 15 тысяч долларов США (одна премия $10000, одна премия $2000 и три премии $1000).
В выпуске Fedora Linux 40 планируют реализовать вторую стадию перехода на модернизированный процесс загрузки, предложенный Леннартом Поттерингом. Отличия от классической загрузки сводятся к использованию вместо образа initrd, формируемого на локальной системе при установке пакета с ядром, унифицированного образа ядра UKI (Unified Kernel Image), генерируемого в инфраструктуре дистрибутива и заверенного цифровой подписью дистрибутива. Предложение пока не рассмотрено комитетом FESCo (Fedora Engineering Steering Committee), отвечающим за техническую часть разработки дистрибутива Fedora.
Образ UKI объединяет в одном файле обработчик для загрузки ядра из UEFI (UEFI boot stub), образ ядра Linux и загружаемое в память системное окружение initrd. При вызове образа UKI из UEFI предоставляется возможность проверки целостности и достоверности по цифровой подписи не только ядра, но и содержимого initrd, проверка достоверности которого важна, так как в данном окружении осуществляется извлечение ключей для расшифровки корневой ФС.
Первая стадия внедрения UKI была выполнена в Fedora Linux 38 и привела к добавлению поддержки UKI в загрузчик, реализации инструментария для установки и обновления UKI, а также формированию экспериментального образа UKI для загрузки виртуальных машин с ограниченным набором компонентов и драйверов.
На второй стадии намерены добавить возможность прямой загрузки UKI из UEFI-модуля shim.efi без привлечения отдельного загрузчика (grub, sd-boot), реализовать возможность использования UKI на системах с архитектурой Aarch64 и подготовить вариант UKI-образа для облачных окружений и защищённых виртуальных машин.
Компании IBM и Meta основали международное сообщество AI Alliance, нацеленное на совместное развитие открытых технологий, связанных с машинным обучением и искусственным интеллектом. В число учредителей проекта вошло более 50 компаний, университетов, организаций и научных учреждений, среди которых NASA, CERN, AMD, Intel, Oracle, Red Hat, Dell, Sony, Stability AI, NSF, Linux Foundation, Калифорнийский, Гарвардский, Бостонский, Иллинойский, Токийский, Йельский и Корнеллский университеты.
AI Alliance сосредоточен на ускорении продвижения инноваций в области искусственного интеллекта и проведении работ по развитию основополагающих возможностей AI, а также улучшению безопасности и повышения доверия к AI-технологиям. Основные задачи проекта:
Разработка и внедрения эталонных текстов, стандартов, инструментариев и сопутствующих ресурсов, связанных с разработкой и использованием систем искусственного интеллекта. Создание проверенных инструментов для обеспечения безопасности, защиты и доверия, а также продвижение использования данных инструментов при создании моделей и приложений.
Становление экосистемы открытых моделей машинного обучения для разных применений, включая многоязычные, научные и мультимодальные модели.
Развитие экосистемы аппаратных ускорителей для систем искусственного интеллекта.
Предоставление разработчикам и исследователям возможностей по изучению, внедрению и экспериментам с открытыми AI-технологиями.
Подготовка обучающих материалов и ресурсов для информирования о преимуществах, рисках, решениях и возможностях регулирования искусственного интеллекта.
Создание инициатив для продвижения безопасных открытых методов разработки систем искусственного интеллекта. Проведение мероприятий для изучения областей использования искусственного интеллекта и демонстрации применения открытых технологий при разработке систем искусственного интеллекта.
Компания Mozilla опубликовала финансовый отчет за 2022 год. В 2022 году доходы Mozilla сократились на 7 млн долларов и составили 593 млн долларов. Для сравнения, в 2021 году компания Mozilla заработала 600 млн долларов, в 2020 году - 496 млн, в 2019 году - 828 млн, в 2018 году - 450 млн, в 2017 - 562 млн , в 2016 году - 520 млн, в 2015 - 421 млн, в 2014 - 329 млн, в 2013 - 314 млн, 2012 - 311 млн.
510 миллионов из 593 получены благодаря отчислениям за использование поисковых систем (Google, Baidu, DuckDuckGo, Yahoo, Bing, Yandex), сотрудничеству с различными сервисами (Cliqz, Amazon, eBay) и размещению контекстных рекламных блоков на стартовой странице. В 2021 году размер подобных отчислений составил 527 млн, в 2020 - 441 млн, в 2019 - 451 млн, в 2018 - 429 млн, а в 2017 - 539 млн долларов. По неофициальнымданным, около 400 млн долларов в год приносит сделка с компанией Google о передаче поискового трафика.
К категории "Иные доходы" отнесено 352 тысячи долларов (в 2021 году - 451 тысяча). Для сравнения, в 2019 году подобная графа доходов принесла Mozilla 338 млн долларов, присуждённых в ходе судебного разбирательства с компанией Yahoo.
Объём средств, вложенных в инвестиции, в 2022 году составил 631 млн долларов, а доход от инвестиций - 9.4 млн долларов (в 2021 году 651 млн и 5.7 млн, в 2020 году - 577 млн и 9.1 млн). Доход от подписных сервисов и рекламы в 2022 году составил 75 млн долларов (в 2021 году 56 млн). Пожертвования составили 9.3 млн долларов (в 2021 году было получено 7.3 млн, а в 2020 - 6.7 млн).
Среди затрат доминируют расходы на разработку (220 млн долларов в 2022 году против 199 млн долларов в 2021, 242 млн в 2020 и 303 млн в 2019 году), поддержку сервисов (34 млн долларов в 2022 против 27 млн в 2021, 20.3 млн в 2020 году, 22.4 млн в 2019 и 33.4 млн в 2018), маркетинг (58 млн долларов в 2022 против 30 млн в 2021, 37 млн в 2020, 43 млн в 2019 и 53 млн в 2018) и административные расходы (108 млн долларов в 2021 против 81 млн в 2021, 137 млн в 2020, 124 млн в 2019 и 86 млн в 2018). 5.3 млн долларов потрачено на выплату грантов (в 2021 году - 5.4 млн, в 2020 году - 5.2 млн, в 2019 году - 9.6 млн).
Общая сумма затрат составила 425 млн долларов (в 2021 году - 339 млн, в 2020 году 438 млн, в 2019 году 495 млн, в 2018 году - 451 млн, в 2017 году - 421.8 млн, в 2016 году - 360.6 млн, в 2015 году - 337.7 млн, в 2014 - 317.8 млн, в 2013 - 295 млн, в 2012 - 145.4 млн). Размер активов на начало года - 1054 млн долларов, на конец года - 1197 млн долларов.
После пяти месяцев разработки опубликован релиз свободного игрового движка Godot 4.2, подходящего для создания 2D- и 3D-игр. Движок поддерживает простой для изучения язык задания игровой логики, графическую среду для проектирования игр, систему развёртывания игр в один клик, широкие возможности анимации и симуляции физических процессов, встроенный отладчик и систему выявления узких мест в производительности. Код игрового движка, среды проектирования игр и сопутствующих средств разработки (физический движок, звуковой сервер, бэкенды 2D/3D рендеринга и т.п.) распространяются под лицензией MIT.
Исходные тексты движка были открыты в 2014 году студией OKAM, после десяти лет развития проприетарного продукта профессионального уровня, который использовался для создания и публикации многих игр для PC, игровых консолей и мобильных устройств. Движком поддерживаются все популярные стационарные и мобильные платформы (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), а также разработка игр для Web. Готовые для запуска бинарные сборки сформированы для Linux, Android, Windows и macOS.
Для разработчиков 2D-игр добавлена поддержка принудительного целочисленного масштабирования, позволяющая получить квадратную пиксельную сетку, независимо от фактического соотношения сторон. Предоставлена возможность получения барицентрических координат нормали из точек пересечения объекта с лучом. Добавлены методы Rotate_toward и Angle_difference для корректной обработки вращения и углов. В узлы Line2D добавлено свойство "closed" для создания замкнутых линий с непрерывным заполнением.
Проведена работа по повышению надёжности системы анимации. Переработаны и унифицированы узлы AnimationPlayer и AnimationTree, общие части которых выделены в промежуточный класс AnimationMixer. Добавлена опция для детерминированного смешивания. В предпросмотр анимации добавлен режим кальки (onion skinning), включающий показ полупрозрачных наложений с прошлыми и следующими кадрами анимации.
Возможности "запекания" навигационной сетки (baking, преобразование в статичную форму) для 2D приближены к возможностям, ранее доступным в 3D-навигации, например, для 2D-сеток реализована поддержка работы с физическими телами, экземплярами полигональных сеток, простыми многоугольниками и тайловыми картами (tilemap). В серверы 2D- и 3D-навигации добавлена поддержка многопоточного запекания мэшей.
Проведён рефакторинг кода для работы с тайлами и тайловыми картами. Оптимизированы операции группировки блоков и сортировки по оси Y, позволившие значительно сократить время обновления тайлов. Выполнена работа по повышению удобства создания тайловых карт и их использования. Добавлен инструмент для переворота и поворота тайлов при их размещении. Улучшены инструменты для редактирования многоугольников и тайловых сцен.
В редакторе сценариев GDScript появилась возможность создания именованных областей кода для сворачивания блоков во время редактирования и упрощения навигации. В отладчике скриптов добавлена полная поддержка многопоточного кода, стека исполнения и точек останова. В скриптах на базе C#/.NET реализована поддержка платформ Android (требуется .NET 7.0+) и iOS (требуется .NET 8.0). В скриптах GDScript расширена поддержка статически типизированного кода, добавлена поддержка строковых литералов r-string (raw string), расширены возможности оператора match.
В 3D viewport улучшена поддержка управления трансформацией в стиле Blender, используя мышь и горячие клавиши. Показ расширенной визуальной информации в 3D viewport теперь осуществляется только для выбранных объектов. Добавлены дополнительные индикаторы для таких элементов, как декали и объём тумана. Улучшена работа с гизмо (gizmo) - любую сторону объёмных форм теперь можно расширять по-отдельности в окне просмотра.
Улучшены контекстное меню и всплывающие подсказки в панелях "Инспектирование" и "Сигналы". В редактор тем добавлены подсказки с описанием свойств. В панели работы с файловой системой появилась возможность наглядного выделения каталогов через назначения им разных цветов. Переработан интерфейс редактора ресурсов градиентов. В редакторе областей текстур унифицирована работа со всеми поддерживаемыми ресурсами, включая стили и атласы.
В библиотеке ассетов улучшен вывод результатов поиска и добавлена возможность выбора иного каталога для установки дополнения или ресурса.
В менеджере проектов переработано размещение основных элементов управления и модернизирован интерфейс импорта проекта.
Расширены возможности по разработке плагинов к редактору. Обеспечен доступ ко всей функциональности редактора через класс EditorInterface.
Реализованы удобные методы для прямого доступа к 2D- и 3D-вьюпортам. Добавлена возможность вывода диалога с предупреждением о несохранённых изменениях.
Продолжено развитие экспериментальной системы расширений GDExtension, позволяющей использовать низкоуровневые языки, такие как C++, в качестве языков создания скриптов для игр, без пересборки движка и без внесения изменений в код. Добавлена возможность использования GDExtensions при экспорте в Web.
В интерфейсе пользователя изменено управление фокусом. Реализована возможность передачи фокуса на отдельные вкладки в панели вкладок, в том числе при навигации с использованием клавиатуры. В узлы управления (Control) добавлен метод для поиска следующего соседнего фокусируемого элемента.
Значительно переработаны узлы построения графов (GraphEdit и GraphNode). Расширены возможности по настройке панели инструментов основного узла GraphEdit.
Добавлена возможность изменения типа импорта ассетов на лету с автоматическим обновлением сцен и ресурсов, не требующим перезапуска редактора. Расширены доступные параметры импорта и предоставлена возможность изменения физических свойств импортируемых объектов, а также параметров теней и видимости. Добавлена возможность предпросмотра анимации в диалоговом окне импорта. Расширена поддержка импорта ассетов из Blender в формате GLTF. Добавлена поддержка импорта изображений в формате KTX.
Внесены оптимизации, нацеленные на повышение производительности рендеринга. Для ускорения работы на мобильных устройствах осуществлено разделение растровых барьеров на вершинные и фрагментные компоненты.
Ускорена генерация зашумлённых текстур. Добавлен предварительный проход для вычисления глубины. Сокращено время загрузки и компиляции шейдеров. Оптимизировано хранение полигональных сеток в памяти. Добавлена поддержка сжатия полигональных сеток для сокращения пропускной способности при их передаче.
Добавлена возможность создания своих текстурных объектов (пример использования вычислительных шейдеров для создания текстуры с эффектом воды).
Добавлен API для вызова кода в потоке рендеринга, что может потребоваться, например, когда нужно синхронизировать вычислительный шейдер с рендерингом.
Добавлена поддержка версии 2.2 технологии суперсэмплинга AMD FSR (FidelityFX Super Resolution), использующей алгоритмы пространственного масштабирования и реконструкции деталей для снижения потери качества изображения при увеличении масштаба и преобразования в более высокое разрешение.
Предложен новый подавитель шумов JNLM, использующий карты освещения (lightmapper) и вычислительные шейдеры. JNLM значительно быстрее ранее применявшейся библиотеки устранения шумов OIDN (Open Image Denoise), но в некоторых ситуациях уступает по качеству.
В методы рендеринга Forward+ и Mobile добавлена поддержка 2D-отрисовки в расширенном динамическом диапазоне яркости (HDR), позволяющая реализовать в 2D-играх некоторые 3D-эффекты, такие как свечение. В метод рендеринга Compatibility добавлена поддержка трёхмерных теней.
Для macOS и Windows предложен новый драйвер OpenGL-рендеринга, использующий прослойку ANGLE, транслирующую вызовы OpenGL в API Direct3D 11 и Metal.
Система симуляции частиц переработана для упрощения сопровождения и расширения управления движением частиц. Например, теперь можно анимировать и наследовать скорость движения, а также изменять число испускаемых частиц. Добавлен инструмент для преобразования кода генерации частиц, использующего CPU, на эквивалентный код, использующий GPU.
Добавлена поддержка использования родных для Linux, macOS и Windows диалогов выбора файлов, а также возможность копирования и вставки изображений через буфер обмена.
Переработана архитектура Godot для платформы Android, которая избавлена от привязки к Android-компоненту Fragment, что позволило сократить время запуска приложений и игр, и реализовать возможность работы с несколькими окнами.
Налажено формирование официальных Linux-сборок редактора Godot для 32- и 64-разрядных платформ ARM.
Администраторы репозитория Python-пакетов PyPI (Python Package Index) сообщили об инциденте, в результате которого злоумышленник смог захватить управление над проектами arrapi, tmdbapis, nagerapi и pmmutils, насчитывающими около 4.5 тысяч загрузок в месяц. Все проекты сопровождались одним автором (meisnate12, Nathan Taggart) и были захвачены в результате компрометации его учётной записи. Злоумышленник, получивший управление над проектами, был оперативно заблокирован и не успел внести изменения и сформировать модифицированные выпуски.
Захват произведён через замену владельца проектов. Атакующий создал учётную запись "dvolk", затем от имени основного сопровождающего "meisnate12" сформировано приглашение для включения пользователя "dvolk" в число сопровождающих, после принятия которого и получения управляющего доступа к проекту удалил из проекта изначального автора и остался одним сопровождающим. После выполнения подобных манипуляций для всех проектов был инициирован процесс удаления учётной записи "meisnate12".
Спустя 5 часов после захвата проектов администраторы PyPI получили сообщение от изначального автора о случившимся, заблокировали учётную запись злоумышленника и восстановили права на владение проектами. В качестве причины инцидента названа ненадлежащая защита учётной записи и отсутствие применения двухфакторной аутентификации, что позволило атакующему определить параметры входа под пользователем "meisnate12" и выполнить действия от его имени.
До конца этого года репозиторий PyPI намерен перевести все учётные записи пользователей, сопровождающих хотя бы один проект или входящих в курирующие организации, на обязательное применение двухфакторной аутентификации. Применение двухфакторной аутентификации позволит усилить защиту процесса разработки и обезопасить проекты от внесения вредоносных изменений в результате утечки учётных данных, использования того же пароля на скомпрометированных сайтах, взломов локальной системы разработчика или применения методов социального инжиниринга.
В качестве предпочтительных методов двухфакторной аутентификации рекомендуется использовать протокол WebAuthn с FIDO U2F токенами или приложения для аутентификации на базе одноразовых паролей, поддерживающих протокол TOTP, например, Authy, Google Authenticator, FreeOTP и oathtool. При загрузке пакетов разработчикам дополнительно рекомендовано перейти на использование метода аутентификации 'Trusted Publishers' на базе стандарта OpenID Connect (OIDC) или применять API-токены.
В состав языка программирования Hare, который преподносится как язык системного программирования, близкий к языку Си, но проще, чем Си, добавлена поддержка операционной системы OpenBSD. OpenBSD стала первой новой платформой, добавленной в Hare с момента публикации проекта в апреле 2022 года (изначально Hare поддерживал только Linux и FreeBSD). Компилятор Hare был портирован для OpenBSD около года назад, но стандартная библиотека до настоящего времени оставалась без поддержки данной платформы.
Основным разработчиком языка Hare и вдохновителем проекта является Дрю ДеВолт (Drew DeVault), автор пользовательского окружения Sway, почтового клиента Aerc, платформы совместной разработки SourceHut и микроядра Helios. В языке Hare применяется ручное управление памятью и статическая система типов, при которой каждой переменной явно должен быть присвоен определённый тип. Язык оптимизирован для решения низкоуровневых задач, таких как разработка операционных систем, компиляторов, сетевых приложений и системных утилит, для которых требуется достижение максимальной производительности и полный контроль над выполнением. Для выполнения приложения прикрепляется минимальный runtime, а для разработки распространяется стандартная библиотека функций, предоставляющая доступ к базовым интерфейсам операционной системы, а также предлагающая функции для работы с типовыми алгоритмами, протоколами и форматами. Из последних разработок на Hare можно отметить инструментарий hare-wayland для разработки приложений, использующих Wayland.