The OpenNET Project / Index page

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

01.06.2020 Релиз ядра Linux 5.7 (78 +22)
  После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 5.7. Среди наиболее заметных изменений: новая реализация ФС exFAT, модуль bareudp для создания UDP-туннелей, защита на основе аутентификации указателей для ARM64, возможность прикрепления BPF-программ к LSM-обработчикам, новая реализация Curve25519, детектор "split-lock", совместимость BPF с PREEMPT_RT, снятие ограничения на 80-символьный размер строки в коде, учёт показателей температуры CPU в планировщике задач, возможность использования clone() для порождения процессов в другом cgroup, защита от записи в память при помощи userfaultfd.

В новую версию принято 15033 исправлений от 1961 разработчиков, размер патча - 39 МБ (изменения затронули 11590 файлов, добавлено 570560 строк кода, удалено 297401 строк). Около 41% всех представленных в 5.7 изменений связаны с драйверами устройств, примерно 16% изменений имеют отношение к обновлению кода, специфичного для аппаратных архитектур, 13% связано с сетевым стеком, 4% - с файловыми системами и 4% c внутренними подсистемами ядра.

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

  • Дисковая подсистема, ввод/вывод и файловые системы
    • Добавлена новая реализация драйвера exFAT, основанная на актуальной кодовой базе "sdfat" (2.x), развиваемой компанией Samsung для своих Android-смартфонов. Ранее добавленный в ядро драйвер был основан на устаревшем коде Samsung (версия 1.2.9) и отставал по производительности от нового драйвера примерно на 10%. Напомним, что добавление поддержки exFAT в ядро стало возможным после того, как компания Microsoft опубликовала общедоступные спецификации и предоставила возможность безвозмездного использования патентов на exFAT в Linux.
    • В Btrfs реализована новая команда ioctl() - BTRFS_IOC_SNAP_DESTROY_V2, позволяющая удалять подраздел по его идентификатору. Обеспечена полная поддержка клонирования inline-экстентов. Расширено число точек отмены операций перераспределения, что позволило сократить длительные ожидания при выполнении команды 'balance cancel'. Ускорено определение обратных ссылок на экстенты (например, время выполнения тестового сценария уменьшилось с часа до нескольких минут). Добавлена возможность прикрепления к каждому inode дерева экстентов файла. Переработана схема блокировки, используемая при записи в подразделы и при исключении NOCOW. Повышена эффективность выполнения fsync для диапазонов.
    • В XFS улучшена проверка метаданных и выполнение fsck для активных разделов. Предложена библиотека для перестроения структур btree, которая в будущем будет использована для переработки xfs_repair и реализации возможности восстановления без отмонтирования раздела.
    • В CIFS добавлена экспериментальная поддержка размещения раздела подкачки в SMB3-хранилищах. Реализованы POSIX-расширения в readdir, определённые в спецификации SMB3.1.1. Повышена производительность записи для страниц размером 64KB при включении режима cache=strict и использовании версий протокола 2.1+.
    • ФС EXT4 переведена с bmap и iopoll на использование iomap.
    • В F2FS реализована опциональная поддержка сжатия данных с использованием алгоритма zstd. По умолчанию для сжатия задействован алгоритм LZ4. Добавлена поддержка команды "chattr -c commit". Обеспечено отображение времени монтирования. Добавлен ioctl F2FS_IOC_GET_COMPRESS_BLOCKS для получения сведений о числе сжатых блоков. Добавлены данные о сжатии, выводимые через statx.
    • В файловой системе Ceph добавлена возможность локального выполнения операций создания и удаления (unlink) файла без ожидания ответа от сервера (работа в асинхронном режиме). Изменение, например, позволяет заметно поднять производительность при работе утилиты rsync.
    • В OVERLAYFS добавлена возможность использования virtiofs в качестве ФС верхнего уровня.
    • Переписан код обхода путей в VFS, переделан код разбора символических ссылок и унифицирован обход точек монтирования.
    • В подсистеме scsi непривилегированным пользователям разрешено выполнение команд ZBC.
    • В dm_writecache реализована возможность постепенной очистки кеша на основании параметра max_age, задающего максимальное время жизни блока.
    • В dm_integrity добавлена поддержка операции "discard".
    • В null_blk добавлена поддержка подстановки ошибок для симуляции сбоев при проведении тестирования.
    • Добавлена возможность отправки udev-уведомлений об изменении размера блочного устройства.
  • Сетевая подсистема
    • В Netfilter включены изменения, значительно ускоряющие обработку больших списков сопоставления (nftables set), в которых требуется проверка сочетания подсетей, сетевых портов, протокола и MAC-адресов. Оптимизации внесены в модуль nft_set_pipapo (PIle PAcket POlicies), решающий задачу сопоставления содержимого пакета с применяемыми в правилах фильтрации произвольными диапазонами состояния полей, такими как диапазоны IP и сетевых портов (nft_set_rbtree и nft_set_hash манипулируют сопоставлением интервалов и прямым отражением значений). Векторизированная при помощи 256-разрядных инструкций AVX2 верcия pipapo на системе с процессором AMD Epyc 7402 показала прирост производительности на 420% при разборе 30 тысяч записей, включающих связки порт-протокол. Прирост при сопоставлении связки из подсети и номера порта при разборе 1000 записей составил 87% для IPv4 и 128% для IPv6.
    • Добавлен модуль bareudp, позволяющий инкапсулировать в UDP-туннель различные L3-протоколы, такие как MPLS, IP и NSH.
    • Продолжена интеграция компонентов MPTCP (MultiPath TCP), расширения протокола TCP для организации работы TCP-соединения с доставкой пакетов одновременно по нескольким маршрутам через разные сетевые интерфейсы, привязанные к разным IP-адресам.
    • Добавлена поддержка механизмов аппаратного ускорения инкапсуляции Ethernet-кадров в 802.11 (Wi-Fi).
    • При перемещении устройства из одного пространства имён сетевой подсистемы (network namespace) в другое обеспечена корректировка прав доступа и владельца соответствующих файлов в sysfs.
    • Предоставлена возможность использования флага SO_BINDTODEVICE пользователями, не имеющими прав root.
    • Принята третья часть патчей, переводящих инструментарий ethtool с ioctl() на использование интерфейса netlink. Новый интерфейс упрощает добавление расширений, улучшает обработку ошибок, позволяет отправлять уведомления при изменении состояния, упрощает взаимодействие между ядром и пространством пользователя и сокращает число синхронизируемых именованных списков.
    • Добавлена возможность использования специальных аппаратных ускорителей для выполнения операций отслеживания соединений.
    • В netfilter добавлен хук для подключения классификаторов исходящих пакетов (egress), дополнивший собой ранее присутствовавший хук для входящих пакетов (ingress).
  • Виртуализация и безопасность
    • Добавлена аппаратная реализация аутентификации указателей (Pointer Authentication), использующая специализированные инструкции CPU ARM64 для защиты от атак, использующих приёмы возвратно-ориентированного программирования (ROP) при которых атакующий не пытается разместить свой код в памяти, а оперирует уже имеющимися в загруженных библиотеках кусками машинных инструкций, завершающихся инструкцией возврата управления. Защита сводится к использованию цифровых подписей для проверки адресов возврата на уровне ядра. Подпись хранится в неиспользуемых верхних битах самого указателя. В отличие от программных реализаций создание и проверка цифровых подписей производится при помощи специальных инструкций CPU.
    • Добавлена возможность защиты области памяти от записи при помощи системного вызова userfaultfd(), предназначенного для обработки page faults (обращение к невыделенным страницам памяти) в пространстве пользователя. Идея в том, чтобы использовать userfaultfd() и для отслеживания нарушения доступа к страницам, помеченным защищёнными от записи, и вызова обработчика, который может реагировать на подобные попытки записи (например, для обработки изменений в процессе создания live-снапшотов работающих процессов, фиксации состояния при сбросе дампов памяти на диск, реализации разделяемой памяти, отслеживания изменений в памяти). Функциональность эквивалентна применению mprotect() в связке с обработчиком сигнала SIGSEGV, но работает заметно быстрее.
    • В SELinux объявлен устаревшим параметр "checkreqprot", позволяющий отключить проверку защиты памяти при обработке правил (допускал использование исполняемых областей памяти, независимо от предписаний, заданных в правилах). Символическим ссылкам kernfs разрешено наследование контекста родительских каталогов.
    • В состав включён модуль KRSI, позволяющий прикреплять BPF-программы к любым LSM-хукам в ядре. Изменение позволяет создавать LSM-модули (Linux Security Module) в форме BPF-программ для решения задач аудита и мандатного контроля доступа.
    • Проведена оптимизация производительности /dev/random за счёт пакетной передачи значений CRNG вместо отдельного вызова инструкций RNG. Улучшена работа getrandom и /dev/random на системах ARM64, предоставляющих инструкции RNG.
    • Реализация эллиптической кривой Curve25519 заменена на вариант из библиотеки HACL, для которого приведено математическое доказательство формальной верификации надёжности.
    • Добавлен механизм информирования о свободных страницах памяти. При помощи данного механизма гостевые системы могут передавать хост-системе сведения о страницах, которые больше не используются, и данные страницы хост может забрать обратно.
    • В vfio/pci добавлена поддержка SR-IOV (Single-Root I/O Virtualization).
  • Память и системные сервисы
    • C 80 до 100 символов увеличено ограничение на максимальную длину строки в исходных текстах. При этом разработчикам по-прежнему рекомендуется держаться в границах 80 символов в строке, но это теперь не является жёстким лимитом. Кроме того, превышение лимита на размер строки теперь будет приводить к выводу предупреждения при сборке только если утилита checkpatch запущена с опцией "--strict'. Изменение даст возможность не отвлекать разработчиков на манипуляции с пробелами и более свободно чувствовать себя при выравнивании кода, а также предотвратит излишнее разбиение строк, мешающее восприятию кода и поиску.
    • Добавлена поддержка смешанного режима загрузки EFI, позволяющего без применения специализированного загрузчика загрузить 64-разрядное ядро из 32-разрядной прошивки, выполняемой на 64-разрядном CPU.
    • Включена система выявления и отладки расщеплённых блокировок ("split lock"), возникающих при доступе к невыровненным данным в памяти из-за того, что при выполнении атомарной инструкции данные пересекают две линии кеша CPU. Подобные блокировки приводят к значительному падению производительности (на 1000 циклов медленнее, чем атомарная операция с данными, попадающими в одну линию кеша). В зависимости от загрузочного параметра "split_lock_detect" ядро может на лету выявлять подобные блокировки и выводить предупреждения или отправлять сигнал SIGBUS приложению, вызвавшему блокировку.
    • В планировщике задач обеспечено отслеживание показателей датчиков температуры (Thermal Pressure) и реализован учёт перегрева при размещении задач. Пользуясь выдаваемой статистикой обработчик температуры (thermal governor) может корректировать максимальную частоту CPU при перегреве, а планировщик задач теперь учитывает снижение вычислительной мощности из-за подобного урезания частоты при планировании запуска задач (раньше планировщик реагировал на изменение частоты с определённой задержкой, какое-то время принимая решения на основе завышенных предположениях о доступных вычислительных ресурсах).
    • В планировщике задач задействованы инвариантные показатели отслеживания нагрузки, позволяющие корректно оценить нагрузку, независимо от текущей частоты работы CPU. Изменение позволяет более точно прогнозировать поведение задач в условиях динамического изменения вольтажа и частоты CPU. Например, задача, которая потребляла 1/3 ресурсов CPU при частоте 1000 MHz, станет потреблять 2/3 ресурсов при снижении частоты до 500 MHz, что раньше создавало ложное предположение о работе на полную мощность (т.е. задачи для планировщика казались более крупными только за счёт снижения частоты, что приводило к принятию неверных решений в schedutil cpufreq governor).
    • Драйвер Intel P-state, отвечающий за выбор режимов производительности, переведён на использование schedutil.
    • Реализована возможность использования подсистемы BPF при работе ядра в режиме реального времени (PREEMPT_RT). Ранее при включении PREEMPT_RT предписывалось отключение BPF.
    • Добавлен новый тип BPF-программ - BPF_MODIFY_RETURN, которые могут прикрепляться к функции в ядре и изменять возвращаемое данной функцией значение.
    • Добавлена возможность использования системного вызова clone3() для создания процесса в cgroup, отличающемся от родительского cgroup, что позволяет родительскому процессу применить ограничения и включить аккаунтинг сразу после порождения нового процесса или потока. Например, сервисный менеджер может напрямую выделять новые сервисы в отдельные cgroup, а новые процессы при помещении в "замороженные" cgroup и будут сразу остановлены.
    • в Kbuild добавлена поддержка переменной окружения "LLVM=1" для переключения на инструментарий Clang/LLVM при сборке ядра. Подняты требования к версии binutils (2.23).
    • В debugfs добавлена секция /sys/kernel/debug/kunit/ с результатами тестов kunit.
    • Добавлен параметр загрузки ядра pm_debug_messages (аналог/sys/power/pm_debug_messages), включающий вывод отладочной информации о работе системы управления питанием (полезно при отладке проблем со спящим и ждущим режимом).
    • В интерфейс асинхронного ввода/вывода io_uring добавлена поддержка splice() и атомарного выбора буферов.
    • Улучшено профилирование cgroup при помощи инструментария perf. Ранее perf мог профилировать задачи только в определённом cgroup и не мог узнать к какой cgroup принадлежит текущий образец. Теперь perf получает сведения о cgroup для каждой выборки, что позволяет профилировать более одного cgroup и применять сортировку по cgroup в отчётах.
    • В cgroupfs, псевдо-ФС для управления cgroups, добавлена поддержка расширенных атрибутов (xattrs) при помощи которых, например, можно оставлять дополнительную информацию для обработчиков в пространстве пользователя.
    • В cgroup memory controller добавлена поддержка рекурсивной защиты значения "memory.low", регулирующего минимальный объём оперативной памяти, предоставленной участникам группы. При монтировании иерархии cgroup с опцией "memory_recursiveprot" значение "memory.low", которое установлено для нижних узлов, автоматически будет распределяться для всех дочерних узлов.
    • Добавлен фреймворк Uacce (Unified/User-space-access-intended Accelerator Framework) для совместного использования виртуальных адресов (SVA, Shared Virtual Addressing) между CPU и периферийными устройствами, позволяющий аппаратным ускорителям получить доступ к структурам данных в основном CPU.
  • Аппаратные архитектуры
    • Для архитектуры ARM реализована возможность горячего извлечения памяти.
    • Для архитектуры RISC-V добавлена поддержка горячего подключения и извлечения CPU (CPU hotplug). Для 32-разрядных RISC-V реализован eBPF JIT.
    • Убрана возможность использования 32-разрядных ARM-систем для запуска гостевых окружений KVM.
    • Удалена "фиктивная" реализация NUMA для архитектуры s390, для которой так и не найдены сценарии использования, позволяющие добиться повышения производительности.
    • Для ARM64 добавлена поддержка расширения AMU (Activity Monitors Unit), определённого в ARMv8.4 и предоставляющего счётчики производительности, которые использованы для расчёта коэффициентов коррекции масштабирования частоты в планировщике задач.
  • Оборудование
    • Добавлена поддержка устройств vDPA, в которых используется канал обмена данных, соответствующий спецификациям virtio. vDPA-устройства могут быть как физически подключённым оборудованием, так и эмулируемыми программно виртуальными устройствами.
    • В подсистеме GPIO появилась новая команда ioctl() для мониторинга изменений, позволяющая наладить информирование процесса об изменении состояния любой линии GPIO. В качестве примера использования новой команды предложена утилита gpio-watch.
    • В DRM-драйвере i915 для видеокарт Intel включена по умолчанию поддержки чипов Tigerlake ("Gen12") и добавлена начальная поддержка управления подсветкой OLED. Улучшена поддержка чипов Ice Lake, Elkhart Lake, Baytrail и Haswell.
    • В драйвере amdgpu добавлена возможность загрузки прошивок в чип USBC для ASIC. Улучшена поддержка чипов AMD Ryzen 4000 "Renoir". Появилась поддержка управления OLED-панелями. Обеспечено отображение состояния прошивки в debugfs.
    • В DRM-драйвер vmwgfx для систем виртуализации VMware добавлена возможность использования OpenGL 4 в гостевых системах (раннее поддерживался OpenGL 3.3).
    • Добавлен новый DRM-драйвер tidss для дисплейной системы платформы TI Keystone.
    • Добавлены драйверы для LCD-панелей: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech RK101II01D-CT, Frida FRD350H54004.
    • В систему управления питанием добавлена поддержка платформы Intel Jasper Lake (JSL) на базе Atom.
    • Добавлена поддержка ноутбука Pinebook Pro на базе Rockchip RK3399, планшета Pine64 PineTab и смартфона PinePhone на базе Allwinner A64.
    • Добавлены поддержка новых звуковых кодеков и чипов: Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc.
    • Добавлена поддержка ARM-плат и платформ Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron "sl28", 11 вариантов платы i.MX6 TechNexion Pico, три новых варианта Toradex Colibri, Samsung S7710 Galaxy Xcover 2 на базе ST-Ericsson u8500, DH Electronics DHCOM SoM и PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.

  1. OpenNews: Релиз ядра Linux 5.6
  2. OpenNews: Релиз ядра Linux 5.5
  3. OpenNews: Релиз ядра Linux 5.4
  4. OpenNews: Для ядра Linux развивается система распределённого выполнения потоков Popcorn
  5. OpenNews: Facebook предложил новый механизм управления памятью slab для ядра Linux
Обсуждение (78 +22) | Тип: Программы |
31.05.2020 Устаревание корневого сертификата AddTrust привело к сбоям в системах с OpenSSL и GnuTLS (102 +29)
  30 мая истёк 20-летний срок действия корневого сертификата AddTrust, который применялся для формирования перекрёстной подписи (cross-signed) в сертификатах одного из крупнейших удостоверяющих центров Sectigo (Comodo). Перекрёстная подпись позволяла обеспечить совместимость с устаревшими устройствами, в хранилище корневых сертификатов которых не был добавлен новый корневой сертификат USERTRust.

Теоретически прекращение действия корневого сертификата AddTrust должно было привести лишь к нарушению совместимости с устаревшими системами (Android 2.3, Windows XP, Mac OS X 10.11, iOS 9 и т.п.), так как второй корневой сертификат, используемый в перекрёстной подписи остаётся актуальным и современные браузеры учитывают его при проверке цепочки доверия. На практике обнаружились проблемы с проверкой перекрёстной подписи в не использующих браузеры TLS-клиентах, в том числе на базе OpenSSL 1.0.x и GnuTLS. Безопасное соединение перестало устанавливаться с выводом ошибки об устаревании сертификата, если на сервере используется сертификат Sectigo, связанный цепочкой доверия с корневым сертификатом AddTrust.

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

Например, возникли проблемы с доступом к некоторым репозиториям пакетов в Debian и Ubuntu (apt стал выдавать ошибку проверки сертификата), стали завершаться сбоем обращения из скриптов при помощи утилит "curl" и "wget", наблюдаются ошибки при использовании Git, нарушилась работа платформы потокового вещания Roku, перестали вызываться обработчики Stripe и DataDog, начали возникать крахи в приложениях Heroku, перестали подключаться клиенты OpenLDAP, фиксирутся проблемы с отправкой почты на серверы SMTPS и SMTP со STARTTLS. Кроме того наблюдаются проблемы в различных Ruby-, PHP- и Python-скриптах, использующих модуль с http-клиентом. Из браузеров проблема затрагивает Epiphany, в котором перестали загружаться списки блокировки рекламы. Программы на языке Go проблеме не подвержены, так как в Go предлагается собственная реализация TLS.

Предполагалось, что проблема затрагивает старые выпуски дистрибутивов (включая Debian 9, Ubuntu 16.04, RHEL 6/7) в которых используются проблемные ветки OpenSSL, но проблема проявилась также при работе пакетного менеджера APT в актуальных выпусках Debian 10 и Ubuntu 18.04/20.04, так как APT использует библиотеку GnuTLS. Суть проблемы в том, что многие TLS/SSL-библиотеки разбирают сертификат как линейную цепочку, в то время как в соответствии с RFC 4158 сертификат может представлять ориентированный распределённый циклический граф с несколькими якорями доверия, которые нужно учитывать. О данной недоработке в OpenSSL и GnuTLS было известно уже много лет. В OpenSSL проблема была устранена в ветке 1.1.1, а в GnuTLS остаётся неисправленной.

В качестве обходного пути устранения сбоя предлагается удалить из системного хранилища сертификат "AddTrust External CA Root" (например, удалить из /etc/ca-certificates.conf и /etc/ssl/certs, а затем запустить "update-ca-certificates -f -v"), после чего OpenSSL начинает нормально обрабатывать перекрёстно подписанные сертификаты с его участием. При использовании пакетного менеджера APT на свой страх и риск можно отключить для отдельных запросов проверку сертификатов (например, "apt-get update -o Acquire::https::download.jitsi.org::Verify-Peer=false").

Для блокирования проблемы в Fedora и RHEL предлагается добавить сертификат AddTrust в чёрный список:


   trust dump --filter "pkcs11:id=%AD%BD%98%7A%34%B4%26%F7%FA%C4%26%54%EF%03%BD%E0%24%CB%54%1A;type=cert" \
      > /etc/pki/ca-trust/source/blacklist/addtrust-external-root.p11-kit
   update-ca-trust extract

Но данный способ не работает для GnuTLS (например, продолжает выдаваться ошибка проверки сертификата при запуске утилиты wget).

На стороне сервера можно изменить порядок перечисления сертификатов в цепочке доверия, отправляемых сервером к клиенту (если связанный с "AddTrust External CA Root" сертификат будет убран из списка, то проверка клиентом пройдёт успешно). Для проверки и генерации новой цепочки доверия можно использовать сервис whatsmychaincert.com. Компания Sectigo также предоставила альтернативный перекрёстно подписанный промежуточный сертификат "AAA Certificate Services", который будет действовать до 2028 года и позволит сохранить совместимость со старыми версиями ОС.

Дополнение: Проблема также проявляется в LibreSSL.

  1. OpenNews: Let's Encrypt занял 36% рынка удостоверяющих центров
  2. OpenNews: Перевод мировых атомных часов на одну секунду привёл к массовому зависанию серверных приложений
  3. OpenNews: Ожидается отзыв всех остальных сертификатов Trustico из-за полной компрометации сервера
  4. OpenNews: Уязвимость в удостоверяющем центре Comodo позволила получить сертификат для чужого домена
  5. OpenNews: Все дополнения к Firefox отключены из-за истечения срока сертификата Mozilla
Обсуждение (102 +29) | Тип: К сведению | Интересно
30.05.2020 Среда проектирования игр Godot адаптирована для работы в web-браузере (42 +7)
  Разработчики свободного игрового движка Godot представили начальную версию графической среды для разработки и проектирования игр Godot Editor, способную работать в web-браузере. Движок Godot уже давно предоставляет поддержку экспорта игр для платформы HTML5, а теперь добавлена возможность запуска в браузере и среды разработки игр.

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

Работа в браузере реализована при помощи компиляции в промежуточный код WebAssembly, что стало возможным после появления в WebAssembly поддержки потоков и добавления в JavaScript SharedArrayBuffer и средств доступа к локальной файловой системе (API Native FileSystem). Начальная версия Godot Editor для браузеров работоспособна в свежих выпусках браузеров на основе Chromium и в ночных сборках Firefox (требуется поддержка SharedArrayBuffer).

Браузерный вариант пока находится на ранней стадии развития и не все доступные в обычной версии возможности реализованы. Обеспечена поддержка запуска редактора и менеджера проектов, создания, редактирования и запуска проекта. Для сохранения и загрузки файлов предоставлено несколько провайдеров-хранения: None (данные теряются после закрытия вкладки), IndexedDB (хранение в браузере небольших проектов, до 50 МБ на настольных системах и 5 МБ на мобильных устройствах), Dropbox и FileSystem API (доступ к локальной ФС). В дальнейшем ожидается поддержка хранения с использованием WebDAV, расширение возможностей по обработке звука, поддержка скриптов GDNative, а также появление виртуальной клавиатуры и экранных жестов для управления с устройств с сенсорными экранами.

  1. OpenNews: Выпуск открытого игрового движка Godot 3.2
  2. OpenNews: Разработчики игрового движка Unity анонсировали Unity Editor для GNU/Linux
  3. OpenNews: Первый стабильный релиз открытого игрового движка Godot
  4. OpenNews: Доступна бета-версия Linux-редакции игрового движка OpenXRay
  5. OpenNews: Игровой движок Corona меняет название на Solar2D и становится полностью открытым
Обсуждение (42 +7) | Тип: К сведению |
29.05.2020 Вредоносное ПО, поражающее NetBeans для внедрения бэкдоров в собираемые проекты (30 +14)
  GitHub выявил вредоносное ПО, поражающее проекты в интегрированной среде разработки NetBeans и использующее процесс сборки для своего распространения. Расследование показало, что при помощи рассматриваемого вредоносного ПО, которому присвоено имя Octopus Scanner, были скрыто интегрированы бэкдоры в 26 открытых проектов, имеющих репозитории на GitHub. Первые следы проявления Octopus Scanner датированы августом 2018 года.

Вредоносное ПО способно выявлять файлы с проектами NetBeans и добавлять свой код в файлы проекта и собираемые JAR-файлы. Алгоритм работы сводится к нахождению каталога NetBeans с проектами пользователя, перебору всех проектов в данном каталоге, копированию вредоносного сценария в nbproject/cache.dat и внесению изменений в файл nbproject/build-impl.xml для вызова этого сценария при каждой сборке проекта. При сборке копия вредоносного ПО включается в результирующие файлы JAR, которые становятся источником дальнейшего распространения. Например, вредоносные файлы были размещены в репозиториях вышеупомянутых 26 открытых проектов, а также различными другими проектами при публикации сборок новых релизов.

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

Всего при изучении поражённых проектов было выявлено 4 варианта инфицирования. В одном из вариантов для активации бэкдора в Linux создавался файл автозапуска "$HOME/.config/autostart/octo.desktop", а в Windows для запуска применялся запуск заданий через schtasks. Среди других создаваемых файлов:

  • $HOME/.local/share/bbauto
  • $HOME/.config/autostart/none.desktop
  • $HOME/.config/autostart/.desktop
  • $HOME/.local/share/Main.class
  • $HOME/Library/LaunchAgents/AutoUpdater.dat
  • $HOME/Library/LaunchAgents/AutoUpdater.plist
  • $HOME/Library/LaunchAgents/SoftwareSync.plist
  • $HOME/Library/LaunchAgents/Main.class

Бэкдор мог использоваться для добавления закладок в развиваемый разработчиком код, организации утечки кода проприетарных систем, кражи конфиденциальных данных и захвата учётных записей. Исследователи из GitHub не исключают, что вредоносная деятельность не ограничивается NetBeans и могут существовать другие варианты Octopus Scanner, внедряющиеся для своего распространения в процесс сборки на базе Make, MsBuild, Gradle и других систем.

Названия поражённых проектов не упоминается, но их легко можно найти через поиск в GitHub по маске "cache.dat". Среди проектов, в которых найдены следы вредоносной активности: V2Mp3Player, JavaPacman, Kosim-Framework, Punto-de-venta, 2D-Physics-Simulations, PacmanGame, GuessTheAnimal, SnakeCenterBox4, Secuencia-Numerica, CallCenter, ProyectoGerundio, pacman-java_ia, SuperMario-FR-.

  1. OpenNews: Уязвимости в механизме автообновления Apache NetBeans
  2. OpenNews: Выпуск интегрированной среды разработки Apache NetBeans 11.3
  3. OpenNews: В репозитории NPM выявлен вредоносный пакет bb-builder. Выпуск NPM 6.11
  4. OpenNews: В каталоге Python-пакетов PyPI выявлены две вредоносные библиотеки
  5. OpenNews: В RubyGems выявлено 724 вредоносных пакета
Обсуждение (30 +14) | Тип: Проблемы безопасности |
29.05.2020 Второй выпуск открытой платформы виртуальной реальности Monado (13 +4)
  Компания Collabora представила выпуск проекта Monado 0.2, нацеленного на создание открытой реализации стандарта OpenXR. Monado предоставляет runtime, полностью соответствующий требованиям OpenXR, который может использоваться для организации работы с виртуальной и дополненной реальности на смартфонах, планшетах, ПК и любых других устройствах. Стандарт OpenXR подготовлен консорциумом Khronos и определяет универсальный API для создания приложений виртуальной и дополненной реальности, а также набор прослоек для взаимодействия с оборудованием, абстрагирующим особенности конкретных устройств. Код проекта написан на языке Си и распространяется под свободной лицензией Boost Software License 1.0, совместимой с GPL.

Среди добавленных улучшений:

  • В композитном сервере появилась поддержка многослойной отрисовки, позволяющей приложениям размещать несколько структур XrCompositionLayerProjection и XrCompositionLayerQuad. Работа с несколькими слоями важна для приложений, использующих четыре слоя для отрисовки пользовательских интерфейсов, а также является базисом для дальнейшей поддержки приложений с наложенным поверх сцены интерфейсом, таких как xrdesktop или Pluto VR.

  • Комнозитный сервер и драйверы вынесены в отдельные сервисные процессы. Ведётся работа по предоставлению возможности подключения нескольких приложений OpenXR к одному экземпляру сервиса Monado и их одновременной визуализации при помощи расширения XR_EXTX_overlay.
  • Обеспечена поддержка контроллеров Vive Wand и Valve Index и их использования для управления движением с тремя степенями свободы (3DOF, перемещение по трём направлениям). В ближайшие месяцы планируется добавить поддержку шести степеней свободы (6DOF, вперёд/назад, вверх/вниз, влево/вправо, рыскание, тангаж, крен), используя систему отслеживания Lighthouse.
  • Добавлена поддержка Bluetooth LE, которая задействована в драйвере для Google Daydream 3DOF Controller.
  • Добавлен драйвер arduino для экспериментов при создании собственных контроллеров;
  • В основной состав интегрирован драйвер открытой системы отслеживания позиции libsurvive.
  • В отладочном интерфейсе пользователя появилась поддержка пользовательских графиков, которые в текущем виде задействованы для визуализации нагрузки на CPU при отрисовке.
  • В monado-gui реализована поддержка хранения настроек в каталогах $XDG_CONFIG_HOME/monado и $HOME/.config/monado. Добавлена возможность настройки стереокамер с интерфейсом USB для PSMV (PlayStation Move) и PSVR (PlayStation VR).
  • Переработана система сборки. Добавлен PPA-репозиторий для Ubuntu с пакетами Monado, OpenXR-SDK и udev-правилами xr-hardware.
  • Добавлена поддержка запуска сервиса monado-service при помощи активации через сокет в systemd.



Состав платформы:

  • Движок пространственного зрения (отслеживание объектов, определение поверхностей, реконструкция мешей, распознавание жестов, отслеживания движения глаз);
  • Движок для отслеживания персонажа (гиростабилизатор, предсказание движений, контроллеры, оптическое отслеживание движений через камеру, отслеживание позиции на основе данных от VR-шлема);
  • Композитный сервер (режим прямого вывода, проброс видео, корректировка линз, композитинг, формирование рабочего пространства для одновременно работы с несколькими приложениями);
  • Движок взаимодействия (симуляция физических процессов, набор виджетов и тулкит для приложений виртуальной реальности);
  • Инструментарий (калибровка оборудования, установка границ перемещения).

Основные возможности:

  • Драйвер для шлемов виртуальной реальности HDK (OSVR Hacker Developer Kit) и PlayStation VR HMD, а также для контроллеров PlayStation Move и Razor Hydra.
  • Возможность использования оборудования, поддерживаемого проектом OpenHMD.
  • Драйвер для очков дополненной реальности North Star.
  • Драйвер для системы отслеживания позиции Intel RealSense T265.
  • Набор udev-правил для настройки доступа к устройствам виртуальной реальности без получения полномочий root.
  • Компоненты для отслеживания движения с фреймворком для фильтрации и потоковой передачи видео.
  • Система отслеживания персонажа с шестью степенями свободы (6DoF, вперёд/назад, вверх/вниз, влево/вправо, рыскание, тангаж, крен) для контроллеров PSVR и PS Move.
  • Модули для интеграции с графическими API Vulkan и OpenGL.
  • Безэкранный режим (Headless).
  • Управление пространственным взаимодействием и точкой обзора.
  • Базовая поддержка синхронизации кадров и ввода информации (действий).
  • Готовый композитный сервер, поддерживающий прямой вывод на устройство, минуя системный X-сервер. Предоставляются шейдеры для Vive и Panotools. Имеется поддержка проекционных слоёв.

  1. OpenNews: Первый выпуск Monado, платформы для устройств виртуальной реальности
  2. OpenNews: Проект xrdesktop для использования GNOME и KDE в шлемах виртуальной реальности
  3. OpenNews: Доступна бета-версия Linux-редакции игрового движка OpenXRay
  4. OpenNews: Фонд Khronos создаёт рабочую группу по развитию открытых стандартов 3D-коммерции
  5. OpenNews: Выпуск библиотеки компьютерного зрения OpenCV 4.2
Обсуждение (13 +4) | Тип: Программы |
28.05.2020 Выпуск распределённой СУБД TiDB 4.0 (45 +6)
  Доступен релиз распределённой СУБД TiDB 4.0, развиваемой под впечатлением от технологий Google Spanner и F1. TiDB относится к категории гибридных систем HTAP (Hybrid Transactional/Analytical Processing), способных как обеспечивать выполнение транзакций в реальном времени (OLTP), так и выполнять обработку аналитических запросов. Проект написан на языке Go и распространяется под лицензией Apache 2.0.

Особенности TiDB:

  • Поддержка SQL и предоставление клиентского интерфейса, совместимого с протоколом MySQL, что упрощает адаптацию для TiDB существующих приложений, написанных для MySQL, а также позволяет задействовать распространённые клиентские библиотеки. Кроме протокола MySQL для обращения к СУБД можно использовать API на базе JSON и коннектор для Spark.
  • Из возможностей SQL поддерживаются индексы, агрегатные функции, выражения GROUP BY, ORDER BY, DISTINCT, слияния (LEFT JOIN / RIGHT JOIN / CROSS JOIN), представления, оконные функции и подзапросы. Предоставляемых возможностей достаточно для организации работы с TiDB таких web-приложений, как PhpMyAdmin, Gogs и Wordpress;
  • Возможность горизонтального масштабирования и обеспечения отказоустойчивости: размер хранилища и вычислительную мощность можно наращивать простым подключением новых узлов. Данные распределяются по узлам с избыточностью, позволяющей продолжить работу в случае сбоя отдельных узлов. Сбои обрабатываются автоматически.
  • Система гарантирует непротиворечивость и для клиентского ПО выглядит как одна большая СУБД, несмотря на то, что фактически для выполнения транзакции привлекаются данные со множества узлов.
  • Для физического хранения данных на узлах могут применяться разные бэкенды, например, локальные движки хранения GoLevelDB и BoltDB или собственные движки распределённого хранилища TiKV и TiFlash. TiKV хранит данные в разрезе строк в формате ключ/значение и является более оптимальным для задач обработки транзакций (OLTP). TiFlash хранит данные в привязке к столбцам и позволяет добиться более высокой производительности при решении аналитических задач (OLAP).
  • Возможность асинхронного изменения схемы хранения, позволяющая на лету добавлять столбцы и индексы без остановки обработки текущих операций.



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

  • По умолчанию включён распределённый сборщик мусора Green GC, позволяющий существенно повысить скорость сборки мусора в крупных кластерах и повысить стабильность работы;
  • Добавлена поддержка больших транзакций, размер которых ограничены практически размером физической памяти. Ограничение размера одной транзакции увеличено со 100 МБ до 10ГБ;
  • Добавлена поддержка команд BACKUP и RESTORE для резервного копирования;
  • Добавлена возможность установки блокировки на таблицы;
  • Добавлен совместимый с MySQL механизм изоляции транзакций на уровне чтения (READ COMMITTED);
  • В команду "ADMIN SHOW DDL JOBS" добавлена поддержка выражений LIKE и WHERE;
  • Добавлен параметр oom-use-tmp-storage, позволяющий использовать временные файлы для кэширования промежуточных результатов в условиях нехватки оперативной памяти;
  • Добавлено ключевое слово Random для присвоения атрибутам случайных значений;
  • В команде LOAD DATA появилась возможность использования шестнадцатеричных и двоичных выражений;
  • Добавлено 15 параметров для управления поведением оптимизатора;
  • Добавлены средства для диагностики производительности SQL-запросов. Добавлен лог медленных запросов, доступный через системные таблицы SLOW_QUERY / CLUSTER_SLOW_QUERY;
  • Добавлена поддержка функций для работы с последовательностями;
  • Добавлена возможность динамического изменения параметров конфигурации, читаемых из PD (Placement Driver, сервер управления кластером). Добавлена возможность использования выражения "SET CONFIG" для изменения настроек узлов PD/TiKV.
  • Добавлена настройка max-server-connections для ограничения максимального числа одновременных соединений к серверу (по умолчанию 4096);
  • Увеличена производительность в ситуациях, когда запрошенные столбцы полностью покрываются индексами;
  • Добавлена оптимизация запросов на основе слияния индексов;
  • Повышена производительность операций с диапазонами значений;
  • Снижена нагрузка на CPU за счёт кэширования результатов обращения к индексам и отсеивания дубликатов;
  • Добавлена поддержка нового формата хранения строк, позволяющего увеличить производительность таблиц с большим числом столбцов;
  • В функции GROUP_CONCAT появилась поддержка выражения "ORDER BY";
  • Добавлена возможность извлечения данных из лога TiFlash через SQL;
  • В команде "RECOVER TABLE реализована поддержка восстановления обрезанных таблиц;
  • Добавлена системная таблица DDLJobs для запроса деталей о выполнении работ DDL;
  • Добавлена возможность применения команды SHOW CONFIG для показа настроек PD и TiKV;
  • Включён по умолчанию кэш сопроцессора;
  • Число сопрограмм (goroutine) в фазе повторных попыток коммита теперь может контролироваться при помощи настройки committer-concurrency;
  • Добавлена возможность отображения регионов раздела таблиц (table partition);
  • В tidb-server добавлена возможность ограничения размера временного хранилища;
  • Добавлена поддержка операций "insert into tbl_name partition(partition_name_list)" и "replace into tbl_name partition(partition_name_list)";
  • В используемом для секционирования (партицирования) хэше добавлена поддержка фильтрации по признаку "is null";
  • Для секционированных таблиц добавлена поддержка операций проверки, чистки и восстановления индексов.

  1. OpenNews: Выпуск СУБД Redis 6.0
  2. OpenNews: Выпуск СУБД TimescaleDB 1.7
  3. OpenNews: PostgreSQL Anonymizer 0.6, расширение для анонимизации данных в СУБД
  4. OpenNews: Опубликован второй кандидат в релизы встраиваемой СУБД libmdbx 1.0
  5. OpenNews: Новая версия СУБД ArangoDB 3.6
Обсуждение (45 +6) | Тип: Программы |
28.05.2020 Выпуск Chrome OS 83 (59 –5)
  Состоялся релиз операционной системы Chrome OS 83, основанной на ядре Linux, системном менеджере upstart, сборочном инструментарии ebuild/portage, открытых компонентах и web-браузере Chrome 83. Пользовательское окружение Chrome OS ограничивается web-браузером, а вместо стандартных программ задействованы web-приложения, тем не менее, Chrome OS включает в себя полноценный многооконный интерфейс, рабочий стол и панель задач. Сборка Chrome OS 83 доступна для большинства актуальных моделей Chromebook. Энтузиастами сформированы неофициальные сборки для обычных компьютеров с процессорами x86, x86_64 и ARM. Исходные тексты распространяются под свободной лицензией Apache 2.0. Выпуск Chrome OS 82 был пропущен из-за перевода разработчиков на работу на дому в условиях пандемии коронавируса SARS-CoV-2.

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

  • Добавлена возможность присвоения имён виртуальным рабочим столам. Имя можно поменять в обзорном режиме, кликнув на назначенные по умолчанию названия ("Desk 1", "Desk 2" и т.д.). Изменённые имена запоминаются и сохраняются после перезагрузки. Для вызова обзорного режима можно нажать кнопку просмотра открытых окон в верхней части клавиатуры (прямоугольник с двумя полосками) или провести тремя пальцами вниз по трекпаду.
  • Добавлена опция для показа в открытом виде пароля или PIN-кода, введённого во время аутентификации, для того, чтобы убедиться, что пароль введён как задумано.
  • В Google Assistant добавлена возможность управления воспроизведением мультимедийного контента через текстовые или голосовые команды "Pause", "Next", "Resume" и "Stop".
  • Добавлена поддержка сервиса "Google for Families", при помощи которого можно настроить то, какие дополнения и приложения разрешено использовать детям, осуществить привязку к школьной учётной записи ребёнка и ограничить допустимые временные рамки для работы на устройстве.
  • Включена по умолчанию функция группировки вкладок, позволяющая объединять несколько сходных по назначению вкладок в визуально разделённые группы. Каждой группе можно привязать свой цвет и имя. Дополнительно предложена экспериментальная возможность сворачивания и раскрытия групп, которая пока работает не на всех системах. Например, несколько непрочитанных статей можно временно свернуть, оставив только метку, чтобы они не занимали место при навигации, а при возвращении к чтению вернуть на место.
  • Обеспечено отображение уведомления о необходимости перезапуска после загрузки обновления с более новой версией Chrome OS.
  • Добавлена система подсказок по использованию экранных жестов для управления устройством в планшетном режиме.
  • В разделе конфигуратора "Device > Power" предложены раздельные настройки перехода в энергосберегающий режим при подключении устройства к сети и автономной работе.
  • Мультимедийные разделы в файловом менеджере (секции Recents, Audio, Images, Videos в верхней части боковой панели), позволяющие быстро обратиться к различным категориям недавно добавленного мультимедийного контента, теперь доступны на всех устройствах.
  • В ARC++ (App Runtime for Chrome), прослойке для запуска Android-приложений в Chrome OS, расширены средства кэширования APK-файлов установленных приложений. Существенно повышена надёжность установки Android-приложений в ChromeOS за счёт откладывания обновления компонентов Google Play (приложения будут установлены до обновления Google Play). Добавлена поддержка кэширования уже установленных приложений и разбитых на несколько файлов APK-пакетов, которая позволили значительно сократить время установки, если приложение уже установлено другим пользователем устройства или используется во временных сеансах, в которых приложения устанавливаются при каждом входе.

  1. OpenNews: Релиз Chrome 83
  2. OpenNews: Выпуск GalliumOS 3.0, Linux-дистрибутива для устройств, поставляемых с ChromeOS
  3. OpenNews: Google продлил до 8 лет время поддержи устройств на базе ChromeOS
  4. OpenNews: Выпуск Chrome OS 80
  5. OpenNews: Выпуск Chrome OS 81
Обсуждение (59 –5) | Тип: Программы |
28.05.2020 Релиз Mesa 20.1.0, свободной реализации OpenGL и Vulkan (93 +43)
  Представлен релиз свободной реализации API OpenGL и Vulkan - Mesa 20.1.0. Первый выпуск ветки Mesa 20.1.0 имеет экспериментальный статус - после проведения окончательной стабилизации кода будет выпущена стабильная версия 20.1.1. В Mesa 20.1 реализована полная поддержка OpenGL 4.6 для GPU Intel (драйверы i965, iris) и AMD (radeonsi), поддержка OpenGL 4.5 для GPU AMD (r600) и NVIDIA (nvc0), OpenGL 4.3 для virgl (виртуальный GPU Virgil3D для QEMU/KVM), а также поддержка Vulkan 1.2 для карт Intel и AMD.

Среди изменений:

  • Добавлена прослойка для выбора активного устройства для API Vulkan в системах с несколькими GPU с поддержкой Vulkan, работающая по аналогии с DRI_PRIME для OpenGL. Для выбора активного драйвера и GPU предусмотрена переменная окружения MESA_VK_DEVICE_SELECT (если не установлена используется DRI_PRIME).
  • В драйверы i965 и iris для GPU Intel добавлена поддержка ожидаемых в следующем году чипов на базе новой микроархитектуры Rocket Lake.
  • В развиваемый для GPU Intel Vulkan-драйвер ANV добавлена оптимизация для чипов на базе микроархитектуры Icelake (Gen11), допускающая использование чистых цветов при текстурировании. При тестировании в Dota2 изменение позволило снизить число операций преобразования цветов на 95% и повысить производительность на 3.5%.
  • В Vulkan-драйвере ANV повышена эффективность использования кэша на системах с чипами Intel Ivybridge и Haswell. Использование тестов вычислительных функций Vulkan из набора Geekbench 5 показало прирост производительности на 330% на оборудовании Haswell GT3 (прирост за счёт того, что раньше кэш в некоторых условиях не использовался).
  • В драйверы для GPU Intel (i965, iris) добавлен режим "чёрной дыры" (OpenGL-расширение INTEL_blackhole_render), отключающий все операции рендеринга, передаваемые GPU, но сохраняющий обработку операций OpenGL.
  • Для графических чипов Intel портирована ранее добавленная для чипов AMD поддержка векторизации NIR, бестипового промежуточного представления (IR) шейдеров, нацеленного на работу на самом нижнем уровне, под GLSL IR и внутренним IR Mesa. С практической стороны за счёт более качественной оптимизации шейдеров изменение позволило поднять производительность работы OpenGL и Vulkan во многих играх на системах с GPU Intel. Например, в игре Rise of the Tomb Raider отмечается прирост производительности на 3%, а в Shadow of the Tomb Raider на 10%.
  • В бэкенд для компиляции шейдеров "ACO", который развивается компанией Valve в качестве альтернативы компилятору шейдеров LLVM, для GPU GFX9+ добавлена поддержка типа shaderInt16, позволяющего использовать 16-разрядные целые числа в коде шейдеров. Для GPU AMD Navi (GFX10) обеспечено применение движков NGG (Next-Gen Geometry) при работе с вершинными и тесселяционными шейдерами.
  • Для GPU AMD Navi 12 и Navi 14 включена поддержка режима отображаемого DCC (Delta Сolor Сompression), обеспечивающего работу со сжатыми данными цветов при организации вывода на экран.
  • Добавлена экспериментальная поддержка NIR для классического Gallium3D-драйвера R600 (AMD Radeon HD 2000-6000) с поддержкой геометрических, фрагментных, вершинных и тесселяционных шейдеров.
  • В Vulkan драйвер RADV добавлен патч за счёт оптимизации работы с памятью увеличивающий производительность игр Id Tech на системах с APU AMD.
  • В драйвере Panfrost реализована экспериментальная поддержка OpenGL ES 3.0 и обеспечена поддержка 3D-рендеринга для GPU Bifrost (Mali G31). Подготовлена начальная реализация компилятора шейдеров, поддерживающего специфичный для GPU Bifrost набор внутренних инструкций.
  • В Vulkan-драйвер TURNIP, развиваемый для GPU Qualcomm Adreno, добавлена поддержка геометрических шейдеров и чипов Adreno 650.
  • В Gallium3D-драйвере LLVMpipe, обеспечивающем программную отрисовку, появилась поддержка тесселяционных шейдеров.
  • Внесена большая порция оптимизаций в glthread (многопоточная реализация OpenGL). После внесения изменений производительность гоночного симулятора Torcs выросла на 16% в конфигурации по умолчанию и на 40% при включении glthread.
  • Добавлена опция allow_draw_out_of_order (включается через driconf) для включения оптимизаций для ускорения операций неупорядоченной отрисовки, характерных для САПР. При включении опции в тесте Viewperf11 Catia наблюдается ускорение в 7%.
  • Добавлены новые расширения OpenGL:
  • В Vulkan-драйвер RADV (для карт AMD) добавлены расширения:
  • В Vulkan-драйвер ANV (для карт Intel) добавлены расширения:

    1. OpenNews: Релиз Mesa 20.0.0 с поддержкой Vulkan 1.2
    2. OpenNews: В Mesa добавлена экспериментальная поддержка GLES 3.0 для GPU Mali
    3. OpenNews: Релиз Mesa 19.3.0, свободной реализации OpenGL и Vulkan
    4. OpenNews: Для Raspberry Pi 4 сертифицирована поддержка OpenGL ES 3.1 и развивается новый Vulkan-драйвер
    5. OpenNews: Опубликован графический стандарт Vulkan 1.2
Обсуждение (93 +43) | Тип: Программы |
27.05.2020 Релиз OpenSSH 8.3 с устранением уязвимости в scp (20 +21)
  После трёх месяцев разработки представлен релиз OpenSSH 8.3, открытой реализации клиента и сервера для работы по протоколам SSH 2.0 и SFTP.

В новом выпуске добавлена защита от атаки на scp, позволяющей серверу передать другие имена файлов, отличающиеся от запрошенных (в отличие от прошлой уязвимости, атака не даёт возможность сменить выбранный пользователем каталог или glob-маску). Напомним, что в SCP сервер принимает решение о том, какие файлы и каталоги отправить клиенту, а клиент лишь проверяет корректность возвращённых имён объектов. Суть выявленной проблемы в том, что если системный вызов utimes завершается ошибкой, то содержимое файла интерпретируется как метаданные файла.

Данная особенность при подключении к серверу, подконтрольному злоумышленнику, может использоваться для сохранения в ФС пользователя других имён файлов и другого содержимого при копировании при помощи scp в конфигурациях, приводящих к сбою при вызове utimes (например, при запрете utimes политикой SELinux или фильтром системных вызовов). Вероятность проведения реальных атак оценивается как минимальная, так как в типичных конфигурациях вызов utimes не завершается сбоем. Кроме того, атака не проходит незаметно - при вызове scp показывается ошибка передачи данных.

Общие изменения:

  • В sftp прекращена обработка аргумента "-1" по аналогии с ssh и scp, который раньше принимался, но игнорировался;
  • В sshd при использовании IgnoreRhosts теперь предоставляется три варианта выбора: "yes" - игнорировать rhosts/shosts, "no" - учесть rhosts/shosts и "shosts-only" - разрешить ".shosts", но запретить ".rhosts";
  • В ssh обеспечена обработка подстановки %TOKEN в настройках LocalFoward и RemoteForward, используемых для перенаправления Unix-сокетов;
  • Разрешена загрузка открытых ключей из незашифрованного файла с приватным ключом, если отсутствует отдельный файл с открытым ключом;
  • При наличии в системе libcrypto в ssh и sshd теперь использует реализацию алгоритма chacha20 из данной библиотеки, вместо встроенной переносимой реализации, которая отстаёт по производительности;
  • Реализована возможность дампа содержимого бинарного списка отозванных сертификатов при выполнении команды "ssh-keygen -lQf /path";
  • В переносимой версии реализовано определение систем, в которых сигналы с опцией SA_RESTART прерывают работу select;
  • Решены проблемы со сборкой в системах HP/UX и AIX;
  • Устранены проблемы со сборкой seccomp sandbox в некоторых конфигурациях Linux;
  • Улучшено определение библиотеки libfido2 и решены проблемы со сборкой с опцией "--with-security-key-builtin".

Разработчики OpenSSH также в очередной раз предупредили о грядущем переводе в разряд устаревших алгоритмов, использующих хеши SHA-1, в связи с повышением эффективности коллизионных атак с заданным префиксом (стоимость подбора коллизии оценивается примерно в 45 тысяч долларов). В одном из ближайших выпусков планируют отключить по умолчанию возможность использования алгоритма цифровых подписей по открытому ключу "ssh-rsa", который упоминается в оригинальном RFC для протокола SSH и остаётся широко распространённым на практике (для проверки применения ssh-rsa в своих системах можно попробовать подключиться по ssh с опцией "-oHostKeyAlgorithms=-ssh-rsa").

Для сглаживания перехода на новые алгоритмы в OpenSSH в одном из следующих выпусков по умолчанию будет включена настройка UpdateHostKeys, которая позволит автоматически перевести клиентов на более надёжные алгоритмы. Среди рекомендуемых для миграции алгоритмов упомянуты rsa-sha2-256/512 на базе RFC8332 RSA SHA-2 (поддерживается с OpenSSH 7.2 и используется по умолчанию), ssh-ed25519 (поддерживается с OpenSSH 6.5) и ecdsa-sha2-nistp256/384/521 на базе RFC5656 ECDSA (поддерживается с OpenSSH 5.7).

Начиная с прошлого выпуска "ssh-rsa" и "diffie-hellman-group14-sha1" удалены из списка CASignatureAlgorithms, определяющего алгоритмы, допустимые для цифровой подписи новых сертификатов, так как использование SHA-1 в сертификатах сопряжено с дополнительным риском из-за того, что атакующий имеет неограниченное время на поиск коллизии для существующего сертификата, в то время как время атаки на хостовые ключи ограничены таймаутом подключения (LoginGraceTime).

  1. OpenNews: Релиз OpenSSH 8.2 c поддержкой токенов двухфакторной аутентификации FIDO/U2F
  2. OpenNews: Предложен метод определения коллизий в SHA-1, пригодный для атаки на PGP
  3. OpenNews: Реализация DDIO в чипах Intel допускает сетевую атаку по определению нажатий клавиш в сеансе SSH
  4. OpenNews: Выпуски libssh2 1.8.1 и Putty 0.71 с устранением уязвимостей
  5. OpenNews: Уязвимости в реализациях SCP из OpenSSH, PuTTY и WinSCP
Обсуждение (20 +21) | Тип: Программы |
27.05.2020 25 уязвимостей в RTOS Zephyr, в том числе эксплуатируемые через ICMP-пакет (129 +13)
  Исследователи из компании NCC Group опубликовали результаты аудита свободного проекта Zephyr, развивающего операционную систему реального времени (RTOS), нацеленную на оснащение устройств, соответствующих концепции "Интернет вещей" (IoT, Internet of Things). В ходе аудита было выявлено 25 уязвимостей в Zephyr и 1 уязвимость в MCUboot. Разработка Zephyr ведётся при участии компаний Intel.

В сумме было выявлено 6 уязвимостей в сетевом стеке, 4 - в ядре, 2 - в командной оболочке, 5 в обработчиках системных вызовов, 5 в подсистеме USB и 3 в механизме обновления прошивки. Двум проблемам присвоен критический уровень опасности, двум - высокий, 9 умеренный, 9 - низкий и 4 - для принятия во внимание. Критические проблемы затрагивают IPv4 стек и парсер MQTT, опасные - драйверы USB mass storage и USB DFU. На момент раскрытия информации исправления были подготовлены только для 15 наиболее опасных уязвимостей, неисправленными пока остаются проблемы, приводящие к отказу в обслуживании или связанные с недоработками в механизмах дополнительной защиты ядра.

В IPv4 стеке платформы выявлена удалённо эксплуатируемая уязвимость, приводящая к повреждению памяти при обработке определённым образом модифицированных ICMP-пакетов. Ещё одна серьёзная проблема найдена в парсере протокола MQTT, которая вызвана отсутствием должной проверки длины полей в заголовке и может привести удалённому выполнению кода. Менее опасные проблемы, приводящие к отказу в обслуживании, найдены в IPv6-стеке и реализации протокола CoAP.

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

Много проблем затрагивают USB-стек и отдельные драйверы. Например, проблема в USB mass storage позволяют вызвать переполнение буфера и выполнить код на уровне ядра при подключении устройства к подконтрольному атакующему USB-хосту. Уязвимость в USB DFU, драйвере для загрузки новой прошивки по USB, позволяет загрузить модифицированный образ прошивки во внутренний Flash микроконтроллера без применения шифрования и обойдя режим защищённой загрузки с проверкой компонентов по цифровой подписи. Дополнительно был изучен код открытого загрузчика MCUboot, в котором была найдена одна неопасная уязвимость, которая может привести к переполнению буфера при испльзовании протокола SMP (Simple Management Protocol) через UART.

Напомним, что в Zephyr для всех процессов предоставляется только одно глобальное совместно используемое виртуальное адресное пространство (SASOS, Single Address Space Operating System). Специфичный для приложений код комбинируется с адаптированным под конкретное применение ядром и образует монолитный исполняемый файл для загрузки и запуска на определённом оборудовании. Все системные ресурсы определяются на этапе компиляции, что сокращает размер кода и увеличивает производительность. В системный образ могут включаться только те возможности ядра, которые требуются для выполнения приложения.

Примечательно, что среди ключевых достоинств Zephyr упоминается разработка с оглядкой на безопасность. Утверждается, что все стадии разработки проходят обязательные этапы подтверждения безопасности кода: fuzzing-тестирование, статический анализ, испытания на проникновение, рецензирование кода, анализ внедрения бэкдоров и моделирование угроз.

  1. OpenNews: Выпуск свободной операционной системы реального времени Zephyr 1.8
  2. OpenNews: Foundries.io представила платформы для разработки безопасных прошивок для IoT устройств
  3. OpenNews: FreeRTOS перешёл под крыло Amazon и выпущен под лицензией MIT
  4. OpenNews: Новый проект Linux Foundation по созданию ОС реального времени для интернета вещей
  5. OpenNews: В TCP/IP-стеке FreeRTOS выявлены уязвимости, приводящие к удалённому выполнению кода
Обсуждение (129 +13) | Тип: Проблемы безопасности |
26.05.2020 Релиз фреймворка Qt 5.15 (198 +23)
  Представлен релиз кроссплатформенного фреймворка Qt 5.15. Исходные тексты компонентов Qt поставляются под лицензиями LGPLv3 и GPLv2. В декабре будет опубликована новая ветка Qt 6, в которой ожидаются значительные архитектурные изменения. Для сглаживания будущего перехода на ветку Qt 6 в Qt 5.15 включены предварительные реализации некоторых новшеств и добавлены предупреждения о скором прекращении поддержки функциональности, намеченной для удаления в Qt 6.

Qt 5.15 отнесён к выпускам с длительным сроком поддержки (LTS). При этом для сообщества обновления ветки 5.15 будут публиковаться только до формирования очередного значительного выпуска, т.е. примерно полгода. Расширенный LTS-цикл, подразумевающий формирование обновлений в течение трёх лет, будет ограничен пользователями с коммерческой лицензией (для обычных компаний - $5508 в год на одного разработчика, а для стартапов и малых предприятий - $499 в год). Компания Qt Company также рассматривала возможность перехода на модель распространения Qt, при которой все выпуски в течение первых 12 месяцев будут распространяться только для пользователей коммерческих лицензий. Но пока данная идея не ушла дальше обсуждения.

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

  • Продолжена работа по созданию абстрагированного графического API, не зависящего от 3D API операционной системы. Ключевым компонентом нового графического стека Qt является движок рендеринга сцен, использующий прослойку RHI (Rendering Hardware Interface) для обеспечения работы приложений Qt Quick не только с OpenGL, но и поверх API Vulkan, Metal и Direct 3D. В 5.15 новый графический стек предложен в форме опции, имеющей статус "Technology Preview".
  • Обеспечена полная поддержка модуля Qt Quick 3D, с которого снят признак экспериментальной разработки. Qt Quick 3D предоставляет унифицированный API для создания интерфейсов пользователя на базе Qt Quick, сочетающих элементы 2D и 3D графики. Новый API позволяет использовать QML для определения 3D-элементов интерфейсов без задействования формата UIP. В Qt Quick 3D для 2D и 3D можно использовать один runtime (Qt Quick), один макет сцены и один анимационный фреймворк, а для визуальной разработки интерфейса применять Qt Design Studio. Модуль решает такие проблемы, как большие накладные расходы при интеграции QML с контентом из Qt 3D или 3D Studio, и предоставляет возможность синхронизации анимации и преобразований на уровне отдельных кадров между 2D и 3D.

    Из добавленных в Qt Quick 3D новых возможностей упоминается поддержка эффектов постпроцессинга, C++ API для управления геометрией, API для вращения, основанный на классе QQuaternion, и поддержка точечных источников света. Для оценки различных возможностей Qt Quick 3D подготовлено специальное демонстрационное приложение, показывающее как можно изменять типы и источники освещения, использовать сложные модели, манипулировать текстурами, материалами и сглаживанием. Одновременно предложен выпуск окружения для проектирования интерфейса пользователя Qt Design Studio 1.5, в котором реализована полная поддержка Qt Quick 3D.

  • В Qt QML работа была сосредоточена на подготовке к Qt 6. Реализована возможность применения в компонентах свойств с признаком 'required', установка которых обязательна. В утилите qmllint улучшено формирование предупреждений о возможных проблемах в QML-коде. Добавлена утилита qmlformat, упрощающая форматирование QML-кода в соответствии с рекомендациями по стилю кодирования. Обеспечена совместимость QML с редакцией Qt для микроконтроллеров.
  • В Qt Quick в элемент Image добавлена поддержка цветовых пространств. В Qt Quick Shapes добавлен новый элемент PathText. В обработчик указателя добавлено свойство cursorShape, через которое можно изменить форму курсора мыши на настольных системах. Добавлен элемент HeaderView для упрощения добавления вертикальных и горизонтальных заголовков в таблицы на основе TableView.
  • Значительно улучшена поддержка декорирования окон на стороне клиента (CSD), позволяющая приложению определить собственные элементы оформления окон и разместить произвольное содержимое в заголовке окна.
  • Стабилизирован модуль Qt Lottie, предоставляющий расширенный API для QML, позволяющий отрисовывать графику и анимацию, экспортированную в формате JSON при помощи плагина Bodymovin к пакету Adobe After Effects. Благодаря QtLottie дизайнер может подготовить анимационные эффекты в удобном для себя приложении, а разработчик напрямую подключить экспортированные файлы к интерфейсу приложений на QtQuick. QtLottie включает в себя встроенный микродвижок для выполнения анимации, обрезки, обработки слоёв и других эффектов. Движок доступен через QML-элемент LottieAnimation, которым можно управлять из QML-кода по аналогии с любыми другими элементами QtQuick.
  • Браузерный движок Qt WebEngine обновлён до кодовой базы Chromium 80 (в ветке 5.14 использовался Chromium 77, актуальной версией является Chromium 83).
  • В модуле Qt 3D улучшены средства профилирования и отладки.
  • В Qt Multimedia добавлена поддержка отрисовки в несколько поверхностей.
  • В Qt GUI операции масштабирования и преобразования изображений теперь во многих случаях выполняются в многопоточном режиме.
  • В Qt Network добавлена поддержка настраиваемых таймаутов и сессионных ярлыков в TLS 1.3 (Session Ticket, позволяют возобновить сеанс без сохранения состояния на стороне сервера).
  • Обеспечена возможность работы Qt Core, QRunnable и QThreadPool с std::function. Добавлен новый метод QFile::moveToTrash() для перемещения элементов в корзину с учётом специфики разных платформ.
  • В Qt для Android добавлена поддержка родных диалогов для открытия и сохранения файлов.

  1. OpenNews: Qt Company обдумывает переход к публикации свободных релизов Qt через год после платных выпусков
  2. OpenNews: LTS-версии Qt будут доступны только под коммерческой лицензией
  3. OpenNews: Релиз фреймворка Qt 5.14 и среды разработки Qt Creator 4.11.0
  4. OpenNews: Введён в строй Qt Marketplace, каталог-магазин модулей и дополнений для Qt
  5. OpenNews: Опубликован план развития функциональности Qt 6
Обсуждение (198 +23) | Тип: Программы |
26.05.2020 В Reiser5 анонсирована поддержка Burst Buffers (Data Tiering) (240 +38)
  Эдуард Шишкин анонсировал новые возможности, развиваемые в рамках проекта Reiser5. Reiser5 представляет собой существенно переработанный вариант файловой системы ReiserFS, в котором на уровне файловой системы, а не блочного устройства, реализована поддержка параллельно масштабируемых логических томов, позволяющая эффективно распределять данные по логическому тому.

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

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

Изначально данная техника (известная как Burst Buffers) возникла в области высокопроизводительных вычислений (HPC). Но она оказалась также востребованной и для обычных приложений, особенно для тех, которые предъявляют повышенные требования к целостности данных (обычно это разного рода базы данных). Любые изменения в каком-либо файле такие приложения выполняют атомарным способом, а именно:

  1. сначала создаётся новый файл, который содержит изменённые данные;
  2. потом этот новый файл записывается на диск при помощи fsync(2);
  3. после этого новый файл переименовывается в старый, что автоматически освобождает блоки, занятые старыми данными.

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

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

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

Добавление прокси-диска в логический том не сопровождается какой-либо перебалансировкой данных, а его удаление происходит точно так же, как и удаление обычного диска. Все операции с прокси-диском атомарны. Обработка ошибок и развёртывание системы (в т.ч. после системного краха) происходит точно так же, как если бы прокси-диск был обычным компонентом логического тома.

После добавления прокси-диска, суммарная ёмкость логическгого тома увеличивается на ёмкость этого диска. Мониторинг свободного места на прокси-диске производится так же, как и для остальных компонентов тома, т.е. при помощи утилиты volume.reiser4(8).

Прокси-диск необходимо периодически очищать, т.е. сбрасывать данные с него в основное хранилище. После достижения бета-стабильности Reiser5 очистку планируется сделать автоматической (ей будет заведовать специальный поток ядра). На данном же этапе ответственность за очистку возлагается на пользователя. Сброс данных с прокси-диска в основное хранилище производится простым вызовом утилиты volume.reiser4 с опцией "-b". В качестве аргумента нужно указать точку монтирования логического тома. Разумеется, очистку надо не забывать проводить периодически. Для этого можно написать простой shell-скрипт.

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

  1. OpenNews: Доступна файловая система Reiser5
  2. OpenNews: В файловой системе Reiser4 появилась поддержка зеркалирования
  3. OpenNews: Обновление файловой системы Reiser4 c поддержкой различных транзакционных моделей
  4. OpenNews: Стагнация в продвижении Reiser4 в состав ядра Linux
  5. OpenNews: Состояние разработки Reiser4
Обсуждение (240 +38) | Автор: Аноним | Тип: К сведению | Интересно
26.05.2020 RangeAmp - серия атак на CDN, манипулирующая HTTP-заголовком Range (25 +13)
  Группа исследователей из Пекинского университета, Университета Цинхуа и Техасского университета в Далласе выявила новый класс DoS-атак - RangeAmp, основанный на использовании HTTP-заголовка Range для организации усиления трафика через сети доставки контента (CDN). Суть метода в том, что из-за особенности обработки Range-заголовков во многих CDN атакующий может запросить через CDN один байт из большого файла, но CDN загрузит с целевого сервера весь файл или значительно больший блок данных для помещения в кэш. Степень усиления трафика при такой атаке в зависимости от CDN составляет от 724 до 43330 раз, что может использоваться для перегрузки входящим трафиком CDN или снижения пропускной способности конечного канала связи до сайта жертвы.

Заголовок Range даёт клиенту возможность определить диапазон позиций в файле, которые следует загрузить вместо отдачи полного файла. Например, клиент может указать "Range: bytes=0-1023" и сервер передаст только первые 1024 байта данных. Подобная возможность востребована при загрузке больших файлов - пользователь может приостановить загрузку, а потом продолжить его с прерванной позиции. При указании "bytes=0-0" стандарт предписывает отдавать первый байт в файле, "bytes=-1" - последний, "bytes=1-" - начиная с 1 байта и до конца файла. Допускается передача нескольких диапазонов в одном заголовке, например "Range: bytes=0-1023,8192-10240".

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

Идея в том, что атакующий направляет в CDN Range-запросы нескольких диапазонов, такие как "bytes=0-,0-,0-...", "bytes=1-,0-,0-..." или "bytes=-1024,0-,0-...". Запросы содержат большое число диапазонов "0-", подразумевающих отдачу файла от нулевой позиции до конца. Из-за некорректной реализации разбора диапазонов при обращении первого CDN ко второму, на каждый диапазон "0-" отдаётся полный файл (диапазоны не агрегируются, а последовательно перебираются), если в изначально отправленном атакующим запросе присутствует дублирование и пересечение диапазонов. Степень усиления трафика в такой атаке составляет от 53 до 7432 раз.

В процессе исследования было изучено поведение 13 CDN - Akamai, Alibaba Cloud, Azure, CDN77, CDNsun, Cloudflare, CloudFront, Fastly, G-Core Labs, Huawei Cloud, KeyCDN, StackPath и Tencent Cloud. Все из рассмотренных CDN допускали первый вид атаки на конечный сервер. Второму варианту атаки на CDN оказались подвержены 6 сервисов, из которых четыре могут выступать в атаке в роли фронтэнда (CDN77, CDNsun, Cloudflare и StackPath) и три в роли бэкенда (Akamai, Azure и StackPath). Наибольшее усиления достигается в Akamai и StackPath, которые допускают указание в заголовке Range более 10 тысяч диапазонов. Владельцы CDN были уведомлены об уязвимостях около 7 месяцев назад и к моменту публичного раскрытия сведений 12 из 13 CDN устранили выявленные проблемы или выразили готовность их устранить (не отреагировал только сервис StackPath).

  1. OpenNews: HTTP-заголовок Alt-Svc может применяться для сканирования портов внутренней сети
  2. OpenNews: Уязвимость, позволяющая совершить MITM-атаку через манипуляцию с HTTP-заголовком Proxy
  3. OpenNews: Легко эксплуатируемая DoS-уязвимость в HTTP-сервере Apache
  4. OpenNews: Атака на системы фронтэнд-бэкенд, позволяющая вклиниться в сторонние запросы
  5. OpenNews: Новая техника атак HTTP Request Smuggling
Обсуждение (25 +13) | Тип: Проблемы безопасности |
25.05.2020 Выпуск свободного звукового редактора Ardour 6.0 (116 +38)
  Представлен релиз свободного звукового редактора Ardour 6.0, предназначенного для многоканальной записи, обработки и микширования звука. Имеется мультитрековая шкала времени, неограниченный уровень отката изменений на всем протяжении работы с файлом (даже после закрытия программы), поддержка разнообразных аппаратных интерфейсов. Программа позиционируется, как свободный аналог профессиональных средств ProTools, Nuendo, Pyramix и Sequoia. Код Ardour распространяется под лицензией GPLv2.

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

  • Внесены значительные архитектурные изменения, позволившие повысить надёжность и качество работы приложения.
  • Во всех компонентах, связанных с обработкой сигналов, задействованы средства полной компенсации задержек. Не важно каким образом осуществляется маршрутизация сигнала - шины, треки, плагины, элементы отправки, вставки и возвращения сигнала теперь полностью компенсированы и выровнены с точностью сэмпла.
  • Встроен высококачественный движок передискретизация (resampling), который можно использовать при работе с потоками с непостоянной частотой дискретизации (varispeed). Новый движок дал возможность упростить код ядра Ardour, обеспечил корректную обработку звукового вывода для MIDI-треков и заложил основу для последующего обеспечения независимости от частоты дискретизации в Ardour.
  • Добавлена возможность мониторинга любых комбинаций источников звукового сигнала. Раньше был возможен либо мониторинга сигнала, загружаемого с диска, либо подаваемого на звуковые входы. Теперь данные сигналы можно отслеживать одновременно (одновременно прослушивать данные с диска и слышать входной сигнал). Например, при работе с MIDI можно слышать себя при добавлении нового материала в трек, не прекращая воспроизведение уже существующего в треке материала.
  • Добавлен режим сырой записи (Wet Recording), допускающий запись из любой позиции потока в канале. Помимо традиционной записи чистого сигнала с последующим динамическим добавлением звуковых эффектов, новый режим позволяет записать инструментальное исполнение поверх сигнала с уже наложенными эффектами (достаточно сдвинуть текущую позицию в "Recorder" и дописать дополнительный звуковой сигнал).
  • Излишне перегруженная режимами функция Grid разделена на две отдельные функции - Grid и Snap. В Snap вынесены возможности, связанные с привязкой маркеров, что сделало поведение Grid более предсказуемым и избавило от необходимости постоянного переключения между разными режимами сетки.
  • Полностью изменён способ обработки MIDI-данных в процессе воспроизведения, что позволило избавиться от множества проблем, мешающих редактированию, таких как слипающиеся ноты, странное поведение при зацикливании и пропадание нот. Дополнительно упрощена визуализация скорости. В MIDI-нотах обеспечено отображение скорости в форме полос.
  • Предложена новая виртуальная MIDI-клавиатура.
  • Представлена новая система управления скреплением плагинов, предоставляющая средства для установки произвольных соединения между плагинами, а также позволяющая реализовать такие возможности, как управление несколькими экземплярами одного плагина, разделение звукового сигнала для подачи на несколько входов плагина и предоставление плагинам доступа к вспомогательным входам AudioUnit. Также появилась поддержка привязки к плагинам произвольных тегов для упрощения их категоризации (для около 2000 плагинов уже расставлены теги, такие как Вокал и EQ). Переделан диалог менеджера плагинов, в котором изменена раскладка элементов и расширены возможности поиска и фильтрации.
  • Добавлен экран со статистикой DSP плагинов, поддерживающий вывод как агрегированных данных, так и информации в привязке к каждому плагину.
  • В бэкенде для звуковой подсистемы ALSA реализована возможность назначения разных устройств для входа и выхода, а также обеспечен показ вторичных устройств.
  • Добавлен новый бэкенд для PulseAudio, который пока ограничен воспроизведением, но может быть полезен для микширования и аранжировки в Linux при работе с Blutooth-устройствами.
  • Добавлена поддержка импорта и экспорта файлов MP3 на всех платформах. Добавлена возможность использования FLAC в качестве родного формата для записи. Для Ogg/Vorbis добавлен диалог для настройки параметров качества.
  • Добавлена поддержка контроллеров Launch Control XL, FaderPort 16, 2-поколение Faderport, Nektar Panorama, Contour Designs ShuttlePRO и ShuttleXpress, Behringer X-Touch и X-Touch Compact.
  • Добавлен экспериментальный контроллер, работающий через web-браузер.
  • Сформированы официальные Linux-сборки для 32- и 64-разрядных процессоров ARM (например, для Raspberry Pi);
  • Добавлена поддержка NetBSD, FreeBSD и OpenSolaris.

  1. OpenNews: Версия Ubuntu для редактирования графики, музыки и видео
  2. OpenNews: Вышел трековый звуковой редактор GNUsound 0.7.5
  3. OpenNews: Вышел свободный звуковой редактор Ardour 4.0
  4. OpenNews: Релиз свободного звукового редактора Ardour 4.7
  5. OpenNews: Выпуск звукового редактора Audacity 2.4
Обсуждение (116 +38) | Тип: Программы |
24.05.2020 70% проблем с безопасностью в Chromium вызваны ошибками при работе с памятью (423 +24)
  Разработчики проекта Chromium проанализировали 912 опасных и критических уязвимостей, выявленных в стабильных выпусках Chrome с 2015 года, и пришли к выводу, что 70% из них были вызваны небезопасной работой с памятью (ошибками при работе с указателями в коде на C/C++). Половина из данных проблем (36.1%) вызвана обращениями к буферу после освобождения связанной с ним памяти (use-after-free).

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

Для поддержания безопасности кодовой базы Google также применяет "правило двух", в соответствии с которым любой добавляемый код должен подпадать не больше, чем под два условия из трёх: работа с непроверенными входными данными, использование небезопасного языка программирования (C/C++) и выполнение с повышенными привилегиями. Из этого правила следует, что код для обработки внешних данных должен либо быть урезан до минимальных привилегий (изолирован), либо быть написан на безопасном языке программирования.

Для дальнейшего усиления защищённости кодовой базы запущен проект по предотвращению появления ошибок работы с памятью в кодовой базе. Выделяется три основных подхода: создание библиотек С++ с функциями для безопасной работы с памятью и расширение области применения сборщика мусора, применение аппаратных механизмов защиты MTE (Memory Tagging Extension) и написание компонентов на языках, обеспечивающих безопасную работу с памятью (Java, Kotlin, JavaScript, Rust, Swift).

Ожидается, что работа будет сосредоточена в двух направлениях:

  • Значительное изменение процесса разработки на С++, не исключающее негативного влияния на производительность (дополнительные проверки границ и сборка мусора). Вместо raw-указателей предлагается использовать в коде тип MiraclePtr, позволяющий свести эксплуатируемые ошибки класса use-after-free к не представляющим угрозу безопасности крахам, без ощутимого негативного влияния на производительность, потребление памяти и стабильность.
  • Применение языков, рассчитанных на выполнение проверок безопасной работы с памятью во время компиляции (позволит исключить негативное влияние на производительность, свойственное подобным проверкам во время выполнения кода, но приведёт к дополнительным расходам на организацию взаимодействия кода на новом языке с кодом на С++).

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

  1. OpenNews: Выпуск модуля LKRG 0.7 для защиты от эксплуатации уязвимостей в ядре Linux
  2. OpenNews: Разработчики из Google предложили разработать свою libc для LLVM
  3. OpenNews: Google открыл систему для создания sandbox-окружений для библиотек C/C++
  4. OpenNews: ОС Fuchsia переходит на стадию тестирования на сотрудниках Google
  5. OpenNews: Mozilla начинает внедрение технологии изоляции библиотек RLBox
Обсуждение (423 +24) | Тип: Тема для размышления |
Следующая страница (раньше) >>



Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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