Уязвимость в сетевом стеке ядра Linux

В коде обработчика протокола RDS на базе TCP (Reliable Datagram Socket, net/rds/tcp.c) выявлена уязвимость (CVE-2019-11815), которая может привести к обращению к уже освобождённой области памяти и отказу в обслуживании (потенциально не исключается возможность эксплуатации проблемы для организации выполнения кода). Проблема вызывается состоянием гонки (race condition), которое может возникнуть при выполнении функции rds_tcp_kill_sock в момент очистки сокетов для пространства сетевых имён.

В спецификации NVD проблема помечена как удалённо эксплуатируемая по сети, но судя по описанию исправления, без локального присутствия в системе и манипуляции с пространствами имён удалённо организовать атаку не получится. В частности, по мнению разработчиков SUSE уязвимость эксплуатируется только локально, организация атаки достаточно сложна и требует наличия дополнительных привилегий в системе. Если в NVD уровень опасности оценен в 9.3 (CVSS v2) и 8.1 (CVSS v2) баллов, то по рейтингу SUSE опасность оценена в 6.4 балла из 10.

Представители Ubuntu также оценили опасность проблемы как умеренную. При этом в соответствии со спецификацией CVSS v3.0 проблеме присвоен высокий уровень сложности атаки и возможность эксплуатации выставлена всего в 2.2 балла из 10.

Судя по отчёту от компании Cisco уязвимость эксплуатируется удалённо через отправку TCP-пакетов на рабочие сетевые сервисы RDS и уже имеется прототип эксплоита. Насколько эта информация соответствует действительности пока не ясно, возможно в отчёте лишь художественно оформлены предположения NVD. По сведениям VulDB эксплоит ещё не создан и проблема эксплуатируется только локально.

Проблема проявляется в ядрах до 5.0.8 и блокирована мартовским исправлением, включённым в состав ядра 5.0.8. В большинстве дистрибутивов проблема остаётся не устранённой (Debian, RHEL, Ubuntu, SUSE). Исправление выпущено для SLE12 SP3, openSUSE 42.3 и Fedora.

Источник: [ссылка]

Представлен более эффективный метод определения префиксов коллизий для SHA-1

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

Данный вид атаки всё ещё требует огромных вычислений и подбор префиксов остаётся сложнее, чем обычный подбор коллизий, но и практическая эффективность результата существенно выше. Если до сих пор самый быстрый метод поиска префиксов коллизии в SHA-1 требовал выполнения 277.1 операций, то новый метод снижает число вычислений до диапазона от 266.9 до 269.4. При таком уровне вычислений ориентировочная стоимость атаки составляет менее ста тысяч долларов, что вполне по карману спецслужбам и крупным корпорациям. Для сравнения на поиск обычной коллизии необходимо выполнить примерно 264.7 операций.

В прошлой демонстрации Google возможности генерации разных PDF-файлов с одинаковым хэшем SHA-1 использовалась уловка с объединением в один файл двух документов, переключением видимого слоя и смещением метки выбора слоя в область возникновения коллизии. При близких затратах ресурсов (на поиск первой коллизии SHA-1 Google потратил год вычислений на кластере из 110 GPU) новый метод позволяет добиться совпадения SHA-1 для двух произвольных наборов данных. С практической стороны можно подготовить TLS-сертификаты, в которых упоминаются разные домены, но совпадают хэши SHA-1. Подобная возможность позволяет нечистому на руку удостоверяющему центру создать сертификат для цифровой подписи, которую можно применять для авторизации фиктивных сертификатов к произвольным доменам. Проблема также может использоваться для компрометации протоколов, полагающихся на отсутствие коллизий, таких как TLS, SSH и IPsec.

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

Несмотря на то, что теоретическая возможность атаки на SHA-1 доказана ещё в 2005 году, а на практике первая коллизия была подобрана в 2017 году, SHA-1 всё ещё остаётся в обиходе и охватывается некоторыми стандартами и технологиями (TLS 1.2, Git и т.п.). Основной целью проделанной работы было желание предоставить ещё один веский аргумент для незамедлительного прекращения использования SHA-1, особенно в сертификатах и цифровых подписях.

Дополнительно можно отметить публикацию результатов криптоанализа блочных шифров SIMON-32/64, разработанных АНБ США и в 2018 году утверждённых в качестве стандарта ISO/IEC 29167-21:2018. Исследователям удалось разработать метод восстановления закрытого ключа на основе двух известных пар из открытого текста и шифротекста. При ограниченных вычислительных ресурсах на подбор ключа требуется от нескольких часов до нескольких дней. Теоретический коэффициент успешности атаки оценивается в 0.25, а практический для имеющегося прототипа — 0.025.

Источник: [ссылка]

Подмена кода проектов Picreel и Alpaca Forms привела к компрометации 4684 сайтов

Исследователь безопасности Виллем де Гроот (Willem de Groot) сообщил, что в результате взлома инфраструктуры атакующие смогли внедрить вредоносную вставку в код системы web-аналитики Picreel и открытой платформы для генерации интерактивных web-форм Alpaca Forms. Подмена JavaScript-кода привела к компрометации 4684 сайтов, применяющих на своих страницах указанные системы (1249 — Picreel и 3435 — Alpaca Forms).

Внедрённый вредоносный код осуществлял сбор сведений о заполнении всех web-форм на сайтах и в том числе мог привести к перехвату ввода платёжной информации и параметров аутентификации. Перехваченная информация отправлялась на сервер font-assets.com под видом запроса изображений. Информации о том, как именно была скомпрометирована инфраструктура Picreel и CDN-сеть для доставки скрипта Alpaca Forms пока нет. Известно только что при атаке на Alpaca Forms были подменены скрипты, поставляемые через сеть доставки контента Cloud CMS. Вредоносная вставка была закамуфлирована под массив данных в минимизированной версии скрипта (расшифровку кода можно посмотреть здесь).

Среди пользователей скомпрометированных проектов отмечается много крупных компаний, включая Sony, Forbes, Trustico, FOX, ClassesUSA, 3Dcart, Saxo Bank, Foundr, RocketInternet, Sprit и Virgin Mobile. С учётом того, что это не первая атака подобного рода (см. инцидент с подменой счётчика StatCounter), администраторам сайтов рекомендуется очень внимательно относиться к размещению стороннего JavaScript-кода, особенно на страницах, связанных с платежами и аутентификацией.

Источник: [ссылка]

OpenIndiana 2019.04 и OmniOS CE r151030, продолжающие развитие OpenSolaris

Доступен релиз свободного дистрибутива OpenIndiana 2019.04, пришедшего на смену бинарному дистрибутиву OpenSolaris, развитие которого было прекращено компанией Oracle. OpenIndiana предоставляет пользователю рабочее окружение, построенное на базе свежего среза кодовой базы проекта Illumos. Непосредственно разработка технологий OpenSolaris продолжается проектом Illumos, в котором развивается ядро, сетевой стек, файловые системы, драйверы, а также базовый набор пользовательских системных утилит и библиотек. Для загрузки сформировано три вида iso-образов — серверная редакция с консольными приложениями (702 Мб), минимальная сборка (524 Мб) и сборка с графическим окружением MATE (1.6 Гб).

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

  • Рабочий стол MATE обновлён до выпуска 1.22;
  • В состав включён пакет с Virtualbox (6.0), а также набор дополнений к Virtualbox для гостевых систем;
  • В инфраструктуру управления пакетами IPS (Image Packaging System) перенесена большая порция исправлений из репозиториев OmniOS CE и Solaris. Добавлена поддержка автоматического наименования загрузочных окружений;
  • Некоторые специфичные для OpenIndiana приложения портированы с Python 2.7/GTK 2 на Python 3.5/GTK 3;
  • Обновлены версии пользовательских программ, в том числе Firefox 60.6.3 ESR, Freetype 2.9.1, fontconfig 2.13.1, GTK 3.24.8, glib2 2.58.3, LightDM 1.28, GCC 8.3.0, binutils 2.32, Git 2.21.0, cmake 3.12.4, Python 3.5, Rust 1.32.0, Golang 1.11, PHP 7.3, OpenSSH 7.9p1, PostgreSQL 11, MariaDB 10.3, MongoDB 4.0, Nginx 1.16.0, Samba 4.9.5, Node.js 12.2.0, Ansible 2.7.5.
  • В bash добавлена поддержка автодополнения ввода опций для специфичных для illumos команд zfs, zpool, pkg, beadm, svcs и svcadm;
  • Обновлены шрифты;
  • Добавлена утилита xbacklight.

Дополнительно можно отметить выпуск дистрибутива Illumos OmniOS Community Edition r151030, который отнесён к выпускам с длительным сроком поддержки (LTS), обновления для которых формируются три года. Это первый LTS-выпуск после образования проекта в 2017 году и учреждения некоммерческой ассоциации OmniOS CE Association, которой был передан контроль за разработкой OmniOS. OmniOS Community Edition предоставляет полноценную поддержку гипервизора KVM, виртуального сетевого стека Crossbow и файловой системы ZFS. Дистрибутив может применяться как для построения высокомасштабируемых web-систем, так и для создания систем хранения.

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

  • Добавлена поддержка протокола SMB 2.1;
  • В консоль добавлена полноценная поддержка фреймбуфера с возможностью изменения разрешения экрана и дополнительными unicode-шрифтами;
  • Для сборки компонентов пространства пользователя задействован GCC 8;
  • По умолчанию вместо ntp для управления синхронизацией точного времени предложен пакет ntpsec;
  • Набор системных параметров по умолчанию теперь размещается в файле /etc/system.d/_omnios:system:defaults и может быть переопределён через размещение отдельных файлов в каталоге /etc/system.d/;
  • Изменено поведение утилит chown и chgrp в отношении символических ссылок, связанные с которыми файлы теперь обрабатываются только при указании флага «-R»;
  • Добавлены типовые шаблоны для создания зон при помощи команды «zonecfg create -t тип». Добавлен вариант зон с предустановленным репозиторием пакетов pkgsrc. Добавлена возможность запуска в зоне независимого дистрибутива illumos, используя общее с OmniOS ядро. Обеспечено динамическое управление настройками сети и виртуальными сетевыми адаптерами через штатную систему конфигурации зон. При создании изолированных зон теперь по умолчанию устанавливаются параметры «brand=lipkg» и «ip-type=exclusive». Добавлена поддержка определения специфичных для зоны правил пакетного фильтра ipf. Сокращено потребление памяти зонами за счёт отключения лишних сервисов;
  • В ZFS добавлена возможность импорта пулов, используя временное имя. Добавлена поддержка dnode с переменным размером;
  • В пакетном менеджере pkg добавлена возможность верификации соответствия установленных файлов с файлами в пакете при помощи команды «pkg verify». Например, при случайном изменении владельца каталога /var команда «pkg verify -p /var» предупредит, что владельцем должен быть root. Добавлена возможность включения и отключения издателей пакетов (pkg publisher) на уровне отдельных репозиториев. Для контроля целостности объектов задействован хэш SHA-2 вместо SHA-1;
  • Автоматически создаваемые имена создаваемых загрузочных окружений теперь могут основываться на текущей дате и времени или дате публикации обновления (например, «pkg set-property auto-be-name time:omnios-%Y.%m.%d»);
  • Добавлена поддержка новых чипов AMD и Intel. Улучшена поддержка USB 3.1. Добавлены паравиртуальные драйверы для Hyper-V/Azure (пакет driver/hyperv/pv). Представлен новый драйвер bnx (Broadcom NetXtreme).

Источник: [ссылка]

Выпуск отладчика GDB 8.3

Представлен релиз отладчика GDB 8.3, поддерживающего отладку на уровне исходных текстов для широкого спектра языков программирования (Ada, C, C++, Objective-C, Pascal, Go и т.д.) на различных аппаратных (i386, amd64, ARM, Power, Sparc, RISC-V и т.д.) и программных платформах (GNU/Linux, *BSD, Unix, Windows, macOS).

Ключевые улучшения:

  • В интерфейсах CLI и TUI реализована возможность определения стиля терминала (добавлена команда «set style»). При наличии GNU Highlight реализована подсветка исходных текстов;
  • Реализована экспериментальная поддержка компиляции и подстановки исходного кода на языке C++ в контролируемый при помощи GDB процесс (inferior). Для работы требуется наличие как минимум версии GCC 7.1б, собранной с libcp1.so;
  • В GDB и GDBserver добавлена поддержка IPv6. Для задания адресов IPv6 следует использовать формат «[ADDRESS]:PORT»;
  • Для целевых систем RISC-V добавлена поддержка описания цели в формате XML (Target Description Format);
  • На платформе FreeBSD обеспечена поддержка установки точек перехвата (catchpoint) на системные вызовы, используя их псевдонимы, специфичные для разных ABI (например, для ‘kevent’ доступен псевдоним ‘freebsd11_kevent’ для привязки к старому ABI);
  • В команду «target remote» добавлена поддержка Unix-сокетов (Unix Domain socket);
  • Добавлена возможность отображения всех файлов, открытых процессом (команда «info proc files»);
  • Реализована возможность автоматического сохранения на диск индексов символов DWARF для ускорения последующей загрузки того же исполняемого файла;
  • В GDBserver для платформы PowerPC GNU/Linux добавлена поддержка доступа к регистрам PPR, DSCR, TAR, EBB/PMU и HTM;
  • Добавлены новые команды «set/show debug compile-cplus-types» и «set/show debug skip» для настройки вывода данных о преобразованиях типов C++ и информации о пропускаемых файлах и функциях;
  • Добавлены команды «frame apply COMMAND», «taas COMMAND», «faas COMMAND», «tfaas COMMAND» для применения команд к кадрам стека и потокам;
  • Внесены улучшения в команды «frame», «select-frame», «info frame», — «info functions», «info types», «info variables», «info thread», «info proc»;
  • При запуске в пакетном режиме GDB теперь возвращает код ошибки 1 в случае сбоя выполнения последней команды;
  • Добавлена возможность сборки GDB с предоставляемым GCC детектором неопределённого поведения (Undefined Behavior Sanitizer);
  • Добавлены настройки базовой системы (native configuration, для отладки на той же системе) для платформ RISC-V GNU/Linux (riscv*-*-linux*) и RISC-V FreeBSD (riscv*-*-freebsd*);
  • Добавлены настройки целевых систем (target configuration): CSKY ELF (csky*-*-elf), CSKY GNU/Linux (csky*-*-linux), NXP S12Z ELF (s12z-*-elf), OpenRISC GNU/Linux (or1k*-*-linux*), RISC-V GNU/Linux (riscv*-*-linux*) и RISC-V FreeBSD (riscv*-*-freebsd*);
  • Отладка на той же системе в Windows теперь требует наличия Windows XP или более новых выпусков;
  • Для использования Python API теперь требуется Python 2.6 или новее.

Источник: [ссылка]

GitHub ввёл в строй реестр пакетов, совместимый с NPM, Docker, Maven, NuGet и RubyGems

GitHub объявил о запуске нового сервиса Package Registry, в рамках которого разработчикам предоставлена возможность публикации и распространения пакетов с приложениями и библитеками. Поддерживается создание как приватных репозиториев пакетов, доступных только для определённых групп разработчиков, так и публичных общедоступных репозиториев для поставки готовых сборок своих программ и библиотек.

Представленный сервис позволяет организовать централизованный процесс доставки зависимостей напрямую с GitHub, минуя посредников и специфичные для разных платформ репозитории пакетов. Для установки и публикации пакетов при помощи GitHub Package Registry могут использоваться уже существующие привычные пакетные менеджеры и команды, такие как npm, docker, mvn, nuget и gem — в зависимости от предпочтений подключается один из предоставлямых GitHub внешних репозиториев пакетов — npm.pkg.github.com, docker.pkg.github.com, maven.pkg.github.com, nuget.pkg.github.com или rubygems.pkg.github.com.

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

Для публикации пакетов используется та же учётная запись, что и для доступа к коду на GitHub. По сути в дополнение к секциям «теги» и «релизы» предложена новая секция «пакеты», работа с которой органично вписывается в текущий процесс работы с GitHub. Служба поиска расширена новой секцией для поиска пакетов. Имеющиеся настройки прав доступа к репозиториям с кодом автоматически наследуются для пакетов, что позволяет в одном месте управлять доступом как к коду, так и к сборкам. Предоставляется система web-хуков для подключения своих обработчиков, вызываемых перед или после публикации и API для обеспечения интеграции внешних инструментов с GitHub Package Registry. Также доступны отчёт со статистикой загрузки и историей версий.

Источник: [ссылка]

В Chrome появится защита от передачи сторонних Cookie и скрытой идентификации

Компания Google представила грядущие изменения в Chrome, нацеленные на повышение конфиденциальности. Первая часть изменений касается обработки Cookie и поддержки атрибута SameSite. Начиная с выпуска Chrome 76, ожидаемого в июле, будет активирован флаг «same-site-by-default-cookies», который в случае отсутствие атрибута SameSite в заголовке Set-Cookie по умолчанию будет выставлять значение «SameSite=Lax», ограничивающее отправку Cookie для вставкок со сторонних сайтов (но сайты по-прежнему смогут отменить ограничение, явно выставляя при установке Cookie значение SameSite=None).

Атрибут SameSite позволяет определять ситуации, в которых допустима передача Cookie при поступлении запроса со стороннего сайта. В настоящее время браузер передаёт Cookie на любой запрос к сайту, для которого имеются выставленные Cookie, даже если изначально открыт другой сайт, а обращение осуществляется косвенно при помощи загрузки картинки или через iframe. Рекламные сети используют данную особенность для отслеживания перемещений пользователя между сайтами, а злоумышленники для организации CSRF-атак (при открытии подконтрольного атакующим ресурса с его страниц скрыто отправляется запрос на другой сайт, на котором аутентифицирован текущий пользователь, и браузер пользователя выставляет для такого запроса сессионные Cookie). С другой стороны возможность отправки Cookie на сторонние сайты применяется для вставки на страницы виджетов, например, для интеграции с YuoTube или Facebook.

При помощи атрибута SameSit можно управлять поведением при выставлении Cookie и разрешить отправку Cookie только в ответ на запросы, инициированные с сайта, с которого эти Cookie изначально были получены. SameSite может принимать три значения «Strict», «Lax» и «None». В режиме ‘Strict’ Cookie не отправляются для любых видов межсайтовых запросов, включая все входящие ссылки с внешних сайтов. В режиме ‘Lax’ применяются более мягкие ограничения и передача Cookie блокируется только для межсайтовых субзапросов, таких как запрос изображения или загрузка контента через iframe. Отличие «Strict» и «Lax» сводятся к блокировке Cookie при переходе по ссылке.

Из других предстоящих изменений также намечается применение жёсткого ограничения, запрещающего обработку сторонних Cookie для запросов без HTTPS (с атрибутом SameSite=None Cookie смогут выставляться только в режиме Secure). Кроме того, планируется выполнение работы по защите от применения скрытой идентификации («browser fingerprinting»), включая методы генерации идентификаторов на основе косвенных данных, таких как разрешение экрана, список поддерживаемых MIME-типов, специфичные параметры в заголовках (HTTP/2 и HTTPS), анализ установленных плагинов и шрифтов, доступность определённых Web API, специфичные для видеокарт особенности отрисовки при помощи WebGL и Canvas, манипуляции с CSS, анализ особенностей работы с мышью и клавиатурой.

Кроме того в Chrome будет добавлена защита от злоупотреблений, связанных с затруднением возврата на исходную страницу после перехода на другой сайт. Речь ведётся о практике захламления истории переходов серией автоматических редиректов или искусственным добавлением фиктивных записей в историю просмотров (через pushState), в результате чего пользователь не может воспользоваться кнопкой «Back» для возврата на исходную страницу после случайного перехода или принудительного проброса на сайт мошенников или вредителей. Для защиты от подобных манипуляций Chrome в обработчике кнопки Back будет пропускать записи, связанные с автоматическими пробросами и манипуляциями с историей посещений, оставляя только страницы, открытие при явных действиях пользователя.

Источник: [ссылка]

Выпуск ОС Trident 19.04 от проекта TrueOS и рабочего стола Lumina 1.5.0

Доступен выпуск операционной системы Trident 19.04, в рамках которого на базе технологий FreeBSD проектом TrueOS развивается готовый к использованию графический пользовательский дистрибутив, напоминающий старые выпуски PC-BSD и TrueOS. Размер установочного iso-образа 3 Гб (AMD64).

В рамках проекта Trident также теперь ведётся разработка графического окружения Lumina и всех ранее доступных в PC-BSD графических инструментов, таких как sysadm и AppCafe. Проект Trident был образован после трансформации TrueOS в обособленную модульную операционную систему, которую можно использовать в качестве платформы для других проектов. TrueOS позиционируется как «downstream» форк FreeBSD, модифицирующий базовый состав FreeBSD поддержкой таких технологий как OpenRC и LibreSSL. В процессе разработки проект придерживается шестимесячного цикла подготовки релизов с обновлением в предсказуемые заранее намеченные сроки.

Некоторые особенности Trident:

  • Наличие предопределённого профиля межсетевого экрана для отправки трафика через анонимную сеть Tor, который может быть активирован на этапе установки.
  • Для навигации по Web предлагается браузер Falkon (QupZilla) со встроенным блокировщиком рекламы и расширенными настройками для защиты от отслеживания перемещений.
  • По умолчанию используется файловая система ZFS и система инициализации OpenRC.
  • При обновлении системы в ФС создаётся отдельный снапшот, позволяющий мгновенно вернуться к прошлому состоянию системы в случае возникновения проблем после обновления.
  • Вместо OpenSSL применяется LibreSSL от проекта OpenBSD.
  • Устанавливаемые пакеты верифицируются по цифровой подписи.

В новом выпуске осуществлён переход на стабильную ветку TrueOS 19.04 (v20190412), которая в свою очередь ответвилась от FreeBSD 13-CURRENT. Пакеты синхронизированы с деревом портов FreeBSD по состоянию на 22 апреля. По умолчанию в установочный образ добавлен менеджер загрузки rEFInd. На системах с UEFI теперь одновременно устанавливается как rEFInd, так и традиционный загрузчик FreeBSD.

В репозиторий добавлен 441 новый пакет, среди которых dnsmasq, eclipse, erlang-runtime, haproxy, olive-video-editor, openbgpd, pulseaudio-qt, qemu2, qutebrowser, sslproxy, zcad, а также большое число модулей для Perl, PHP, Ruby и Python. Обновлены версии 4165 пакетов. Из поставки удалены все утилиты и приложения на базе Qt4, поддержка Qt4 также прекращена в портах FreeBSD.

Рабочий стол Lumina обновлён до версии 1.5.0. К сожалению список изменений в Lumina пока не опубликован на сайте проекта. Напомним, что Lumina придерживается классического подхода к организации пользовательского окружения. В состав входит рабочий стол, панель приложений, менеджер сеансов, меню приложений, система настройки параметров окружения, менеджер задач, системный лоток, система виртуальных рабочих столов. Компоненты окружения написаны с использованием библиотеки Qt5. Код написан на языке C++ без QML и распространяется под лицензией BSD.

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

Источник: [ссылка]

Девятое обновление прошивки UBports, пришедшей на смену Ubuntu Touch

Проект UBports, который взял в свои руки разработку мобильной платформы Ubuntu Touch, после того как от неё отстранилась компания Canonical, опубликовал обновление прошивки OTA-9 (over-the-air) для всех официально поддерживаемых смартфонов и планшетов, которые были укомплектованы прошивкой на базе Ubuntu. Обновление сформировано для смартфонов OnePlus One, Fairphone 2, Nexus 4, Nexus 5, Nexus 7 2013, Meizu MX4/PRO 5, Bq Aquaris E5/E4.5/M10. Проектом также развивается экспериментальный порт рабочего стола Unity 8, доступный в сборках для Ubuntu 16.04 и 18.04.

Выпуск сформирован на основе Ubuntu 16.04 (сборка OTA-3 была основана на Ubuntu 15.04, а начиная с OTA-4 осуществлён переход на Ubuntu 16.04). Как и в прошлом выпуске при подготовке OTA-9 основное внимание было уделено исправлению ошибок и повышению стабильности. Переход на Mir 1.1 и последний выпуск оболочки Unity 8 в очередной раз отложен. Тестирование сборки с Mir 1.1, qtcontacts-sqlite (из Sailfish) и нового Unity 8 производится в отдельной экспериментальной ветке «edge«. Переход на новый Unity 8 приведёт к прекращению поддержки умных областей (Scope) и интеграции нового интерфейса запуска приложений App Launcher. В дальнейшем также ожидается появление полнофункциональной поддержки окружения для запуска Android-приложений, основанного на наработках проекта Anbox.

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

  • Обновлены пиктограммы, идентифицирующие различное содержимое в каталогах;
  • Решены проблемы с камерой на устройствах Nexus 5 (видоискатель зависал после снимка и были сбои при записи видео);
  • Усовершенствован пакет QQC2 Suru Style, в рамках которого подготовлен набор стилей на базе Qt Quick Controls 2, отвечающих требованиям к оформления интерфейса Ubuntu Touch. При помощи QQC2 Suru Style можно легко адаптировать для Ubuntu Touch существующие Qt-приложения, использующие QML, и обеспечить автоматическую смену стиля в зависимости от платформы. В новой версии обеспечен учёт системных настроек масштабирования, улучшено определение применения тёмных тем формления и добавлен новый индикатор продолжения выполнения работы («Busy»);

Источник: [ссылка]

Третий бета-выпуск платформы Android Q с раздельным обновлением системных компонентов

Компания Google представила третью бета-версию открытой мобильной платформы Android Q. Релиз Android Q, который будет поставляться под номером Android 10, ожидается в третьем квартале 2019 года. В анонсе также сообщается о достижении платформой рубежа в 2.5 миллиарда активных Android-устройств.

Для оценки новых возможностей платформы предложена программа бета-тестирования, в рамках которой экспериментальную ветку можно установить и поддерживать в актуальном виде через штатный интерфейс установки обновлений (OTA, over-the-air), без необходимости ручной замены прошивки. Обновления доступны для 15 устройств, включая смартфоны Google Pixel, Huawei Mate, Xiaomi Mi 9, Nokia 8.1, Sony Xperia XZ3, Vivo NEX, OPPO Reno, OnePlus 6T, ASUS ZenFone 5Z, LGE G8, TECNO Spark 3 Pro, Essential Phone и realme 3 Pro.

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

Изменения в третьей бета-версии Android Q по сравнению со вторым и первым бета-выпусками:

  • Представлен проект Mainline, позволяющий обновлять отдельные системные компоненты без обновления платформы целиком. Подобные обновления загружаются через Google Play отдельно от OTA-обновлений прошивки от производителя. Предполагается, что прямая доставка обновлений не привязанных к оборудованию компонентов платформы позволит существенно сократить время получения обновлений, увеличить оперативность исправления уязвимостей и снизить зависимость от производителей устройств в поддержании безопасности платформы. Примечательно, что модули с обновлениями изначально будут поставляться с открытым кодом, будут сразу доступны в репозиториях AOSP (Android Open Source Project) и смогут включать улучшения и исправления, подготовленные сторонними участниками.

    Из компонентов, которые будут обновляться раздельно, на первом этапе названы 13 модулей: мультимедийные кодеки, мультимедийный фреймворк, DNS-резолвер, Conscrypt Java Security Provider, Documents UI, Permission Controller, ExtServices, данные часовых поясов, ANGLE (прослойка для трансляции вызовов OpenGL ES в OpenGL, Direct3D 9/11, Desktop GL и Vulkan), Module Metadata, сетевые компоненты, Captive Portal Login и настройки сетевого доступа. Обновления системных компонентов поставляются в новом формате пакетов APEX, который отличается от APK возможностью применения на раннем этапе загрузки системы. На случае возможных сбоев предусмотрен режим отката изменений;

  • Добавлена поддержка стандарта мобильной связи 5G, для которого будут адаптированы имеющиеся API управления соединениями. В том числе через API приложения могут определять наличие высокоскоростного соединения и активности тарификации по трафику;
  • Добавлена функция «Live Caption», позволяющая автоматически на лету создавать субтитры при просмотре любого видео или прослушивания звуковых записей, независимо от используемого приложения. Распознавание речи производится локально без обращения к внешним сервисам;
  • Cистема автоматических быстрых ответов, ранее доступная для уведомлений, теперь может применяться для формирования рекомендаций наиболее вероятных действий в любых приложениях. Например, при показе сообщения с приглашением на встречу система предложит быстрые ответы с согласием или отклонением приглашения, а также покажет кнопку для просмотра намеченного места встречи на карте. Варианты выбираются с использованием системы машинного обучения на основании изучения особенностей работы пользователя;
  • На уровне системы реализована тёмная тема оформления которая может применяться для снижения утомления глаз при недостаточном освещении. Тёмная тема включается в настройках Settings > Display, через выпадающий блок быстрых настроек или при включении режима экономии энергии. Тёмная тема применяется как для системы, так и для приложений, в том числе предлагая режим автоматического преобразования в тёмные тона существующих тем;
  • Добавлена режим навигации жестами, позволяющий использовать для управления только экранные жесты без отображения навигационной панели и выделяя всё экранное пространство под контент. Например, кнопки типа Back и Home заменяются на сдвиг от края и скользящее касание снизу-вверх, для вызова списка запущенных приложений применяется длительное касание к экрану. Режим включается в настройках «Settings > System > Gestures»;
  • Добавлен «фокусный режим» (Focus Mode), позволяющий на время, когда нужно сосредоточится на решении какой-то задачи, выборочно приглушить отвлекающие приложения, например, приостановить получение почты и новостей, но оставить карты и мессенджер;
  • Добавлен режим родительского контроля «Family Link», позволяющий ограничить время работы детей с устройством, предоставлять бонусные минуты за успехи и достижения, просматривать списки запускаемых приложений и оценивать сколько времени в них проводит ребёнок, рецензировать устанавливаемые приложения и назначать ночное время для блокирования доступа по ночам;
  • Добавлен новый API для захвата звука, позволяющий одному приложению предоставить возможность обработки звукового потока другим приложением. Для предоставления доступа других приложений к звуковому выводу требуется предоставление специального разрешения;
  • Добавлен Thermal API, позволяющий приложениям контролировать показатели температуры CPU и GPU и самостоятельно принимать меры для снижения нагрузки (например, снижать FPS в играх и уменьшать разрешение транслируемого видео), не дожидаясь пока системе принудительно не начнёт урезать активность приложений.

Дополнительно опубликован майский набор исправлений проблем с безопасностью для Android, в котором устранено 30 уязвимостей, из которых 8 уязвимостям присвоен критический уровень опасности, а 21 — высокий уровень опасности. Большинство критических проблем позволяет совершить удалённую атаку для выполнения своего кода в системе. Проблемы помеченные как опасные позволяют через манипуляции с локальными приложениями выполнить код в контексте привилегированного процесса. 11 опасных и 4 критических уязвимостей выявлены в закрытых компонентах для чипов Qualcomm. Одна критическая уязвимость устранена в мультимедийном фреймворке и позволяет выполнить код при обработке специально оформленных мультимедийных данных. Три критические уязвимости исправлены в системных компонентах и могут привести к выполнению кода при обработке специально оформленных файлов в формате PAC.

Источник: [ссылка]

Релиз WordPress 5.2 с поддержкой проверки обновлений по цифровой подписи

Представлен релиз системы управления web-контентом WordPress 5.2. Выпуск примечателен завершением шестилетней эпопеи по реализации возможности проверки обновлений и дополнений по цифровой подписи.

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

С учётом того, что по данным проекта w3techs платформа WordPress используется на 33.8% сайтов в сети, инцидент принял бы масштаб катастрофы. При этом опасность компрометации инфраструктуры была не гипотетической, а вполне реальной. Например, несколько лет назад один из исследователей безопасности продемонстрировал уязвимость, позволявшую атакующему выполнить свой код на стороне сервера api.wordpress.org.

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

Внедрению проверки источника обновлений по цифровой подписи мешало то, что поддержка необходимых криптографических алгоритмов появилась в штатной поставке PHP относительно недавно. Нужные криптографические алгоритмы появились благодаря интеграции библиотеки Libsodium в основной состав PHP 7.2. Но в качестве минимально поддерживаемой в WordPress версии PHP заявлен выпуск 5.2.4 (начиная с WordPress 5.2 — 5.6.20). Включение поддержки цифровых подписей привело бы к существенному повышению требований к минимально поддерживаемой версии PHP или добавлению внешней зависимости, на что не могли пойти разработчики с учётом распространённости версий PHP в системах хостинга.

Выходом стала разработка и включение в состав WordPress 5.2 компактного варианта Libsodium — Sodium Compat, в котором на языке PHP реализован минимальный набор алгоритмов для проверки цифровых подписей. Реализация оставляет желать лучшего в плане производительности, но полностью решает проблему с совместимостью, а также позволяет разработчикам плагинов начать внедрение современных криптографических алгоритмов.

Для формирования цифровых подписей задействован алгоритм Ed25519, разработанный при участии Дэниеля Бернштейна (Daniel J. Bernstein). Цифровая подпись формируется для значения хэша SHA384, вычисленного от содержимого архива с обновлением. Ed25519 обладает более высоким уровнем безопасности, чем ECDSA и DSA, и демонстрирует очень высокую скоростью верификации и создания подписей. Стойкость к взлому для Ed25519 составляет порядка 2^128 (в среднем для атаки на Ed25519 потребуется совершить 2^140 битовых операций), что соответствует стойкости таких алгоритмов, как NIST P-256 и RSA с размером ключа в 3000 бит или 128-битному блочному шифру. Ed25519 также не подвержен проблемам с коллизиями в хэшах, не чувствителен к атакам через анализ оседания данных в кэше (cache-timing) и атакам по сторонним каналам.

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

Кроме поддержки цифровых подписей в WordPress 5.2 можно отметить следующие изменения:

  • В раздел «Site Health» добавлены две новые страницы для отладки типовых проблем с настройкой, а также предоставлена форма, через которую разработчики могут оставлять отладочную информацию администраторам сайта;
  • Добавлена реализация «белого экрана смерти», выводимого в случае фатальных проблем и помогающая администратору самостоятельно исправить проблемы, связанные с плагинами или темами, перейдя в специальный режим восстановления после сбоя;
  • Реализована система проверки совместимости с плагинами, автоматически проверяющая возможность использования плагина в текущей конфигурации с учётом применяемой версии PHP. Если для работы плагина нужна более новая версия PHP, система автоматически заблокирует включение данного плагина;
  • Добавлена поддержка включения модулей с JavaScript-кодом с использованием webpack и Babel;
  • Добавлен новый шаблон privacy-policy.php, позволяющий настроить содержимое страницы с условиями соблюдения конфиденциальности;
  • Для тем оформления добавлен обработчик wp_body_open hook, позволяющий вставить код сразу после тега body;
  • Требования к минимальной версии PHP подняты до 5.6.20, в плагинах и темах оформления появилась возможность использования пространств имён и анонимных функций;
  • Добавлено 13 новых пиктограмм.

Дополнительно можно упомянуть выявление критической уязвимости в WordPress-плагине WP Live Chat (CVE-2019-11185). Уязвимость позволяет выполнить произвольный PHP-код на сервере. Плагин используется на более чем 27 тысячах сайтов для организации интерактивного чата с посетителем, в том числе на сайтах таких компаний, как IKEA, Adobe, Huawei, PayPal, Tele2 и McDonald’s (Live Chat часто используется для реализации всплывающих назойливых чатов на сайтах компаний с предложением пообщаться с сотрудником).

Проблема проявляется в коде загрузки файлов на сервер и позволяет обойти проверку допустимых типов файлов и загрузить а сервер PHP-скрипт, после чего выполнить его прямым обращением через web. Интересно, что в прошлом году в Live Chat уже была выявлена похожая уязвимость (CVE-2018-12426), позволявшая загрузить PHP-код под видом изображения, указав иной тип контента в поле Content-type. В рамках исправления проблемы были добавлены дополнительные проверки по белым спискам и MIME-типу содержимого. Как оказалось эти проверки реализованы некорректно и их легко можно обойти.

В частности, прямая загрузка файлов с расширением «.php» запрещена, но в чёрный список не было добавлено расширение «.phtml», на многих серверах связанное с интерпретатором PHP. Белый список допускает только загрузку изображений, но обойти его можно указав двойное расширение, например, «.gif.phtml». Для обхода проверки MIME-типа в начале файла, до открытия тега с кодом PHP, достаточно было указать строку «GIF89a».

Источник: [ссылка]

Опубликован GTK 3.96, экспериментальный выпуск GTK 4

Спустя 10 месяцев с момента прошлого тестового выпуска представлен GTK 3.96, новый экспериментальный выпуск будущего стабильного релиза GTK 4. Ветка GTK 4 развивается в рамках нового процесса разработки, который пытается предоставить разработчикам приложений стабильный и поддерживаемый в течение нескольких лет API, который можно использовать не опасаясь, что каждые полгода придётся переделывать приложение из-за изменения API в очередной ветке GTK. До полной стабилизации GTK 4, приложения, предлагаемые для пользователей, рекомендуется продолжить собирать с использованием ветки GTK 3.24.

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

  • В API GSK (GTK Scene Kit), обеспечивающем отрисовку графических сцен через OpenGL и Vulkan, проведена работа над ошибками, выявлять которые стало проще благодаря новому отладочному инструменту gtk4-node-editor, позволяющему загрузить и отобразить узел рендеринга в сериализированном формате (может быть сохранён в режиме инспектирования GTK inspector), а также сравнить результат отрисовки при применении различных бэкендов;
  • Возможности 3D-трансформации доведены до уровня, позволяющего создавать такие анимационные эффекты, как вращающийся куб;
  • Полностью переписан GDK-бэкенд Broadway, предназначенный для отрисовки вывода библиотеки GTK в окне web-браузера. Старая реализация Broadway не укладывалась в предложенные в GTK 4 методы отрисовки (вместо вывода в буфер теперь применяется модель на основе узлов отрисовки (render nodes), при которой вывод компонуется в форме дерева высокоуровневых операций, эффективно обрабатываемых GPU при помощи OpenGL и Vulkan). Новый вариант Broadway преобразует узлы отрисовки в DOM-узлы со стилями CSS для вывода интерфейса в браузере. Каждое новое состояние экрана обрабатывается как изменение DOM-дерева относительно прошлого состояния, что позволяет сократить размер передаваемых удалённому клиенту данных. 3D-преобразования и графические эффекты реализуются через CSS-свойство transform;
  • В GDK продолжено внедрение API, разработанных с оглядкой на использование протокола Wayland, и проведение чистки API, завязанных на X11, или их перемещение в отдельный бэкенд X11. Отмечается прогресс выполнения работы по уходу от применения дочерних поверхностей и глобальных координат. Из GDK удалена поддержка GDK_SURFACE_SUBSURFACE;
  • Продолжен рефакторинг кода, связанного с выполнением операций Drag-and-Drop, в том числе предложены раздельные объекты GdkDrag и GdkDrop;
  • Упрощена обработка событий, которые теперь используются только для ввода. Остальные события заменены на отдельные сигналы, например, вместо событий вывода предложен сигнал «GdkSurface::render», вместо событий настройки — «GdkSurface::size-changed», вместо событий сопоставления — «GdkSurface::mapped», вместо gdk_event_handler_set() — «GdkSurface::event»;
  • В GDK-бэкенд для Wayland добавлена поддержка portal-интерфейса для доступа к настройкам GtkSettings. Для работы с методами ввода предложена поддержка расширения протокола text-input-unstable-v3;
  • Для разработки виджетов представлен новый объект GtkLayoutManager с реализацией системы управления раскладкой элементов в зависимости от размена видимой области. GtkLayoutManager пришёл на смену дочерним свойствам в контейнерах GTK, таких как GtkBox и GtkGrid. Предложено несколько готовых менеджеров раскладки: GtkBinLayout для простых контейнеров с одним дочерним элементом, GtkBoxLayout для линейно выровненных дочерних элементов, GtkGridLayout для выравнивания дочерних элементов по сетке, GtkFixedLayout для произвольного позиционирования дочерних элементов, GtkCustomLayout для трансляции традиционных элементов на основе обработчиков size_allocate;
  • В виджеты GtkAssistant, GtkStack и GtkNotebook добавлены публично доступные объекты для страничного вывода дочерних элементов, на которые переведены не связанные с раскладкой (Layout) дочерние свойства данных виджетов. Так как все существующие дочерние свойства преобразованы в обычные свойства, свойства раскладки или перемещены в страничные объекты, из GtkContainer полностью удалена поддержка дочерних свойств;
  • Базовая функциональность GtkEntry перемещена в новый виджет GtkText, который также включает расширенный интерфейс редактирования GtkEditable. Все существующие подклассы ввода данных переделаны в форме реализаций GtkEditable на базе нового виджета GtkText;
  • Добавлен новый виджет GtkPasswordEntry для форм ввода паролей;
  • В GtkWidgets добавлена возможность преобразования дочерних элементов при помощи методов линейной трансформации, задаваемых через CSS или аргумент gtk_widget_allocate в GskTransform. Указанная возможность уже применена в виджете GtkFixed;
  • Добавлены новые модели формирования списков: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel и GtkSingleSelection. В дальнейшем планируется добавить поддержу моделей списков в GtkListView;
  • В GtkBuilder добавлена возможность задания свойств объектов по месту (inline), вместо использования ссылок по идентификатору;
  • В gtk4-builder-tool добавлена команда для преобразования UI-файлов из GTK 3 в GTK 4;
  • Прекращена поддержка ключевых тем оформления (key theme), вкладочных меню (tabular menu) и комбинированных блоков (combo box). Удалён виджет GtkInvisible.

    Источник: [ссылка]