The OpenNET Project / Index page

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

08.09.2019 Выпуск ZeroNet 0.7, платформы для создания децентрализованных сайтов (66 +22)
  После года разработки увидел свет выпуск децентрализованной web-платформы ZeroNet 0.7, которая предлагает использовать механизмы адресации и верификации Bitcoin в сочетании с технологиями распределённой доставки BitTorrent для создания сайтов, которые невозможно подвергнуть цензуре, подделать или заблокировать. Содержимое сайтов хранится в P2P-сети на машинах посетителей и проверяется по цифровой подписи владельца. Для адресации используются система альтернативных корневых DNS-серверов Namecoin. Проект написан на языке Python и распространяется под лицензией GPLv2.

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

Для просмотра сайтов ZeroNet достаточно запустить скрипт zeronet.py, после чего в браузере можно открывать сайты через URL "http://127.0.0.1:43110/адрес_zeronet" (например, "http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NMN3PMwF5qbebTf1D"). При открытии сайта программа находит ближайших peer-ов и загружает связанные с запрошенной страницей файлы (html, css, картинки и т.п.). Для создания своего сайта достаточно запустить команду "zeronet.py siteCreate" после чего будет сгенерирован идентификатор сайта и закрытый ключ для подтверждения авторства по цифровой подписи.

Для созданного сайта будет сформирована пустая директория вида "data/1HeLLo4usjaLetFx6NMH5PMwF3qbebTf1D". После изменения содержимого данной директории, требуется заверение новой версии при помощи команды "zeronet.py siteSign идентификатор_сайта" и введения закрытого ключа. Как только новое содержимое будет заверено, требуется анонсировать его командой "zeronet.py sitePublish идентификатор_сайта", чтобы изменённый вариант стал доступен peer-ам (для анонса изменений используется API WebSocket). По цепочке peer-ы проверят целостность новой версии по цифровой подписи, загрузят новое содержимое и передадут другим peer-ам.

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

  • Отсутствие единой точки отказа - сайт остаётся доступен, если в раздаче имеется хотя бы один peer;
  • Отсутствие эталонного хранилища сайта - сайт невозможно закрыть отключив хостинг, так как данные размещены на всех машинах посетителей;
  • Вся ранее просмотренная информация имеется в кэше и доступна с текущей машины в режиме offline, без выхода в глобальную сеть.
  • Поддержка обновления содержимого в режиме реального времени;
  • Возможность адресации через регистрацию домена в зоне ".bit";
  • Работа без предварительной настройки - достаточно распаковать архив с ПО и запустить один скрипт;
  • Возможность клонирования сайтов в один клик;
  • Беспарольная авторизация на основе формата BIP32: учётная запись защищена тем же криптографическим методом, что и криптовалюта Bitcoin;
  • Встроенный SQL-сервер с функциями P2P-синхронизации данных;
  • Возможность использования Tor для анонимности и полная поддержка использования скрытых сервисов Tor (.onion) вместо IPv4-адресов;
  • Поддержка TLS-шифрования;
  • Автоматическая доступность через uPnP;
  • Возможность прикрепление к сайту нескольких авторов, имеющих разные цифровые подписи;
  • Наличие плагина для создания многопользовательских конфигураций (openproxy);
  • Поддержка трансляции новостных лент;
  • Работа в любых браузерах и операционных системах.



Основные изменения в ZeroNet 0.7

  • Код переработан для поддержки Python3, обеспечена совместимость с Python 3.4-3.8;
  • Реализован защищённый режим синхронизации БД;
  • По возможности прекращена поставка в основном составе сторонних библиотек в пользу внешних зависимостей;
  • В 5-10 раз ускорен код для верификации цифровых подписей (задействована библиотека libsecp256k1;
  • Добавлена рандомизация уже сгенерированных сертификатов для обхода фильтров;
  • Обновлён код P2P, который переведён на использование протокола ZeroNet;
  • Добавлен режим работы в Offline;
  • Добавлен плагин UiPluginManager для установки и управления сторонними плагинами;
  • Обеспечена полная поддержка OpenSSL 1.1;
  • При соединении с peer-ами задействованы фиктивные записи SNI и ALPN, чтобы сделать соединения более похожими на обращения к обычным сайтам по HTTPS;

В тот же день, что и релиз ZeroNet 0.7.0 сформировано обновление 0.7.1, в котором устранена опасная уязвимость, которая потенциально позволяет организовать выполнение кода на стороне клиента. Из-за ошибки в коде отрисовки переменных шаблонов, открытый внешний сайт может установить соединение к системе клиента через WebSocket с неограниченными правами ADMIN/NOSANDBOX, что даёт возможность изменить параметры конфигурации и добиться выполнения своего кода на компьютере пользователя через манипуляции с параметром open_browser. Уязвимость проявляется в ветке 0.7, а также в экспериментальных сборках начиная с ревизии 4188 (изменение внесено 20 дней назад).

  1. OpenNews: Доступен GNUnet 0.11, фреймворк для построения защищённых P2P-сетей
  2. OpenNews: Открытый проект AllJoyn нацелен на создание P2P-сети из мобильных устройств
  3. OpenNews: Unhosted - новый подход к созданию веб-приложений с децентрализацией пользовательских данных
  4. OpenNews: Проект Darknet по созданию свободного интернета с помощью беспроводных mesh-сетей
  5. OpenNews: Анонсирован GitTorrent для доступа к Git-репозиториям при помощи BitTorrent
Обсуждение (66 +22) | Тип: Программы |
08.09.2019 KDE сосредоточит внимание на поддержке Wayland, унификации и доставке приложений (130 +23)
  Лидия Пинчер (Lydia Pintscher), президент некоммерческой организации KDE e.V., курирующей развитие проекта KDE, в своей приветственной речи на конференции Akademy 2019 представила новые цели проекта, которым будет уделено повышенное внимание при разработке в ближайшие два года. Цели выбраны на основе голосования, проведённого в сообществе. Прошлые цели были определены в 2017 году и затрагивали повышение удобства работы с базовыми приложениями, обеспечение конфиденциальности данных пользователей и создание комфортных условий для новых участников сообщества.

Новые цели:

  • Завершение перехода на Wayland. Wayland рассматривается как будущее рабочего стола, но в текущем виде поддержка данного протокола в KDE ещё не доведена до уровня, необходимого чтобы полностью заменить X11. В ближайшие два года планируется перевести ядро KDE на Wayland, устранить имеющиеся недоработки и сделать первичным окружение KDE, работающее поверх Wayland, а X11 перевести в разряд опций и необязательных зависимостей.
  • Улучшение согласованности и организации взаимодействия при разработке приложений. В различных приложениях KDE наблюдаются не только различия в оформлении, но и несогласованность в функциональности. Например, вкладки по разному релизованы в Falkon, Konsole, Dolphin и Kate, что затрудняет внесение исправлений ошибок разработчиками и сбивает с толку пользователей. В качестве цели называется унификация поведения типовых элементов приложений, таких как боковые панели, раскрывающиеся меню и вкладки, а также приведения сайтов приложений KDE к единому виду. Среди задач также обозначено снижение фрагментации приложений и перекрытия приложениями функциональности друг друга (например, когда предлагается несколько разных мультимедийных проигрывателей).
  • Наведение порядка в средствах доставки и распространения приложений. Для KDE предлагается более 200 программ и несметное число дополнений, плагинов и плазмоидов, но до недавнего времени не было даже обновляемого сайта-каталога, где эти приложения были бы перечислены. Среди целей называется модернизация платформ, при помощи которых разработчики KDE взаимодействуют с пользователями, улучшение механизмов формирования пакетов с приложениями, переработка документациии и метаданных, поставляемых с приложениями.

  1. OpenNews: Выпуск KDE Applications 19.08
  2. OpenNews: Проект xrdesktop для использования GNOME и KDE в шлемах виртуальной реальности
  3. OpenNews: Релиз рабочего стола KDE Plasma 5.16
  4. OpenNews: Релиз браузера Falkon 3.1.0, развиваемого проектом KDE
  5. OpenNews: Цели проекта KDE на ближайшие 3-4 года
Обсуждение (130 +23) | Тип: Обобщение |
07.09.2019 Анонсирована дата начала продаж смартфона Librem 5 (237 +50)
  Компании Purism опубликовала график поступления в продажу смартфона Librem 5, включающего ряд программных и аппаратных мер для блокирования попыток отслеживания и сбора информации о пользователе. Смартфон планируется сертифицировать в Фонде СПО по программе "Respects Your Freedom", подтверждающей предоставление пользователю полного контроля над устройством и оснащение только свободным ПО, включая драйверы и прошивки. Смартфон будет поставляться с полностью свободным Linux-дистрибутивом PureOS, использующим пакетную базу Debian и адаптированное для смартфонов окружение GNOME (в качестве опций возможна установка KDE Plasma Mobile и UBports). Цена Librem 5 составит $699.

Поставка будет разделена на несколько серий (выпусков), по мере формирования которых будет оттачиваться аппаратное обеспечение и программная начинка (каждая новая серия будет включать обновление аппаратной платформы, механического дизайна и ПО):

  • Серия Aspen, поставка с 24 сентября по 22 октября. Начальный вариант платы и вручную изготовленный корпус с черновым размещением элементов. Предварительный выпуск базовых приложений с возможностью управления адресной книгой, простой навигации в сети, начальной системой управления питанием и установкой обновлений через запуск команд в терминале. Сертификация беспроводных чипов в FCC и CE;
  • Серия Birch, поставка с 29 октября по 26 ноября. Следующая ревизия платы. Более плотная компоновка и улучшенное выравнивание элементов в корпусе. Улучшенные конфигурация, браузер и система управления питанием;
  • Серия Chestnut, поставка с 3 по 31 декабря. Готовность всех аппаратных компонентов. Закрытое оформление переключателей в корпусе. Финальная конфигурация, улучшенные браузер и система управления питанием;
  • Серия Dogwood, поставка с 7 января по 31 марта 2020 года. Финальная доводка корпуса. Улучшенные базовые приложения, включение дополнительных программ и графический интерфейс для установки приложений из каталога PureOS Store;
  • Серия Evergreen, поставка во 2 квартале 2020 года. Корпус промышленной формовки. Релиз прошивки с длительным сроком поддержки. Сертификация всего устройства в FCC и CE.
  • Серия Fir, поставка в 4 квартале 2020 года. Замена CPU на процессор следующего поколения, изготовленных по техпроцессу 14 nm. Вторая редакция корпуса.

Напомним, что смартфон Librem 5 примечателен наличием трех переключателей, которые на уровне аппаратного разрыва цепей позволяют отключить камеру, микрофон, WiFi/Bluetooth и модуль Baseband. При отключении всех трёх переключателей дополнительно блокируются и датчики (IMU+компас & GNSS, датчики освещения и приближения). Компоненты Baseband-чипа, отвечающего за работу в сотовых сетях, отделены от основного CPU, обеспечивающего работу пользовательского окружения.

Работа мобильных приложений обеспечивается библиотекой libhandy, в рамках которой развивается набор виджетов и объектов для создания интерфейса пользователя для мобильных устройств при помощи GTK и технологий GNOME. Библиотека позволяет работать с одними и теми же GNOME-приложениями на смартфонах и ПК - подключив смартфон к монитору получить типовой рабочий стол GNOME на базе единого набора приложений. Для обмена сообщениями по умолчанию предложена система децентрализованных коммуникаций на базе протокола Matrix.

Аппаратная начинка:

  • SoC i.MX8M c четырёхядерным CPU ARM64 Cortex A53 (1.5GHz), вспомогательным чипом Cortex M4 и GPU Vivante c поддержкой OpenGL/ES 3.1, Vulkan и OpenCL 1.2.
  • Baseband-чип Gemalto PLS8 3G/4G (возможна замена на Broadmobi BM818, производимый в Китае).
  • ОЗУ - 3GB.
  • встроенный Flash 32GB плюс слот microSD.
  • 5.7-дюймовый экран (IPS TFT) с разрешением 720×1440.
  • Аккумулятор ёмкостью 3500mAh.
  • Wi-Fi 802.11abgn 2.4 Ghz / 5Ghz, Bluetooth 4, GPS Teseo LIV3F GNSS.
  • Передняя и задняя камеры в 8 и 13 мегапикселей.
  • USB Type-C (USB 3.0, питание и видеовывод).
  • Слот для чтения смарткарт 2FF.

  1. OpenNews: Опубликована финальная спецификация смартфона Librem 5
  2. OpenNews: Критическая уязвимость в сервисе Librem One, выявленная в день его запуска
  3. OpenNews: Опубликованы макеты мобильного интерфейса GNOME для смартфона Librem 5
  4. OpenNews: Успешно собраны средства на производство свободного смартфона Librem 5
  5. OpenNews: В PureOS добавлен адаптивный интерфейс для мобильных устройств и больших экранов
Обсуждение (237 +50) | Тип: К сведению |
07.09.2019 Mozilla переходит к включению по умолчанию DNS-over-HTTPS в Firefox (246 –3)
  Разработчики Firefox объявили о завершении тестирования поддержки DNS поверх HTTPS (DoH, DNS over HTTPS) и намерении в конце сентября включить данную технологию по умолчанию для пользователей из США. Включение будет производиться поступательно, вначале для нескольких процентов пользователей, а в случае отсутствия проблем постепенно доводя до 100%. После охвата США будет рассмотрена возможность включения DoH и в других странах.

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

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

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

Автоматический возврат на использование штатного резолвера операционной системы также предусмотрен при возникновении сбоев при резолвинге через DoH (например, при нарушении сетевой доступности с провайдером DoH или возникновении сбоев в его инфраструктуре). Смысл подобных проверок сомнителен, так как никто не мешает атакующим, контролирующим работу резолвера или способным вмешаться в трафик, симулировать подобное поведение для отключения шифрования DNS-трафика. Проблема решена добавлением в настройки пункта "DoH always" (по молчанию не активен), при установке которого автоматическое отключение не применяется, что является разумным компромиссом.

Для определения корпоративных резолверов выполняются проверки нетипичных доменов первого уровня (TLD) и возвращение системным резолвером интранет-адресов. Для определения включения родительского контроля осуществляется попытка резолвинга имени exampleadultsite.com и если результат не совпадает с фактическим IP, считается, что активна блокировка взрослого контента на уровне DNS. В качестве признаков также проверяются IP-адреса Google и YouTube на предмет их подмены на restrict.youtube.com, forcesafesearch.google.com и restrictmoderate.youtube.com. Дополнительно Mozilla предлагает внедрить единый проверочный хост use-application-dns.net, который могут использовать интернет-провайдеры и сервисы родительского контроля в качестве метки для отключения DoH (если хост не определяется, Firefox отключает DoH).

Работа через единый DoH-сервис также потенциально может привести к проблемам с оптимизацией трафика в сетях доставки контента, которые выполняют балансировку трафика с использованием DNS (DNS-сервер CDN-сети формирует ответ, учитывая адрес резолвера и выдаёт ближайший хост для получения контента). Отправка DNS-запроса c ближайшего к пользователю резолвера в таких CDN приводит к возврату адреса ближайшего к пользователю хоста, но при отправке DNS-запроса с централизованного резолвера будет выдан адрес хоста, ближайший к серверу DNS-over-HTTPS. Тестирование на практике показало, что применение DNS-over-HTTP при использовании CDN практически не приводило к задержкам перед началом передачи контента (для быстрых соединений задержки не превышали 10 миллисекунд, а на медленных каналах связи наблюдалось даже ускорение работы). Для передачи резолверу CDN сведения о местоположении клиента также было рассмотрено применение расширения EDNS Client Subnet.

Напомним, что DoH может оказаться полезным для исключения утечек сведений о запрашиваемых именах хостов через DNS-серверы провайдеров, борьбы с MITM-атаками и подменой DNS-трафика, противостояния блокировкам на уровне DNS или для организации работы в случае невозможности прямого обращения к DNS-серверам (например, при работе через прокси). Если в обычной ситуации DNS-запросы напрямую отправляются на определённые в конфигурации системы DNS-серверы, то в случае DoH запрос на определение IP-адреса хоста инкапсулируется в трафик HTTPS и отправляется на HTTP-сервер, на котором резолвер обрабатывает запросы через Web API. Существующий стандарт DNSSEC использует шифрование лишь для аутентификации клиента и сервера, но не защищает трафик от перехвата и не гарантирует конфиденциальность запросов.

Для включения DoH в about:config следует изменить значение переменной network.trr.mode, которая поддерживается начиная с Firefox 60. Значение 0 полностью отключает DoH; 1 - используется DNS или DoH, в зависимости от того, что быстрее; 2 - используется DoH по умолчанию, а DNS как запасной вариант; 3 - используется только DoH; 4 - режим зеркалирования при котором DoH и DNS задействованы параллельно. По умолчанию используется DNS-сервер CloudFlare, но его можно изменить через параметр network.trr.uri, например, можно установить "https://dns.google.com/experimental" или "https://9.9.9.9/dns-query".

  1. OpenNews: В Firefox будет проведён эксперимент, связанный с DNS-over-HTTPS
  2. OpenNews: Тестирование DNS over HTTPS в Firefox может привести к утечке данных об открываемых сайтах
  3. OpenNews: В Великобритании Firefox не будет использовать DNS-over-HTTPS из-за претензий в обходе блокировок
  4. OpenNews: Четвёртый этап тестирования DNS-over-HTTPS в Firefox
  5. OpenNews: Новый этап тестирования DNS поверх HTTPS в Firefox
Обсуждение (246 –3) | Тип: К сведению |
06.09.2019 Раскрыты подробности критической уязвимости в Exim (97 +15)
  Опубликован корректирующий выпуск Exim 4.92.2 с устранением критической уязвимости (CVE-2019-15846), которая в конфигурации по умолчанию может привести к удалённому выполнению кода злоумышленника с правами root. Проблема проявляется только при включении поддержки TLS и эксплуатируется через передачу специально оформленного клиентского сертификата или модифицированного значения в SNI. Уязвимость выявлена компанией Qualys.

Проблема присутствует в обработчике экранирования спецсимволов в строке (string_interpret_escape() из string.c) и вызвана тем, что символ '\' в конце строки интерпретируется перед нулевым символом ('\0') и экранирует его. При экранировании последовательность '\' и следующий далее нулевой код конца строки обрабатывается как один символ и указатель сдвигается на данные за пределами строки, которые обрабатываются как её продолжение.

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

В конфигурации по умолчанию уязвимость может быть эксплуатирована через передачу специально оформленных данных в SNI при установке защищённого соединения к серверу. Проблема также может быть эксаплуатирована через модификацию значений peerdn в конфигурациях, настроенных для аутентификации по сертификату клиента, или при импорте сертификатов. Атака через SNI и peerdn возможна начиная с выпуска Exim 4.80, в котором функция string_unprinting() была применена для разэкранирования содержимого peerdn и SNI.

Для атаки через SNI подготовлен прототип эксплоита, работающий на архитектурах i386 и amd64 в Linux-системах с Glibc. В эксплоите используется наложение данных на область кучи, приводящее к перезаписи памяти, в которой хранится имя файла лога. Имя файла заменяется на "/../../../../../../../../etc/passwd". Далее перезаписывается переменная с адресом отправителя, который первым сохраняется в лог, что позволяет добавить нового пользователя в систему.

Обновления пакетов с устранением уязвимости выпущено дистрибутивами Debian, Ubuntu, Fedora, SUSE/openSUSE и FreeBSD. RHEL и CentOS проблеме не подвержены, так как Exim не входит в их штатный репозиторий пакетов (в EPEL обновление уже сформировано, но пока не помещено в публичный репозиторий). В коде Exim проблема устраняется однострочным патчем, отключающем экранирующее действие обратного слэша, если он находится в конце строки.

В качестве обходного пути для блокирования уязвимости можно отключить поддержку TLS или добавить в секцию ACL "acl_smtp_mail":


    deny    condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
    deny    condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

  1. OpenNews: Обновление Exim 4.92.1 с устранением уязвимости
  2. OpenNews: Критическая уязвимость в Exim, позволяющая выполнить код на сервере с правами root
  3. OpenNews: Массовая атака на уязвимые почтовые серверы на основе Exim
  4. OpenNews: Выпуск Exim 4.90.1 с устранением уязвимости, не исключающей выполнение кода на сервере
  5. OpenNews: Уязвимость в Exim, позволяющая выполнить код на сервере
Обсуждение (97 +15) | Тип: Проблемы безопасности |
06.09.2019 Открыт код системы сканирования 3D-объектов Handy 3D Scanner (10 +9)
  Сообщество State of the Art представило новую версию Handy 3D Scanner 0.5.1 и опубликовало исходные тексты проекта на GitHub. Проект развивает портативный интерфейс для трёхмерного сканирования объектов и местности, применяя доступные стерео-камеры Intel RealSense D400. Код написан на языке С++ (интерфейс на Qt5) и распространяется под лицензией Apache 2.0. Поддерживается Linux и Android.

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

Особенности Handy 3D Scanner:

  • Кросс-платформенность (Qt5) и работа на различных Android устройствах (поддерживается Android 5.1 и выше);
  • Захват множества снимков (облаков точек) в разрешении ~1MPix;
  • Позиционирование на местности при помощи ARCore (основной камеры телефона);
  • Предпросмотр захваченных снимков как облаков точек или сгенерированных поверхностей;
  • Сохранение и загрузка снимков для дальнейшей обработки в формате PCD;
  • Экспорт сцены в формат glTF 2.0 с поддержкой сжатия;
  • Открытая модель разработки и исходный код свободно доступный на GitHub.

  1. OpenNews: Выпуск свободной системы 3D-моделирования Blender 2.80
  2. OpenNews: Релиз системы проектирования трёхмерных интерфейсов Qt 3D Studio 2.2
  3. OpenNews: Бета-выпуск Dust3D, нового открытого пакета для создания 3D-моделей
  4. OpenNews: Google открыл код Seuratо, системы оптимизации 3D-сцен
Обсуждение (10 +9) | Автор: Аноним |
05.09.2019 Google открыл код библиотеки для конфиденциальной обработки данных (41 +3)
  Компания Google опубликовала исходные тексты библиотеки "Differential Privacy" с реализацией методов дифференциальной приватности, позволяющих с достаточно высокой точностью выполнять статистические операции над набором данных без возможности идентификации отдельных записей в нём. Код библиотеки написан на языке C++ и открыт под лицензией Apache 2.0.

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

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

Библиотека использует модульную архитектуру, позволяющую расширять имеющуюся функциональность и добавлять дополнительные механизмы, агрегатные функции и средства управления уровнем конфиденциальности. На базе библиотеки для СУБД PostgreSQL 11 подготовлено расширение с набором анонимных агрегатных функций, использующих методы дифференциальной приватности - ANON_COUNT, ANON_SUM, ANON_AVG, ANON_VAR, ANON_STDDEV и ANON_NTILE.

  1. OpenNews: IBM, Google, Microsoft и Intel образовали альянс для развития открытых технологий защиты данных
  2. OpenNews: Компания Google представила инициативу Privacy Sandbox
  3. OpenNews: Google открыл систему для анализа наборов данных без нарушения конфиденциальности
  4. OpenNews: Опубликован Exonum, фреймворк для создания приватных блокчейнов
  5. OpenNews: Анализ утечек конфиденциальных данных через репозитории на GitHub
Обсуждение (41 +3) | Тип: Программы |
05.09.2019 Выпуск системного менеджера systemd 243 (146 +6)
  После пяти месяцев разработки представлен релиз системного менеджера systemd 243. Из новшеств можно отметить интеграцию в PID 1 обработчика нехватки памяти в системе, поддержку прикрепления собственных BPF-программ для фильтрации трафика unit-ов, многочисленные новые опции для systemd-networkd, режим мониторинга пропускной способности сетевых интерфейсов, задействование по умолчанию на 64-разрядных системах 22-битных номеров PID вместо 16-битных, переход на унифицированную иерархию cgroups, включение в состав systemd-network-generator.

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

  • В обработчик PID 1 добавлено распознавание генерируемых ядром сигналов о нехватке памяти (Out-Of-Memory, OOM) для перевода юнитов, достигших лимита в потреблении памяти, в специальное состояние с опциональной возможностью их принудительного завершения или остановки;
  • Для unit-файлов реализованы новые параметры IPIngressFilterPath и IPEgressFilterPath, позволяющие подключить BPF-программы с произвольными обработчиками для фильтрации входящих и исходящих IP-пакетов, генерируемых процессами, связанными с данным unit-ом. Предложенные возможности позволяют создавать своего рода межсетевые экраны для сервисов systemd. Пример написания простого сетевого фильтра на базе BPF;
  • В утилиту systemctl добавлена команда "clean" для удаления кэша, runtime-файлов, информации о состоянии и каталогов с логами;
  • В systemd-networkd добавлена поддержка сетевых интерфейсов MACsec, nlmon, IPVTAP и Xfrm;
  • В systemd-networkd реализована раздельная настройка стеков DHCPv4 и DHCPv6 через секции "[DHCPv4]" и "[DHCPv6]" в файле конфигурации. Добавлена опция RoutesToDNS для добавления отдельного маршрута к DNS-серверу, указанному в параметрах, полученных от DHCP-сервера (чтобы трафик к DNS отправлялся через тот же линк, что и основной маршрут, полученный от DHCP). Для DHCPv4 добавлены новые опции: MaxAttempts - макcимальное число запросов на получение адреса, BlackList - чёрный список DHCP-серверов, SendRelease - включение отправки сообщений DHCP RELEASE при завершении сеанса;
  • В утилиту systemd-analyze добавлены новые команды:
    • "systemd-analyze timestamp" - разбор и преобразование времени;
    • "systemd-analyze timespan" - разбор и преобразование промежутков времени;
    • "systemd-analyze condition" - разбор и тестирование выражений ConditionXYZ;
    • "systemd-analyze exit-status" - разбор и преобразование кодов завершения из номеров в названия и наоборот;
    • "systemd-analyze unit-files" - вывод списка всех файловых путей для юнитов и псевдонимов юнитов.
  • Опции SuccessExitStatus, RestartPreventExitStatus и RestartForceExitStatus теперь поддерживают не только числовые коды возврата, но и их текстовые идентификаторы (например "DATAERR"). Посмотреть список привязки кодов к идентификаторам можно через команду "sytemd-analyze exit-status";
  • В утилиту networkctl добавлена команда "delete" для удаления виртуальных сетевых устройств, а также опция "--stats" для вывода статистики по устройствам;
  • В networkd.conf добавлены настройки SpeedMeter и SpeedMeterIntervalSec для периодического измерения пропускной способности сетевых интерфейсов. Статистику, полученную по результатам измерений, можно посмотреть в выводе команды 'networkctl status';
  • Добавлена новая утилита systemd-network-generator для генерации файлов .network, .netdev и .link на основе настроек IP, переданных при запуске через командную строку ядра Linux в формате настроек Dracut;
  • Значение sysctl "kernel.pid_max" на 64-разрядных системах теперь выставляется по молчанию в 4194304 (22-битные PID вместо 16-битных), что уменьшает вероятность коллизий при назначении PID, повышает лимит на число одновременно запущенных процессов и положительно отражается на безопасности. Потенциально изменение может привести к проблемам с совместимостью, но на практике о подобных проблемах пока не сообщалось;
  • По умолчанию на этапе сборки осуществлён переход на унифицированную иерархию cgroups-v2 ("-Ddefault-hierarchy=unified"). Ранее по умолчанию выставлялся гибридный режим ("-Ddefault-hierarchy=hybrid");


  • Изменено поведение фильтра системных вызовов (SystemCallFilter), который в случае обращения к запрещённому системному вызову теперь завершает весь процесс, а не отдельные потоки (thread), так как завершение отдельных потоков могло приводить к непредсказуемым проблемам. Изменение действует только при наличии ядра Linux 4.14+ и libseccomp 2.4.0+;
  • Непривилегированным программам предоставлена возможность отправки пакетов ICMP Echo (ping) благодаря установке sysctl "net.ipv4.ping_group_range" для всего диапазона групп (для всех процессов);
  • Для ускорения процесса сборки по умолчанию прекращена генерации man-руководств (для сборки полной документации нужно использовать опцию "-Dman=true" или "-Dhtml=true" для руководств в формате html). Для упрощения просмотра документации в состав включены два скрипта build/man/man и build/man/html для генерации и предпросмотра интересующих руководств;
  • Для обработки доменных имён с символами национальных алфавитов по умолчанию задействована библиотека libidn2 (для возвращения libidn следует использовать опцию "-Dlibidn=true");
  • Прекращена поддержка исполняемого файла /usr/sbin/halt.local, предоставлявшего функциональность, не получившую должного распространения в дистрибутивах. Для организации запуска команд при завершении работы рекомендовано использовать скрипты в /usr/lib/systemd/system-shutdown/ или определить новый unit, зависимый от final.target;
  • На последней стадии завершения работы systemd теперь автоматически увеличивает уровень логов в sysctl "kernel.printk", что решает проблему с отображением в логе событий, наступивших на поздних стадиях завершения работы, когда штатные демоны ведения логов уже завершены;
  • В journalctl и других отображающих логи утилитах обеспечена подсветка предупреждений жёлтым цветом, а записей аудита синим для их визуального выделения из общей массы;
  • В переменной окружения $PATH путь к bin/ теперь следует раньше пути к sbin/, т.е. при наличии одинаковых имён исполняемых файлов в обоих каталогах, будет выполнен файл из bin/;
  • В systemd-logind обеспечен вызов SetBrightness() для безопасного изменения яркости экрана для каждого сеанса;
  • В команду "udevadm info" добавлен флаг "--wait-for-initialization" для ожидания завершения инициализации устройства;
  • В процессе загрузки системы обработчик PID 1 теперь выводит на экран названия юнитов, вместо строки с их описанием. Для возвращения прошлого поведения можно использовать опцию StatusUnitFormat в /etc/systemd/system.conf или параметр ядра systemd.status_unit_format;
  • В /etc/systemd/system.conf для watchdog в PID 1 добавлена опция KExecWatchdogSec, определяющая таймаут для перезапуска с использованием kexec. Старая настройка ShutdownWatchdogSec переименована в RebootWatchdogSec и определяет таймаут для работ в процессе завершения работы или обычного перезапуска;
  • Для сервисов добавлена новая опция ExecCondition, позволяющая задать команды, которые будут выполнены до ExecStartPre. На основе возвращённого командой кода ошибки принимается решение о дальнейшем выполнении юнита - если возвращён код 0 запуск юнита продолжается, если с 1 до 254 молча завершается без пометки возникновения сбоя, если 255 - завершается с пометкой возникновения сбоя;
  • Добавлен новый сервис systemd-pstore.service для извлечения данных из sys/fs/pstore/ и из сохранения в /var/lib/pstore для дальнейшего анализа;
  • В утилиту timedatectl добавлены новые команды для настойки параметров NTP для systemd-timesyncd в привязке к сетевым интерфейсам;
  • В команде "localectl list-locales" прекращён показ локалей, отличных от UTF-8;
  • Обеспечено игнорирование ошибок присвоения переменных в файлах sysctl.d/, если имя переменной начинается с символа "-";
  • Сервис systemd-random-seed.service теперь полностью отвечает за инициализацию пула энтропии генератора псевдослучайных чисел ядра Linux. Сервисы которым требуется корректно инициализированный /dev/urandom должны запускаться после systemd-random-seed.service;
  • В загрузчике systemd-boot обеспечена опциональная возможность поддержания seed-файла со случайной последовательностью в разделе EFI System Partition (ESP);
  • В утилиту bootctl добавлены новые команды "bootctl random-seed" для генерации seed-файла в ESP и "bootctl is-installed" для проверки установки загрузчика systemd-boot. В bootctl также налажен вывод предупреждений о некорректной настройке загрузочных записей (например, когда образ ядра удалён, а запись для его загрузки оставлена);
  • Обеспечен автоматический выбор раздела подкачки при переходе системы в спящий режим. Раздел выбирается в зависимости от настроенного для него приоритета, а в случае одинаковых приоритетов - размера свободного пространства;
  • В /etc/crypttab добавлена опция keyfile-timeout для задания времени ожидания устройства с ключом шифрования перед выводом запроса пароля для доступа к шифрованному разделу;
  • Добавлена опция IOWeight для установки веса ввода/вывода для планировщика BFQ;


  • В systemd-resolved добавлен строгий ('strict') режим работы для DNS-over-TLS и реализована возможность кэширования только позитивных DNS-ответов ("Cache no-negative" в resolved.conf);
  • Для VXLAN в systemd-networkd добавлена опция GenericProtocolExtension для включения расширений протокола VXLAN. Для VXLAN и GENEVE добавлена опция IPDoNotFragment для установки флага запрета фрагментации для исходящих пакетов;
  • В systemd-networkd в секции "[Route]" появилась опция FastOpenNoCookie для включения механизма быстрого открытия TCP-соединений (TFO - TCP Fast Open, RFC 7413) в привязке к отдельным маршрутам, а также опция TTLPropagate для настройки TTL LSP (Label Switched Path). В опции "Type" обеспечена поддержка режимов маршрутизации local, broadcast, anycast, multicast, any и xresolve;
  • В systemd-networkd в секции "[Network]" предложена опция DefaultRouteOnDevice для автоматической настройки маршрута по умолчанию для заданного сетевого устройства;
  • В systemd-networkd для сетевых мостов добавлены опции ProxyARP и ProxyARPWifi для настройки поведения proxy ARP, MulticastRouter для задания параметров маршрутизации в режиме multicast, MulticastIGMPVersion для изменения версии IGMP (Internet Group Management Protocol) для multicast;
  • В systemd-networkd для туннелей FooOverUDP добавлены опции Local, Peer и PeerPort для настройки IP-адресов локальной и удалённой сторон, а также номера сетевого порта. Для туннелей TUN добавлена опция VnetHeader для настройки поддержки GSO (Generic Segment Offload);
  • В systemd-networkd в файлах .network и .link в секции [Match] появилась опция Property, позволяющая определить устройства по специфичным для них свойствам в udev;
  • В systemd-networkd для туннелей добавлена опция AssignToLoopback, управляющая привязкой конца туннеля к loopback устройству "lo";
  • В systemd-networkd автоматизирована активация IPv6-стека в случае его блокировки через sysctl disable_ipv6 - IPv6 активируется, если для сетевого интерфейса определены настойки IPv6 (статические или DHCPv6), в противном случае уже выставленное значение sysctl не меняется;
  • В файлах .network настройка CriticalConnection заменена на опцию KeepConfiguration, предоставляющую больше средств для определения ситуаций ("yes", "static", "dhcp-on-stop", "dhcp") в которых systemd-networkd не должен трогать уже имеющиеся соединения при запуске;
  • Устранена уязвимость CVE-2019-15718, вызванная отсутствием контроля доступа к D-Bus интерфейсу systemd-resolved. Проблема позволяет непривилегированному пользователю выполнить операции, доступные только администраторам, например, можно изменить настройки DNS и направить DNS-запросы на подставной сервер;
  • Устранена уязвимость CVE-2019-9619, связанная с невключением pam_systemd для неинтерактивных сеансов, которая позволяет организовать спуфинг активного сеанса.

  1. OpenNews: Выпуск системного менеджера systemd 242
  2. OpenNews: Gentoo предоставил окружение GNOME 3.30, работающее без привязки к systemd
  3. OpenNews: Уязвимость в systemd, которую можно использовать для блокирования работы системы
  4. OpenNews: Systemd в Debian остался без мэйнтейнера из-за разногласий с разработчиками systemd
  5. OpenNews: Удалённая уязвимость в systemd-networkd
Обсуждение (146 +6) | Тип: Программы |
04.09.2019 Релиз языка программирования Go 1.13 (159 +17)
  Представлен релиз языка программирования Go 1.13, который развивается компанией Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD.

Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Python. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си.

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

Основные новшества, представленные в выпуске Go 1.13:

  • В пакете crypto/tls включена по умолчанию поддержка протокола TLS 1.3. Добавлен новый пакет "crypto/ed25519" с поддержкой цифровых подписей Ed25519;
  • Добавлена поддержка новых префиксов цифровых литералов для определения двоичных чисел (например, 0b101), восьмеричных (0o377), мнимых (2.71828i) и шестнадцатеричных с плавающей запятой (0x1p-1021), а также обеспечена возможность использования символа "_" для наглядного разделения цифр в больших числах (1_000_000);
  • Снято ограничение на использование только беззнаковых счётчиков в операциях сдвига, что позволяет избежать лишних преобразований в тип uint перед использованием операторов "‹‹" и "››";
  • Добавлена поддержка платформы Illumos (GOOS=illumos). Обеспечена совместимость с платформой Android 10. Повышены требования к минимальным версиям FreeBSD (11.2) и macOS (10.11 "El Capitan")
  • Продолжено усовершенствование новой системы модулей, которую можно применять в качестве альтернативы GOPATH. Вопреки ранее озвученным планам в Go 1.13 данная система так и не включена по умолчанию и требует активации через переменную GO111MODULE=on или использования контекста, в котором модули применяются автоматически. Новая система модулей отличается интегрированной поддержкой версионирования, средствами доставки пакетов и улучшенной системой управления зависимостями. При помощи модулей разработчики больше не привязаны к работе внутри дерева GOPATH, могут явно определять зависимости с учётом версий и создавать повторяемые сборки.

    В отличие от прошлых выпусков автоматическое применение новой системы теперь срабатывает, когда при выполнении команды go в текущем рабочем каталоге или родительском каталоге присутствует файл go.mod, в том числе при нахождении в каталоге GOPATH/src. Добавлены новые переменные окружения: GOPRIVATE, определяющая пути публично недоступных модулей, и GOSUMDB, задающая параметры доступа к базе контрольных сумм модулей, не перечисленных в файле go.sum;

  • В команде "go" по умолчанию обеспечена загрузка модулей и проверка их целостности, используя зеркало модулей и базу контрольных сумм, поддерживаемые компанией Google (proxy.golang.org, sum.golang.org и index.golang.org);
  • Прекращена поддержка только бинарных пакетов, сборка пакета в режиме "//go:binary-only-package" теперь приводит к выводу ошибки;
  • В команду "go get" добавлена поддержка суффикса "@patch", указывающего, что модуль должен быть обновлён до последнего корректирующего выпуска, но без смены текущей значительной или промежуточной версии;
  • При извлечении модулей из систем контроля версий команда "go" теперь выполняет дополнительную проверку строки с номером версии, пытаясь сопоставить номера псевдо-версий с метаданным из репозитория;
  • Добавлена поддержка инспектирования ошибок (error wrapping) через создание обёрток, позволяющих использовать типовые обработчики ошибок. Например, ошибка "e" может быть обёрнута над ошибкой "w" через предоставление метода Unwrap, возвращающего "w". Обе ошибки "e" и "w" доступны в программе и решения принимаются на основании ошибки "w", но "e" предоставляет дополнительный контекст к "w" или интерпретирует его по иному;
  • Проведена оптимизация производительности runtime-компонентов (отмечается прирост скорости до 30%) и задействовано более агрессивное возвращение памяти в операционную систему (ранее память возвращалась через пять и более минут, а сейчас сразу после урезания размера кучи).

  1. OpenNews: Релиз языка программирования Go 1.12
  2. OpenNews: Обновление языка Go 1.11.5 и 1.10.8 с устранением уязвимости
  3. OpenNews: Уязвимости в системе загрузки модулей для языка Go
  4. OpenNews: Проект Go опубликовал собственный шрифт для программистов
  5. OpenNews: Компания Microsoft опубликовала реализацию Lua VM, написанную на языке Go
Обсуждение (159 +17) | Тип: Программы |
04.09.2019 Mozilla не станет переносить все ограничения API WebExtensions из нового манифеста Chrome (98 +47)
  Компания Mozilla объявила, что несмотря на использование в Firefox системы дополнений на основе API WebExtensions, разработчики не намерены полностью следовать будущей третьей редакции манифеста на дополнения Chrome. В частности, в Firefox будет продолжена поддержка блокирующего режима работы API webRequest, позволяющего менять принимаемый контент на лету и востребованного в блокировщиках рекламы и системах фильтрации контента.

Основной идеей перехода на API WebExtensions была унификация технологии разработки дополнений для Firefox и Chrome, поэтому в текущем виде в Firefox почти на 100% обеспечена совместимость с актуальной второй версией манифеста Chrome. Манифест определяет перечень возможностей и ресурсов, предоставляемых дополнениям. Из-за внесения в третью версию манифеста ограничительных мер, негативно воспринимаемых разработчикам дополнений, Mozilla отойдёт от практики полного следования манифесту и не будет переносить в Firefox изменения, нарушающие совместимость с дополнениями.

Напомним, что несмотря на все возражения, компания Google намерена прекратить поддержку в Chrome блокирующего режима работы API webRequest, ограничив его режимом только для чтения и предложив для фильтрации контента новый декларативный API declarativeNetRequest. Если API webRequest позволял подключать собственные обработчики, имеющие полный доступ к сетевым запросам и способные на лету модифицировать трафик, новый API declarativeNetRequest предоставляет доступ к готовому универсальному встроенному движку для фильтрации, самостоятельно обрабатывающему правила блокировки, не разрешающему использовать собственные алгоритмы фильтрации и не позволяющему задавать сложные правила, перекрывающие друг друга в зависимости от условий.

Mozilla также оценивает целесообразность переноса в Firеfox поддержки некоторые других изменений из третьей версии манифеста Chrome, нарушающих совместимость с дополнениями:

  • Переход к выполнению Service workers в форме фоновых процессов, что потребует от разработчиков изменения кода некоторых дополнений. Несмотря на то, что новый метод более оптимален с точки зрения производительности, Mozilla рассматривает возможность сохранения поддержки выполнения фоновых страниц.
  • Новая гранулированная модель запроса полномочий - дополнение не сможет активироваться сразу для всех страниц (убрано полномочие "all_urls"), а будет работать только в контексте активной вкладки, т.е. пользователю потребуется подтверждать работу дополнения для каждого сайта. Mozilla исследует пути усиления контроля доступа, не отвлекающие постоянно пользователя.
  • Изменение обработки Cross-origin запросов - в соответствии с новым манифестом на скрипты обработки контента будут распространяться те же ограничения полномочий, что и для основной страницы, в которую эти скрипты внедряются (например, если страница не имеет доступа к API определению местоположения, то и скрипт дополнения также не получит этот доступ). Изменение планируется реализовать в Firefox.
  • Запрет выполнения кода, загруженного с внешних серверов (речь про ситуации, когда дополнение подгружает и выполняет внешний код). В Firefox уже применяется блокировка внешнего кода и разработчики Mozilla не против усилить подобную защиту, применяя дополнительные техники отслеживания загрузок кода, предлагаемые в третьей версии манифеста.

  1. OpenNews: Google продолжает настаивать на ограничении API, востребованного в блокировщиках рекламы
  2. OpenNews: Оценка производительности браузерных дополнений для блокировки рекламы
  3. OpenNews: От изменения манифеста Chrome пострадают и дополнения для обеспечения безопасности и приватности
  4. OpenNews: Новая редакция манифеста Chrome сделает невозможным использование uBlock Origin
Обсуждение (98 +47) | Тип: К сведению |
03.09.2019 Выпуск мобильной платформы Android 10 (118 +32)
  Компания Google опубликовала релиз открытой мобильной платформы Android 10. Связанные с новым выпуском исходные тексты размещены в Git-репозиторий проекта (ветка android-10.0.0_r1). Обновления прошивки уже подготовлены для 8 устройств серии Pixel, в том числе для первой модели Pixel. Также сформированы универсальные сборки GSI (Generic System Images), подходящие для разных устройств на базе архитектур ARM64 и x86_64. В ближайшие месяцы обновления с Android 10 будут выпущены для актуальных смартфонов таких компаний, как Sony Mobile, Xiaomi, Huawei, Nokia, Vivo, OPPO, OnePlus, ASUS, LG и Essential.

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

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

    Среди компонентов, которые будут обновляться раздельно: мультимедийные кодеки, мультимедийный фреймворк, 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 возможностью применения на раннем этапе загрузки системы. На случае возможных сбоев предусмотрен режим отката изменений;

  • На уровне системы реализована тёмная тема оформления которая может применяться для снижения утомления глаз при недостаточном освещении. Тёмная тема включается в настройках Settings > Display, через выпадающий блок быстрых настроек или при включении режима экономии энергии. Тёмная тема применяется как для системы, так и для приложений, в том числе предлагая режим автоматического преобразования в тёмные тона существующих тем;
  • Система автоматических быстрых ответов, ранее доступная для уведомлений, теперь может применяться для формирования рекомендаций наиболее вероятных действий в любых приложениях. Например, при показе сообщения с приглашением на встречу система предложит быстрые ответы с согласием или отклонением приглашения, а также покажет кнопку для просмотра намеченного места встречи на карте. Варианты выбираются с использованием системы машинного обучения на основании изучения особенностей работы пользователя;
  • Предоставлено больше инструментов для контроля за доступом приложений к информации о местоположении пользователя. Если раньше, в случае предоставления соответствующих полномочий, приложение могло получить доступ к местоположению в любое время, даже когда оно неактивно (работает в фоне), то в новом выпуске пользователь может разрешить получение информации о его местоположении только в случае активности сеанса с приложением;
  • Добавлен режим родительского контроля "Family Link", позволяющий ограничить время работы детей с устройством, предоставлять бонусные минуты за успехи и достижения, просматривать списки запускаемых приложений и оценивать сколько времени в них проводит ребёнок, рецензировать устанавливаемые приложения и назначать ночное время для блокирования доступа по ночам;
  • Добавлен "фокусный режим" (Focus Mode), позволяющий на время, когда нужно сосредоточится на решении какой-то задачи, выборочно приглушить отвлекающие приложения, например, приостановить получение почты и новостей, но оставить карты и мессенджер. В текущих сборках функция пока не активна;
  • Добавлен режим навигации жестами, позволяющий использовать для управления только экранные жесты без отображения навигационной панели и выделяя всё экранное пространство под контент. Например, кнопки типа Back и Home заменяются на сдвиг от края и скользящее касание снизу-вверх, для вызова списка запущенных приложений применяется длительное касание к экрану. Режим включается в настройках "Settings > System > Gestures";
  • Добавлена функция "Live Caption", позволяющая автоматически на лету создавать субтитры при просмотре любого видео или прослушивания звуковых записей, независимо от используемого приложения. Распознавание речи производится локально без обращения к внешним сервисам. В текущих сборках функция пока не активна;
  • Добавлена концепция "пузырей" для организации одновременной работы с несколькими приложениями. Пузыри позволяют выполнять действия в других приложениях не покидая текущей программы. Кроме того, пузыри дают возможность закрепления доступа к функциональности определённого приложения в процессе выполнения различных действий на устройстве. Например, при помощи пузырей можно в форме отображаемых поверх контента кнопок продолжать беседу в мессенджере, быстро отправлять сообщения, держать на виду список задач, вести заметки, обращаться к сервисам перевода и получать наглядные напоминания, параллельно c работой в других приложениях. Пузыри реализованы поверх системы уведомлений и позволяют использовать аналогичный API.
  • Добавлена поддержка устройств со сгибающимися складными экранами, таких как Huawei Mate X. На каждой половинке складного экрана теперь может размещаться отдельное приложение. Для поддержки новых типов экранов добавлена поддержка раздельной обработки множественных событий пробуждения и смены фокуса (когда одна половина экрана активна, а другая остаётся закрытой или когда обе половинки активны), а также расширен API для обработки изменения размера экрана (для того чтобы приложение корректно воспринимало увеличение размера экрана при раскрытии второй половины). В эмулятор Android добавлена симуляция устройств со сгибающимися экранами;
  • Добавлена поддержка ярлыков для отправки данных и сообщений (Sharing Shortcuts), позволяющих быстро перейти в приложение, осуществляющее отправку;
  • Добавлена поддержка всплывающих панелей с настройками, которые позволяют обратиться к ключевым системным настройкам в контексте пользовательского приложения. Для отображения панелей настройки из приложения предоставляется API Settings Panel. Например, мультимедийный проигрыватель может показать панель с системными настройками звука, а браузер настройки сетевого подключения и перехода в режим полёта;

    Безопасность:

    • Добавлены дополнительные ограничения доступа приложений к совместно используемым файлам, таким как коллекции фотографий, видео и музыка;
    • Для доступа к загруженным файлам, размещённым в каталоге Downloads, приложение теперь обязательно должно использовать системный диалог выбора файла, который предоставляет пользователю полный контроль над тем, к каким конкретно файлам может обратиться приложение;
    • Блокирована возможность перехода приложений из фонового выполнения в активное состояние с выходом на передний план и получением фокуса ввода, прерывая таким образом работу пользователя с другим приложением. При необходимости привлечения внимания пользователя фоновым приложением, например, при входящем звонке, теперь следует использовать высокоприоритетные уведомление с получением полномочий на полноэкранный вывод;
    • Ограничен доступ к неизменяемым идентификаторам устройства, таким как IMEI и серийный номер. Для получения подобных идентификаторов приложение должно иметь привилегии READ_PRIVILEGED_PHONE_STATE. Приложениям также ограничен доступ к псевдо-ФС "/proc/net" со статистикой сетевой активности, а доступ к данным в буфере обмена отныне предоставляется только когда приложение активно (получило фокус ввода);
    • При отдаче списка контактов приложению прекращено ранжирование вывода по частоте обращения к контактам для сокрытия от приложений информации о предпочтениях пользователя;
    • По умолчанию включена рандомизация MAC-адресов: при подключении к разным беспроводным сетям теперь генерируются разные MAC-адреса, что не позволяет отслеживать перемещение пользователя между WiFi-сетями;
    • Для доступа к API сканирования сетей Bluetooth, сотовых сетей и Wi-Fi теперь требуется получение полномочий на получение точных сведений о местоположении (ранее требовались полномочия на получение приблизительных сведений о местоположении). При этом, если соединение устанавливается в режиме P2P или сеть для подключения определяется системой, то отдельные полномочия на доступ к информации о местоположении не требуются;
    • Реализована поддержка технологии защиты беспроводных сетей WPA3, в которой предоставляется защита от атак по подбору пароля (не позволит подбирать пароль в offline-режиме) и задействован протокол аутентификации SAE. Для генерации ключей шифрования в открытых сетях добавлена поддержка процесса согласования соединения, реализуемого расширением OWE (Opportunistic Wireless Encryption);
    • Добавлена и включена по умолчанию для всех соединений поддержка TLS 1.3. В тестах Google применение TLS 1.3 позволяет до 40% ускорить установку защищённых соединений, по сравнению с TLS 1.2.
    • Представлено новое хранилище Scoped Storage, предоставляющее уровень изоляции для файлов приложений. При помощи данного API приложение может создать на внешних накопителях (например, на SD-карте) отдельный изолированный каталог для своих файлов, к которому не смогут получить доступ другие приложения. Текущее приложение будет ограничено этим каталогом для хранения фотографий, видео и музыки, и не будет пересекаться с общими коллекциями мультимедийных файлов. Для получения совместного доступа к общим коллекциям файлов потребуется получение отдельных полномочий;
    • В API BiometricPrompt, унифицирующем вывод диалога биометрической аутентификации, добавлена поддержка пассивных методов аутентификации, таких как аутентификация по лицу. Предложены раздельные методы обработки явной и не явной аутентификации. При явной аутентификации пользователь должен подтвердить операцию, а при неявной - аутентификация может производится незаметно в пассивном режиме;
  • Беспроводной стек.

    • Добавлена поддержка стандарта мобильной связи 5G, для которого адаптированы имеющиеся API управления соединениями. В том числе через API приложения могут определять наличие высокоскоростного соединения и активности тарификации по трафику;
    • Добавлены два режима работы Wi-Fi - режим достижения максимальной пропускной способности и режим минимальных задержек (например, полезен для игр и голосовых коммуникаций);
    • Проведён рефакторинг беспроводного стека для усиления приватности и увеличения производительности, а также для улучшения управления устройствами интернета вещей через локальный Wi-Fi (например, для вывода на печать через Wi-Fi) и выбора точек подключения. Функции сканирования доступных точек доступа теперь предоставляется платформой с выводом найденных сетей в интерфейсе Wi-Fi Picker и автоматической настройкой соединения в случае его выбора пользователем. Приложениям через API WifiNetworkSuggestions предоставлена возможность влиять на алгоритм выбора предпочитаемых беспроводных сетей путём передачи приложением ранжированного списка сетей и паролей для подключения к ним. Кроме того, при выборе сети, к которой осуществляется подключение, теперь учитываются метрики о пропускной способности при прошлом подключении (выбирается наиболее быстрая сеть);
  • Мультимедиа и графика
    • Добавлена поддержка графического API Vulkan 1.1. По сравнению с OpenGL ES использование Vulkan позволяет существенно снизить нагрузку на CPU (до 10 раз в тестах Google) и повысить производительность отрисовки. Конечной целью является повсеместная поддержка Vulkan на всех Android-устройствах, для чего Google работает с производителями оборудования в плане перевода Vulkan 1.1 в разряд обязательных требований для всех 64-разрядных устройств на базе Android 10;
    • Добавлена экспериментальная поддержка выполнения прослойки ANGLE (Almost Native Graphics Layer Engine) поверх графического API Vulkan. ANGLE позволяет выполнить отрисовку, абстрагируясь от специфичных для разных систем API, благодаря трансляции вызовов OpenGL ES в OpenGL, Direct3D 9/11, Desktop GL и Vulkan). Для разработчиков игр и графических приложений ANGLE позволяет использовать обычный драйвер OpenGL ES на всех устройствах, использующих Vulkan;
    • Приложения для работы с камерой и изображениями теперь могут запросить у камеры передачу дополнительных XMP-метаданных в файле JPEG, включающих сведения, необходимые для обработки глубины на фотографиях (например, сохраняемая двойными камерами карта глубины). Указанные параметры можно применять для реализации различных режимов размытия фона и эффекта боке, а также для создания 3D-фотографий или в системах дополненной реальности;
    • Добавлена поддержка видеокодека AV1, который позиционируется как общедоступный и не требующий оплаты отчислений свободный формат кодирования видео, который заметно опережает H.264 и VP9 по уровню сжатия;
    • Добавлена поддержка свободного звукового кодека Opus, обеспечивающего высокое качество кодирования и минимальную задержку как при сжатии потокового звука с высоким битрейтом, так и при сжатии голоса в ограниченных по пропускной способности приложениях VoIP-телефонии;
    • Добавлена поддержка стандарта HDR10+, применяемого для кодирования видео с расширенным динамическим диапазоном;
    • В API MediaCodecInfo добавлен упрощённый метод для определения доступных на устройстве возможностей вывода видео (выводится список кодеков и поддерживаемых на устройстве разрешений и FPS);
    • Добавлен API Native MIDI, предоставляющий приложениям на C++ возможность напрямую взаимодействовать с MIDI-устройствами через NDK в неблокирующем режиме, позволяющем обрабатывать MIDI-сообщения с очень низкими задержками;
    • Добавлен API MicrophoneDirection для управления захватом звука с направленных микрофонов. При помощи данного API можно указать направление для ориентации микрофона при записи звука). Например, при создании селфи-видео можно указать setMicrophoneDirection( MIC_DIRECTION_FRONT) для записи с микрофона в лицевой части устройства. Через указанный API также можно управлять микрофонами с меняющейся областью охвата (zoomable), определяя размер области для записи.
    • Добавлен новый API для захвата звука, позволяющий одному приложению предоставить возможность обработки звукового потока другим приложением. Для предоставления доступа других приложений к звуковому выводу требуется предоставление специального разрешения;
  • Система и расширенные API.
    • Проведены значительные оптимизации производительности runtime ART, позволившие сократить потребление памяти и ускорить запуск приложений. В Google Play обеспечено распространение профилей PGO (Profile Guided Optimization), включающих сведения о наиболее часто выполняемых частях кода. Предкомпиляция подобных частей позволяет существенно сократить время запуска. В самом ART проведена оптимизация для более раннего запуска процесса приложения и перемещения его в изолированный контейнер. В образе памяти приложения обеспечено сохранение дополнительных данных, таких как классы. Реализован многопоточный режим загрузки образов памяти приложений. Повышена эффективность работы сборщика мусора, за счёт раздельной обработки недавно созданных объектов;
    • До версии 1.2 обновлён API Neural Networks, предоставляющий приложениям возможности по задействованию средств аппаратного ускорения для систем машинного обучения. API позиционируется как базовая прослойка для функционирования в Android фреймворков машинного обучения, таких как TensorFlow Lite и Caffe2. Для использования на мобильных устройствах предложен ряд готовых моделей нейронных сетей, в том числе MobileNets (распознавание объектов на фотографиях), Inception v3 (компьютерное зрение) и Smart Reply (подбор вариантов ответа на сообщения). В новом выпуске добавлено 60 новых операций, включая ARGMAX, ARGMIN и квантуемый LSTM, а также проведены значительные оптимизации производительности, что позволило использовать API для поддержки новых моделей машинного обучения, таких как определение объектов и сегментация изображений;
    • В SDK добавлен новый эмулятор устройств со сгибающимися складными экранами, который доступен в выпуске Android Studio 3.5 в форме дополнительного виртуального устройства, представленного в вариантах с экранами в 7.3 (4.6) и 8 (6.6) дюймов. В платформе для складных устройств расширены обработчики onResume и onPause, в которых добавлена поддержка раздельного отключения нескольких экранов, а также реализованы расширенные уведомления о попадании приложения в фокус;
    • Добавлен Thermal API, позволяющий приложениям контролировать показатели температуры CPU и GPU и самостоятельно принимать меры для снижения нагрузки (например, снижать FPS в играх и уменьшать разрешение транслируемого видео), не дожидаясь пока система принудительно не начнёт урезать активность приложений.

  1. OpenNews: Google развивает новую систему ARCVM для запуска Android-приложений в Chrome OS
  2. OpenNews: Проекты F-Droid и Android Rebuilds ввели в строй репозиторий с пересобранным Android SDK
  3. OpenNews: Выпуск мобильной платформы Android 9
Обсуждение (118 +32) | Тип: Программы | Интересно
03.09.2019 Релиз Firefox 69 (272 +40)
  Состоялся релиз web-браузера Firefox 69, а также мобильной версии Firefox 68.1 для платформы Android. Кроме того, сформированы обновления веток с длительным сроком поддержки 60.9.0 и 68.1.0 (ESR-ветка 60.x больше обновляться не будет, рекомендован переход на ветку 68.x). В ближайшее время на стадию бета-тестирования перейдёт ветка Firefox 70, релиз которой намечен на 22 октября.

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

  • В применяемый по умолчанию стандартный режим блокировки нежелательного контента добавлены функции игнорирования Cookie всех сторонних систем отслеживания перемещений и блокирования JavaScript-вставок, осуществляющих майнинг криптовалют. Код для майнинга приводит к существенному увеличению нагрузки на процессор в системе пользователя и, как правило, внедряется на сайты в результате взломов или используется на сомнительных сайтах как метод монетизации. Ранее данные блокировки включались только при выборе строго режима блокировки, который теперь имеет смысл включать только при желании блокирования методов скрытой идентификации ("browser fingerprinting"). Блокировка осуществляется по списку Disconnect.me.

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

  • Расширены возможности блокировки автоматического воспроизведения мультимедийного контента. Помимо ранее добавленной функции приглушения звука в автоматически воспроизводимом видео реализована возможность полной остановки воспроизведения видео, не ограничиваясь отключением звука. Например, если раньше рекламные видеоролики на сайтах показывались, но без звука, то в новом режиме, они без явного клика даже не начнут воспроизведение. Для включения режима в настройки автовоспроизведения (Options > Privacy and Security > Permissions > Autoplay) добавлен новый пункт "Block audio and video", который дополнил собой выставляемый по умолчанию режим "Block audio".

    Режим может быть выбран в привязке к конкретным сайтам через контекстное меню, выводимое при клике на кнопку "(i)" в адресной строке.

  • Для пользователей из США и сборок "en-US" изменена раскладка блоков стартовой страницы, отображаемой при открытии новой вкладки, а также добавлен вывод дополнительного контента, рекомендованного сервисом Pocket. Изменён размер блоков и число рекомендаций, предложены новые тематические секции (Здоровье, Наука, Технологии и Развлечения);
  • Отключена по умолчанию возможность воспроизведения Flash-контента через плагин Adobe Flash. Из настроек плагина Adobe Flash Player убрана опция для постоянной активации Flash и оставлены только возможности отключения Flash и индивидуального включения для конкретных сайтов (активация явным кликом) без запоминания выбранного режима. В ESR-ветках Firefox поддержка Flash сохранится до конца 2020 года;
  • Отключена по умолчанию обработка файлов userContent.css и userChrome.css, позволяющих пользователю переопределить оформление сайтов или интерфейса Firefox. В качестве причины отключения по умолчанию называется работа по сокращению времени запуска браузера. Изменение поведения через userContent.css и userChrome.css выполняется пользователями крайне редко, а загрузка данных CSS потребляет дополнительные ресурсы (оптимизация убирает лишнее обращение к диску). Для возвращения обработки userChrome.css и userContent.css в about:config добавлена настройка "toolkit.legacyUserProfileCustomizations.stylesheets", которая будет активирована автоматически для пользователей, которые уже используют userChrome.css или userContent.css;
  • Для WebRTC реализована возможность обработки каналов с использованием разных видеокодеков, что упрощает создание сервисов видеоконференций, участники которых могут применять разное клиентское ПО;
  • Для архитектуры ARM64 в JavaScript-движке реализована поддержка JIT-компиляции;
  • Из идентификаторов браузера (navigator.userAgent, navigator.platform и navigator.oscpu) исключена информация о применении 32-разрядной версии Firefox в окружении 64-разрядной ОС (ранее требовалось для Flash, но оставляло дополнительный вектор для скрытой идентификации пользователя);
  • Добавлена функция просмотра видео в режиме "картинка в картинке" (Picture-in-Picture), позволяющем отсоединить видео в форме плавающего окна, которое остаётся на виду в процессе навигации в браузере. Для просмотра в данном режиме необходимо нажать на всплывающую подсказку или в контекстном меню, отображаемым при клике на видео правой кнопкой мыши, выбрать "Picture in picture" (в YouTube, который подставляет свой обработчик контекстного меню, следует два раза кликнуть правой кнопкой мыши или кликнуть с нажатой клавишей Shift). Поддержка режима может быть включена в about:config при помощи опции "media.videocontrols.picture-in-picture.enabled";
  • Добавлена реализация генератора паролей ("signon.generation.available" в about:config), позволяющего при заполнении форм регистрации выводить подсказку со сгенерированным автоматически надёжным паролем;

  • В менеджер паролей добавлена возможность обработки учётных записей в контексте домена второго уровня, что позволяет предлагать один пароль, сохранённый для всех поддоменов. Например, пароль, сохранённый для login.example.com теперь будет предлагаться для автозаполнения в формах сайта www.example.com;
  • Добавлен менеджер управления приоритетами процессов-обработчиков, который позволяет передавать операционной системе сведения о наиболее приоритетных процессах. Например, процессу обработки контента, обрабатывающему активную вкладку будет выставлен более высокий приоритет (выделено больше ресурсов CPU), чем процессу , связанному с фоновыми вкладками (если на них не воспроизводится видео и звук). Изменение пока включено по умолчанию только для платформы Windows, для остальных систем требуется активация опции dom.ipc.processPriorityManager.enabled в about-config;
  • Активирован по умолчанию API UserScripts, позволяющий создавать на базе технологии WebExtensions дополнения в стиле Greasemonkey для выполнения пользовательских скриптов в контексте web-страниц. Например, при помощи подключения скриптов можно изменять оформление и поведение просматриваемых страниц. Данный API уже входит в состав Firefox, но до сих пор для его включения требовалась установка параметра "extensions.webextensions.userScripts.enabled" в about:config. В отличие от имеющихся дополнений с похожей функциональностью, применяющих вызов tabs.executeScript, новый API позволяет изолировать скрипты в отдельных sandbox-окружениях, решает проблемы с производительностью и даёт возможность обрабатывать различные стадии загрузки страниц.
  • Свойство navigator.mediaDevices теперь доступно только при открытии страницы в защищённом контексте (Secure Context), т.е. при открытии по HTTPS, через localhost или из локального файла;


  • Добавлены CSS-свойства overflow-inline и overflow-block, позволяющие управлять отображением контента, выходящего за пределы блоков и inline-элементов (обрезать хвост или выводить полосу прокрутки). Свойства реализованы через автоматическое преобразование в overflow-x и overflow-y в зависимости от режима вывода контента (сверху вниз или построчно).
  • Для CSS-свойства white-space реализована поддержка значения break-spaces;
  • Реализовано CSS-свойство contain, указывающее, что элемент и его содежимое отделены от остального дерева DOM;
  • Добавлено CSS-свойство user-select, позволяющее определить может ли текст быть выделен пользователем;
  • Добавлена возможность задания правил @supports для селекторов ( формат "@supports selector(selector-to-test){...}"), что может применяться для выборочного применения CSS только при наличии или отсутствии поддержки определённого селектора в браузере;
  • Добавлена поддержка публичных полей для экземпляров классов JavaScript, которые позволяют указывать заранее определённые свойства, инициализируемые вне конструктора. В ближайшее время также ожидается поддержка приватных полей, не видимых вне класса;
    
       class Product {
         name;
         tax = 0.2;       /*публичное поле*/
         #basePrice = 0;  /*приватное поле*/
         price;
    
         constructor(name, basePrice) {
           this.name = name;
           this.basePrice = basePrice;
           this.price = (basePrice * (1 + this.tax)).toFixed(2);
         }
       }
    
  • Добавлен API Resize Observer, позволяющий подключить обработчик, которому будут направляться уведомления об изменении размера указанных элементов на странице. Ключевое отличие нового API от window.onresize и CSS Media Queries, заключается в том, что можно определить факт изменения конкретного элемента на странице, а не всей видимой области, что позволяет отреагировать изменением только этого элемента без изменения всего видимого содержимого;
  • Добавлен API Microtasks, представленный одним методом (WindowOrWorkerGlobalScope.queueMicrotask(), который позволяет на низком уровне запланировать callback-вызов функции, добавив его в очередь микрозадач;
  • Добавлены новые методы Blob.text(), Blob.arrayBuffer(), Blob.stream(), DOMMatrix.fromMatrix(), AbstractRange() и StaticRange();
  • В HTTP-заголовки Access-Control-Expose-Headers, Access-Control-Allow-Methods и Access-Control-Allow-Headers добавлена возможность указания маски "*" для запросов без учётных данных;


  • В web-консоли обеспечена группировка предупреждений об активности, связанной с отслеживанием перемещений пользователя;
  • В панели инспектирования сетевой активности добавлена детальная информация о причинах блокировки ресурсов (CSP, смешанный контент и т.п.), а также добавлен опциональный столбец с полным URL;
  • Ускорен запуск отладчика JavaScript. В интерфейс about:debugging перенесены функции удалённой отладки. Реализована поддержка пошаговой отладки асинхронных функций (Async). Добавлен новый класс точек останова, которые можно привязать к наступлению событий, связанных с мышью, сенсорным экраном, анимацией, DOM, медиазапросами, worker-ами и т.п.
  • В средства для разработчиков добавлен интерфейс для аудита представления страницы, в котором используются альтернативные текстовые описания контента (например, показ текста из атрибута "alt вместо изображений);
  • На системах с macOS, на которых установлено несколько графических карт, обеспечено более агрессивное переключение на энергоэффективный GPU после завершения обработки контента WebGL. Также добавлена защита от переключения с энегоэффективного на мощный GPU для одноразовых вызовов WebGL. В сборках для macOS также реализовано отображение прогресса загрузки файлов через штатный интерфейс Finder. Началось формирование установочных сборок Firefox в формате PKG;
  • Для Windows 10 со свежими обновлениями (1903+) добавлена поддержка расширения Web Authentication HmacSecret через Windows Hello для аутентификации на сайтах без ввода пароля с использованием отпечатка пальца, распознавания лица или USB-токена;
  • Прекращено формирование новых релизов Firefox для Android, вместо которого под кодовым именем Fenix теперь развивается новый браузер для мобильных устройств, использующий движок GeckoView и набор библиотек Mozilla Android Components. Корректирующие исправления для Firefox для Android будут в течение года выпускаться в рамках ESR-ветки Firefox 68, например, сейчас сформирован выпуск 68.1. Для загрузки нового браузера следует использовать тестовые сборки Firefox Preview.

Кроме новшеств и исправления ошибок в Firefox 69 устранено 30 уязвимостей, из которых лишь одна (CVE-2019-11751) помечена как критическая. Данная проблема специфичная для платформы Windows и позволяет записать произвольный файл в системе при запуске браузера из другого приложения (например, при открытии ссылки из программы для обмена сообщениями можно оформить ссылку таким образом, что запуск браузера приведёт с созданию файла автозапуска в каталоге 'Startup'). Снижение числа критических уязвимостей обусловлено тем, что проблемы с памятью, такие как переполнения буферов и обращение у уже освобождённым областям памяти, теперь помечаются как опасные, но не критические. В новом выпуске устранено 13 подобных проблем, которые потенциально могут привести к выполнению кода злоумышленника при открытии специально оформленных страниц.

  1. OpenNews: В ночные сборки Firefox добавлен режим строгой изоляции страниц
  2. OpenNews: Возобновление работы по интеграции поддержки Tor в Firefox
  3. OpenNews: Релиз Firefox 68
  4. OpenNews: В Firefox 70 планируют изменить отображение HTTPS и HTTP в адресной строке
  5. OpenNews: В Firefox 70 будет ужесточён вывод уведомлений и внесены ограничения для ftp
Обсуждение (272 +40) | Тип: Программы |
02.09.2019 Distri - дистрибутив для обкатки технологий быстрого управления пакетами (81 +30)
  Майкл Штапельберг (Michael Stapelberg), автор мозаичного оконного менеджера i3wm и в прошлом активный разработчик Debian (сопровождал около 170 пакетов), развивает экспериментальный дистрибутив distri и одноимённый пакетный менеджер. Проект позиционируется как исследование возможных путей увеличения производительности систем управления пакетами и воплощает некоторые новые идеи построения дистрибутивов. Код пакетного менеджера написан на языке Go и распространяется под лицензией BSD.

Ключевой особенностью предложенного в дистрибутиве формата пакетов является поставка пакета в форме образов SquashFS, вместо сжатых tar-архивов. Применение SquashFS, по аналогии с форматами AppImage и Snap, позволяет "примонтировать" пакет без необходимости выполнения распаковки, что экономит дисковое пространство, допускает атомарные изменения и делает содержимое пакета мгновенно доступным. При этом пакеты distri, как и в классическом формате "deb", содержат только отдельные компоненты, связанные зависимостями с другими пакетами (библиотеки не дублируются в пакетах, а устанавливаются как зависимости). Иными словами, distri пытается совместить гранулированную пакетную структуру классических дистрибутивов, таких как Debian, с методами поставки приложений в форме монтируемых контейнеров.

Каждый пакет в distri монтируется в свой каталог в режиме только для чтения (например, пакет с zsh доступен как "/ro/zsh-amd64-5.6.2-3"), что положительно влияет на безопасность и защищает от случайных или злонамеренных изменений. Для формирования иерархии служебных каталогов, таких как /usr/bin, /usr/share и /usr/lib, применяется специальный FUSE-модуль, объединяющий содержимое всех установленных SquashFS-образов в одно целое (например, каталог /ro/share предоставляет доступ к подкаталогам share из всех пакетов).

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

Конфликты при установке пакетов исключаются так как каждый пакет связывается со своим каталогом и в системе допускается наличие разных версий одного пакета (в сводные каталоги подключается содержимое каталога с более свежей ревизией пакета). Сборка пакетов также осуществляется очень быстро и не требует установки пакетов в отдельное сборочное окружение (в сборочном окружении создаётся представления необходимых зависимостей из каталога /ro).

Поддерживаются типовые команды управления пакетами, такие как "distri install" и "distri update", а вместо информационных команд можно применять штатную утилиту "ls" (например, для просмотра установленных пакетов достаточно вывести список каталогов в иерархии "/ro", а для того чтобы узнать в состав какого пакета входит файл, посмотреть куда ведёт ссылка с этого файла).

Предложенный для экспериментов прототип дистрибутива включает около 1700 пакетов и готовые установочные образы с инсталлятором, пригодные как для установки в качестве основной ОС, так и для запуска в QEMU, Docker, Google Cloud и VirtualBox. Поддерживается загрузка с шифрованного дискового раздела и набор типовых приложений для создания рабочего стола на базе оконного менеджера i3 (в качестве браузера предлагается Google Chrome). Предоставляется полноценный инструментарий для сборки дистрибутива, подготовки и формирования пакетов, распространения пакетов по зеркалам и т.п.

  1. OpenNews: Майкл Штапельберг ушёл из числа мэйнтейнеров проекта Debian
  2. OpenNews: Выпуск дистрибутива GoboLinux 016 с самобытной иерархией файловой системы
  3. OpenNews: Возрождение системы управления пакетами GNU Stow
  4. OpenNews: Доступен пакетный менеджер GNU Guix 1.0 и дистрибутив GuixSD на его основе
  5. OpenNews: Выпуск дистрибутива NixOS 19.03, использующего пакетный менеджер Nix
Обсуждение (81 +30) | Тип: К сведению |
01.09.2019 Доступен Dqlite 1.0, распределённый вариант SQLite от компании Canonical (68 +22)
  Компания Canonical опубликовала значительный выпуск проекта Dqlite 1.0 (Distributed SQLite), развивающего совместимый с SQLite встраиваемый SQL-движок, поддерживающий репликацию данных, автоматическое восстановление после сбоев и обеспечение отказоустойчивости через разнесение обработчиков на несколько узлов. СУБД реализована в форме прикрепляемой к приложениям Си-библиотеки и распространяется под лицензией Apache 2.0 (оригинальный SQLite поставляется как общественное достояние). Доступны биндинги для языка Go.

Библиотека является надстройкой над существующей кодовой базой SQLite, которая добавляет поддержку сетевого протокола для связывания между собой нескольких экземпляров приложения, запущенных на разных хостах. Собранное с Dqlite приложение может функционировать как самодостаточный отказоустойчивый кластер, не зависящий от внешних СУБД. На практике Dqlite используется компанией Canonical в системе управления контейнерами LXD. Среди областей применения библиотеки также упоминается создание отказоустойчивых устройств интернета-вещей и обработчиков в системах Edge-вычислений.

Для обеспечения непротиворечивости при репликации данных применяется метод достижения консенсуса на базе алгоритма Raft, который используется в таких проектах, как etcd, RethinkDB, CockroachDB и OpenDaylight. В Dqlite применяется собственная асинхронная реализация C-raft, написанная на языке Си. Для мультиплексирования обработки соединений и организации запуска сопрограмм используются готовые библиотеки libuv и libco.

По сравнению с похожим проектом rqlite, Dqlite обеспечивает полную поддержку транзакций, может связываться с любыми проектами на языке Си, позволяет использовать функцию time() и применяет репликацию на основе кадров вместо репликации на основе трансляции SQL-выражений.

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

  • Выполнение всех дисковых и сетевых операций в асинхронном режиме;
  • Наличие тестового набора для подтверждения корректности данных;
  • Низкое потребление памяти и эффективный обмен данными по сети;
  • Постоянное хранение на диске БД и лога транзакций (c возможностью кэширования в памяти);
  • Быстрое восстановление после сбоев;
  • Стабильный CLI-клиент на языке Go, который можно использовать для инициализации БД, настройки репликации и подключения/отключения узлов;
  • Поддержка архитектур ARM, X86, POWER и IBM Z;
  • Реализация алгоритма Raft оптимизирована для минимизации задержек при фиксации транзакций.

  1. OpenNews: Представлена новая техника эксплуатации уязвимостей в SQLite
  2. OpenNews: Удалённо эксплуатируемая уязвимость в SQLite, затрагивающая браузеры на базе Chromium
  3. OpenNews: В рамках проекта LiteTree развивается вариант SQLite с поддержкой ветвления БД
  4. OpenNews: Создатели CouchDB и SQLite представили UnQL, аналог SQL для систем NoSQL
  5. OpenNews: Выпуск встраиваемой СУБД Sophia 2.2
Обсуждение (68 +22) | Тип: Программы |
01.09.2019 Фреймворк для написания защищённых драйверов для ядра Linux на языке Rust (194 +27)
  Джош Триплет (Josh Triplett), работающий в компании Intel и входящий в комитет, курирующий развитие Crates.io, в своём выступлении на конференции Open Source Technology Summit представил рабочую группу, нацеленную на доведение языка Rust до паритета с языком Си в области системного программирования.

В рабочей группе, которая находится в процессе создания, разработчики Rust совместно с инженерами из компании Intel подготовят спецификации с определением функциональности, которую необходимо реализовать в Rust для системного программирования. Системное программирование часто требует низкоуровневых манипуляций, таких как выполнение привилегированных процессорных инструкций и получение детальных сведений о состоянии процессора. Из уже развиваемых для Rust подобных возможностей отмечается поддержка неименованных структур, объединений (union), ассемблерных вставок (макрос "asm!") и формата чисел с плавающей запятой BFLOAT16.

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

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

Грег Кроа-Хартман (Greg Kroah-Hartman), отвечающий за поддержку стабильной ветки ядра Linux, выразил готовность добавить в ядро фреймворк для разработки драйверов на языке Rust, если он будет обладать реальными преимуществами по сравнению с Си, например, будет предоставлять безопасные обвязки над API ядра. Кроме того, Грег рассматривает данный фреймворк только как опцию, не активную по умолчанию, чтобы не включать Rust в число сборочных зависимостей к ядру.

Оказалось, что несколько команд уже работают в данном направлении. Например, разработчики из компании "Fish in a Barrel" подготовили инструментарий для написания загружаемых модулей для ядра Linux на языке Rust, используя для повышения защиты набор абстрактных прослоек над интерфейсами и структурами ядра. Прослойки автоматически генерируются на базе имеющихся заголовочных файлов ядра при помощи утилиты bindgen. Для сборки прослоек используется Clang. Собираемые модули помимо прослоек используют пакет staticlib.

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

Не вся задуманная функциональность пока реализована, но фреймворк уже вполне пригоден для работы и использован для написания рабочего драйвера для Ethernet-контроллера LAN9512 USB, поставляемого в плате Raspberry Pi 3. В качестве эталонной реализации при написании Rust-драйвера был использован существующий драйвер smsc95xx, написанный на языке Си. Отмечается, что размер модуля и накладные расходы от runtime-компонентов при разработке драйвера на Rust незначительные, что позволяет применять фреймворк для устройств с ограниченными ресурсами.

  1. OpenNews: Эксперимент по разработке частей ядра Linux на языке Rust
  2. OpenNews: Выпуск операционной системы Redox OS 0.5, написанной на языке Rust
  3. OpenNews: Cloudflare опубликовал реализацию VPN WireGuard на языке Rust
  4. OpenNews: Intel развивает открытую прошивку ModernFW и гипервизор на языке Rust
  5. OpenNews: Компилятор Rust добавлен в состав дерева исходных текстов Android
Обсуждение (194 +27) | Тип: К сведению |
<< Предыдущая страница (позже)
Следующая страница (раньше) >>



Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

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