The OpenNET Project / Index page

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

12.09.2020 Выпуск децентрализованной видеовещательной платформы PeerTube 2.4 (91 +34)
  Опубликован выпуск PeerTube 2.4, децентрализованной платформы для организации видеохостинга и видеовещания. PeerTube предлагает независимую от отдельных поставщиков альтернативу YouTube, Dailymotion и Vimeo, использующую сеть распространения контента на базе P2P-коммуникаций и связывания между собой браузеров посетителей. Наработки проекта распространяются под лицензией AGPLv3.

PeerTube базируется на применении BitTorrent-клиента WebTorrent, запускаемого в браузере и использующего технологию WebRTC для организации прямого P2P-канала связи между браузерами, и протокола ActivityPub, позволяющего объединить разрозненные серверы с видео в общую федеративную сеть, в которой посетители участвуют в доставке контента и имеют возможность подписки на каналы и получения уведомлений о новых видео. Предоставляемый проектом web-интерфейс построен с использованием фреймворка Angular.

Федеративная сеть PeerTube образуется как содружество связанных между собой небольших серверов хостинга видео, на каждом из которых имеется свой администратор и могут быть приняты свои правила. Каждый сервер с видео выполняет роль BitTorrent-трекера, на котором размещены учётные записи пользователей данного сервера и их видео. Идентификатор пользователя формируются в форме "@имя_пользователя@домен_сервера". Передача данных при просмотре осуществляется непосредственно из браузеров других посетителей, просматривающих контент.

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

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

В настоящее время для размещения контента запущены более 300 серверов, поддерживаемых разными добровольцами и организациями. Если пользователя не устраивают правила размещения видео на определённом сервере PeerTube, он может подключиться к другому серверу или запустить свой собственный сервер. Для быстрого развёртывания сервера предоставляется преднастроенный образ в формате Docker (chocobozzz/peertube).

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

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

    Пользователям, отправившим предупреждение о нарушении, теперь отправляется уведомление о принятии или отклонении жалобы с возможным примечанием от модератора. В настройках учётной записи также появилась секция "My Abuse Reports", в которой можно посмотреть список оформленных жалоб и отправить сообщение модератору.

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

  1. OpenNews: Доступны PeerTube 2.3 и WebTorrent Desktop 0.23
  2. OpenNews: В libtorrent добавлена поддержка протокола WebTorrent
  3. OpenNews: Выпуск децентрализованной видеовещательной платформы PeerTube 2.2
  4. OpenNews: W3C стандартизировал протокол децентрализованных социальных сетей ActivityPub
Обсуждение (91 +34) | Тип: Программы |
11.09.2020 Выпуск дистрибутива Deepin 20, развивающего собственное графическое окружение (95 +16)
  Представлен релиз дистрибутива Deepin 20, основанного на пакетной базе Debian, но развивающего собственный рабочий стол Deepin Desktop Environment (DDE) и около 30 пользовательских приложений, среди которых музыкальный проигрыватель DMusic, видеоплеер DMovie, система обмена сообщениями DTalk, инсталлятор и центр установки программ Deepin Software Center. Проект основан группой разработчиков из Китая, но трансформировался в международный проект. Дистрибутив поддерживает русский язык. Все наработки распространяются под лицензией GPLv3. Размер загрузочного iso-образа 2.6 Гб (amd64).

Компоненты рабочего стола и приложения разрабатываются с использованием языков C/C++ (Qt5) и Go. Ключевой особенностью рабочего стола Deepin является панель, которая поддерживает несколько режимов работы. В классическом режиме осуществляется более явное отделение открытых окон и предлагаемых для запуска приложений, отображается область системного лотка. Эффективный режим чем-то напоминает Unity, смешивая индикаторы запущенных программ, избранных приложений и управляющих апплетов (настройка громкости/яркости, подключенные накопители, часы, состояние сети и т.п.). Интерфейс запуска программ отображается на весь экран и предоставляет два режима - просмотр избранных приложений и навигация по каталогу установленных программ.

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

  • Пакетная база синхронизирована с Debian 10.5.
  • На этапе установки предоставлена возможность выбора из двух ядер Linux - 5.4 (LTS) или 5.7.
  • Предложено новое оформление интерфейса установки системы и расширена функциональность инсталлятора. Предоставлен выбор двух методов разбивки дисковых разделов - ручной и автоматический с применением полного шифрования всех данных на диске. Добавлен режим загрузки "Safe Graphics", который можно использовать в случае проблем с видеодрайверами и выбранным по умолчанию графическим режимом. Для систем с видеокартами NVIDIA предоставлена опция для установки проприетарных драйверов.
  • Представлено новое унифицированное оформление рабочего стола DDE с новым набором цветных пиктограмм, обновлённым интерфейсом и реалистичными анимационными эффектами. В окнах применены скруглённые углы. Добавлен экран с обзором доступных задач. Реализована поддержка светлой и тёмной тем оформления, настройки прозрачности и цветовой температуры. Улучшены настройки управления энергопотреблением.
  • Расширены возможности управления уведомлениями. Добавлены настройки для воспроизведения звукового файла при поступлении сообщения, показа уведомлений на экране блокировки системе, отображения сообщений в центре уведомлений и установки отдельного уровня напоминаний для выбранных приложений. Пользователю предоставлена возможность отфильтровать важные сообщения, чтобы не отвлекаться на второстепенные.
  • В менеджер установки приложений добавлена возможность установки обновления одним кликом и реализована система фильтрации программ по категориям. Изменено оформление экрана с детальной информацией о выбранной для установки программе.
  • Предоставлена возможность использования аутентификации по отпечатку пальца для входа в систему, разблокировки экрана, подтверждения полномочий и получения прав root. Добавлена поддержка различных сканеров отпечатков пальцев.
  • Добавлен Device Manager для просмотра и управления аппаратными устройствами.
  • В Font Manager добавлена поддержка установки и управления шрифтами, а также предпросмотра отображения своего текста выбранным шрифтом.
  • Добавлена простая программа для рисования Draw.
  • Добавлен Log Viewer для анализа и просмотра логов.
  • Добавлено приложение Voice Notes для создания текстовых и голосовых заметок.
  • Программы для создания скриншотов и скринкастов объединены в одно приложение Screen Capture.
  • В состав включено приложение для работы с web-камерой Cheese.
  • Улучшен интерфейс просмотрщика документов и менеджера архивов.

  1. OpenNews: Выпуск дистрибутива UbuntuDDE 20.04 с рабочим столом Deepin
  2. OpenNews: Бета-версия дистрибутива UbuntuDDE с рабочим столом Deepin
  3. OpenNews: Компания Huawei начала предустановку Deepin Linux на ноутбуки
  4. OpenNews: Выпуск дистрибутива Deepin 15.11, развивающего собственное графическое окружение
  5. OpenNews: Выпуск дистрибутива Deepin 15, с собственным рабочим столом Deepin Desktop Environment
Обсуждение (95 +16) | Тип: Программы |
11.09.2020 Huawei будет использовать собственную ОС Harmony для смартфонов (251 +46)
  На конференции HDC 2020 компания объявила о расширении планов, касающихся операционной системы Harmony, анонсированной в прошлом году. Помимо изначально заявленных портативных устройств и продуктов интернета вещей (IoT), таких как дисплеи, носимые устройства, умные колонки и инфо-системы автомобилей, разрабатываемая ОС также будет применяться и на смартфонах.

Тестирование SDK для разработки мобильных приложений для Harmony начнётся в конце 2020 года, а первые смартфоны на базе новой ОС планируется выпустить в октябре 2021 года. Отмечается, что новая ОС уже готова для IoT-устройств с объёмом оперативной памяти от 128KB до 128MB, в апреле 2021 года начнётся продвижение варианта для устройств с объёмом памяти от 128MB до 4GB, а в октябре для устройств, с ОЗУ больше 4GB.

Напомним, что проект Harmony находится в разработке начиная с 2017 года и представляет собой микроядерную операционную систему, которую можно рассматривать как конкурента ОС Fuchsia от Google. Платформа будет опубликована в исходных текстах как полностью открытый проект с независимым управлением (Huawei уже развивает открытый LiteOS для IoT-устройств). Код платформы будет передан под покровительство некоммерческой организации China Open Atomic Open Source Foundation. Huawei считает, что Android не так хорош для мобильных устройств из-за излишне большого объёма кода, устаревшего планировщика процессов и вопросов фрагментации платформы.

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

  • Ядро системы верифицировано на уровне формальной логики/математики для минимизации риска появления уязвимостей. Верификация проведена с использованием методов, которые обычно используются при разработке критически важных систем в таких областях, как авиация и космонавтика, и позволяют добиться соответствия уровню защищённости EAL 5+.
  • Микроядро изолированно от внешних устройств. Система отделена от оборудования и даёт возможность разработчикам создавать приложения, которые можно использовать на различных категориях устройств без создания отдельных пакетов.
  • Микроядро реализует только планировщик и IPC, а всё остальное вынесено в системные сервисы, большая часть которых выполняется в пространстве пользователя.
  • В качестве планировщика задач предлагается минимизирующий задержки детерминистический движок распределения ресурсов (Deterministic Latency Engine), анализирующий нагрузку в режиме реального времени и использующий методы предсказания поведения приложений. По сравнению с другими системами планировщик позволяет добиться сокращения задержек на 25.7% и снизить флуктуации задержек на 55.6%.
  • Для обеспечения связи между микроядром и внешними сервисами ядра, такими как ФС, сетевой стек, драйверы и подсистема запуска приложений, применяется IPC, который по заявлениям компании работает в пять раз быстрее, чем IPC в Zircon, и в три раза быстрее, чем IPC в QNX.
  • Вместо обычно применяемого четырёхуровневого стека протоколов для уменьшения накладных расходов в Harmony задействована упрощённая одноуровневая модель на основе распределённой виртуальной шины, обеспечивающей взаимодействие с оборудованием, таким как экраны, камеры, звуковые платы и т.п.
  • В системе не предоставляется доступ пользователей на уровне root.
  • Для сборки приложения применяется собственный компилятор Arc, который поддерживает код на языках C, C++, Java, JavaScript и Kotlin.
  • Для создания приложений для различных классов устройств, таких как телевизоры, смартфоны, умные часы, автомобильные информационные системы и т.п, будет предоставлен собственный универсальный фреймворк для разработки интерфейсов и SDK с интегрированной средой разработки. Инструментарий позволит автоматически адаптировать приложения для разных экранов, элементов управления и методов взаимодействия с пользователем. Также упоминается предоставление инструментов для адаптации для Harmony существующих Android-приложений с минимальными изменениями.

Дополнение: В рамках проекта OpenHarmony под лицензией BSD опубликованы исходные тексты первого варианта ОС Harmony, ориентированного на использование на устройствах с объёмом оперативной памяти от 128KB до 128MB. Код редакции для устройств с объёмом ОЗУ до 4 ГБ планируется опубликовать в апреле 2021 года, а для устройств с размером памяти более 4 ГБ - в октября 2021 года.

  1. OpenNews: Huawei анонсировал операционную систему Harmony
  2. OpenNews: Компания Huawei начала предустановку Deepin Linux на ноутбуки
  3. OpenNews: Выпуск Linux-дистрибутива openEuler 20.03, развиваемого компанией Huawei
  4. OpenNews: Huawei развивает протокол NEW IP, нацеленный на использование в сетях будущего
  5. OpenNews: Проблемы с безопасностью в патчах, предложенных сотрудником Huawei для защиты ядра Linux
Обсуждение (251 +46) | Тип: К сведению |
10.09.2020 Более 60 компаний изменили условия расторжения лицензии для GPLv2-кода (138 +19)
  К инициативе по увеличению предсказуемости процесса лицензирования открытого ПО присоединилось 17 новых участников, которые согласились применить для своих открытых проектов более мягкие условия отзыва лицензии, предоставляющие время на устранение выявленных нарушений. Общее число компаний, подписавших соглашение, превысило 60.

Новые участники, подписавшие соглашение GPL Cooperation Commitment: NetApp, Salesforce, Seagate Technology, Ericsson, Fujitsu Limited, Indeed, Infosys, Lenovo, LG Electronics, Camuda, Capital One, CloudBees, Colt, Comcast, Ellucian, EPAM Systems и Volvo Car Corporation. Среди компаний, подписавших соглашение в прошлые годы: Red Hat, Facebook, Google, IBM, Microsoft, Cisco, HPE, SAP, SUSE, Amazon, Arm, Canonical, GitLab, Intel, NEC, Philips, Toyota, Adobe, Alibaba, Amadeus, Ant Financial, Atlassian, Atos, AT&T, Bandwidth, Etsy, GitHub, Hitachi, NVIDIA, Oath, Renesas, Tencent и Twitter. Подписанные условия применяются для кода под лицензиями GPLv2, LGPLv2 и LGPLv2.1 и полностью соответствуют условиям, принятым разработчиками ядра Linux.

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

Принятое соглашение переносит на GPLv2 условия расторжения, применяемые в лицензии GPLv3, и отличающиеся явным определением сроков и порядка устранения нарушений. В соответствии с принятыми в GPLv3 правилами, если нарушения были выявлены впервые и устранены за 30 дней с момента уведомления, права на лицензию восстанавливаются, и лицензия полностью не отзывается (договор остаётся не нарушен). Права возвращаются сразу также в случае устранения нарушений, если правообладатель не уведомил о нарушении в течение 60 дней. Иначе, вопрос восстановления прав должен обсуждаться отдельно с каждым правообладателем. При применении новых условий финансовые компенсации могут предъявляться в суде не сразу после выявления нарушения, а лишь спустя 30 дней, которые выделяются на устранение лицензионных проблем.

  1. OpenNews: Предложение по блокировке драйверов-прослоек, предоставляющих доступ к GPL-вызовам ядра Linux
  2. OpenNews: Позиция Blender по поводу свободного характера проекта и платных GPL-дополнений
  3. OpenNews: Апелляционный суд встал на сторону VMware в деле о нарушении GPL
  4. OpenNews: Фонд СПО добавил EUPL 1.2 в список свободных лицензий, не совместимых с GPL
  5. OpenNews: Для ядра Linux адаптированы правила GPLv3 в отношении отзыва лицензии
Обсуждение (138 +19) | Тип: К сведению |
10.09.2020 Уязвимость в TLS, допускающая определение ключа для соединений на базе шифров DH (56 +21)
  Раскрыты сведения о новой уязвимости (CVE-2020-1968) в протоколе TLS, получившей кодовое имя Raccoon и позволяющей при редком стечении обстоятельств определить предварительный первичный ключ (pre-master), который можно использовать для расшифровки TLS-соединений, в том числе HTTPS, при перехвате транзитного трафика (MITM). Отмечается, что атака очень сложна для практической реализации и больше носит теоретический характер. Для проведения атаки требуется специфичная конфигурация TLS-сервера и возможность очень точного замера времени обработки операций сервером.

Проблема присутствует непосредственно в спецификации TLS и затрагивает только соединения, использующие шифры на основе протокола обмена ключами DH (Diffie-Hellman, TLS_DH_*"). С шифрами ECDH проблема не проявляется, и они остаются безопасными. Уязвимы только протоколы TLS до версии 1.2 включительно, протокол TLS 1.3 проблеме не подвержен. Уязвимость проявляется в реализациях TLS, повторно использующих секретный ключ DH в разных TLS-соединениях (подобное поведение наблюдается примерно на 4.4% серверов из рейтинга Alexa Top 1M).

В OpenSSL 1.0.2e и более ранних выпусках первичный ключ DH повторно используется во всех серверных соединениях, если явно не выставлена опция SSL_OP_SINGLE_DH_USE. Начиная с OpenSSL 1.0.2f первичный ключ DH повторно используется только при использовании статических DH-шифров ("DH-*", например "DH-RSA-AES256-SHA"). В OpenSSL 1.1.1 уязвимость не проявляется, так как в данной ветке не используется первичный ключ DH и не применяются статические DH-шифры.

При использовании метода обмена ключами DH обе стороны соединения генерируют случайные закрытые ключи (далее ключ "a" и ключ "b"), на основе которых вычисляются и отправляются открытые ключи (ga mod p и gb mod p). После получения открытых ключей каждой стороной вычисляется общий первичный ключ (gab mod p), который применяется для формирования сессионных ключей. Атака Raccoon позволяет определить первичный ключ через анализ информации по сторонним каналам, отталкиваясь от того, что в спецификациях TLS вплоть до версии 1.2 предписывается отбрасывать все начальные нулевые байты первичного ключа перед вычислениями с его участием.

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

Само по себе определение одного байта ключа ничего не даёт, но перехватив переданное при согласовании соединения клиентом значение "ga" атакующий может сформировать набор других значений, связанных с "ga" и отправить их на сервер в отдельных сеансах согласования соединения. Формируя и отправляя значения "gri*ga", атакующий может через анализ изменения задержек в ответе сервера определить значения, приводящие к получению первичных ключей, начинающихся с нуля. Определив подобные значения атакующий, может составить набор уравнений для решения проблемы скрытых чисел и вычислить исходный первичный ключ.

В OpenSSL уязвимости присвоен низкий уровень опасности, а исправление свелось к перемещению в выпуске 1.0.2w проблемных шифров "TLS_DH_*" в отключённую по умолчанию категорию шифров с недостаточным уровнем защиты ("weak-ssl-ciphers"). Аналогично поступили разработчики Mozilla, которые отключили в библиотеке NSS, используемой в Firefox, наборы шифров DH и DHE. Начиная с Firefox 78 проблемные шифры отключены. В Chrome поддержка DH была прекращена ещё в 2016 году. Библиотеки BearSSL, BoringSSL, Botan, Mbed TLS и s2n проблеме не подвержены, так как не поддерживают шифры DH или статические варианты шифров DH.

Отдельно отмечаются дополнительные проблемы (CVE-2020-5929) в TLS-стеке устройств F5 BIG-IP, делающие атаку более реалистичной. В частности, были выявлены отклонения в поведении устройств при наличии нулевого байта в начале первичного ключа, которые можно использовать вместо измерения точного времени задержки при вычислениях.

  1. OpenNews: Обновление OpenSSL с устранением уязвимости в реализации TLS
  2. OpenNews: Раскрыты детали новой атаки на различные реализации TLS
  3. OpenNews: Критическая уязвимость в системах шифрования email на основе PGP/GPG и S/MIME
  4. OpenNews: Новый метод атаки на TLS, затрагивающий 27 из 100 крупнейших сайтов
  5. OpenNews: Около 5.5% сайтов используют уязвимые реализации TLS
Обсуждение (56 +21) | Тип: Проблемы безопасности |
09.09.2020 Выпуск DNS-сервера KnotDNS 3.0.0 (46 +3)
  Опубликован релиз KnotDNS 3.0.0, высокопроизводительного авторитативного DNS сервера (рекурсор выполнен в виде отдельного приложения), поддерживающего все современные возможности DNS. Проект разрабатывается чешским реестром имен CZ.NIC, написан на языке Си и распространяется под лицензией GPLv3.

KnotDNS отличается ориентацией на высокую производительность обработки запросов, для чего применяется многопоточная, и по большей части неблокирующая реализация, хорошо масштабируемая на SMP-системах. Предоставляются такие возможности, как добавление и удаление зон на лету, передача зон между серверами, DDNS (динамические обновления), NSID (RFC 5001), расширения EDNS0 и DNSSEC (включая NSEC3), ограничения интенсивности ответов (RRL).

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

  • Добавлен высокопроизводительный сетевой режим, реализованный с использованием подсистемы XDP (eXpress Data Path), предоставляющей средства для обработки пакетов на уровне сетевого драйвера на стадии до обработки сетевым стеком ядра Linux. Для использования режима требуется ядро Linux 4.18 и новее.
  • Добавлена поддержка каталога зон ("Catalog Zones"), упрощающего поддержание вторичных DNS-серверов. При включении данной возможности вместо определения на вторичном сервере отдельных записей для каждой вторичной зоны, между первичным и вторичным серверами организуется передача каталога зон, после чего заводимые на первичном сервере зоны, помеченные как входящие в каталог, будут автоматически создаваться на вторичном сервере без необходимости правки файлов конфигурации. Для управления каталогом предложена утилита kcatalogprint.
  • Добавлен новый режим проверки DNSSEC.
  • Добавлена утилита kzonesign для ручного формирования цифровых подписей для DNSSEC.
  • Добавлена утилита kxdpgun с реализацией высокопроизводительного генератора трафика "DNS поверх UDP" для Linux.
  • В kdig добавлена поддержка DNS поверх HTTPS (DoH), реализованная при помощи GnuTLS и libnghttp2.
  • В режиме ручного управления ключами DNSSEC добавлена поддержка статуса отзыва ключей KSK (Key Signing Key) (RFC 5011).
  • Добавлена поддержка детерминированного формирования цифровых подписей с использованием алгоритмов ECDSA (для работы требуется GnuTLS 3.6.10 и новее).
  • Предложен безопасный способ резервного копирования и восстановления данных DNS-зон.
  • Значительно повышена производительность модуля "statistics".
  • При включении многопоточного режима формирования цифровых подписей для DNS-зон обеспечено распараллеливания некоторых дополнительных операций с зонами.
  • Улучшена эффективность кэширования и повышена производительность обработки запросов.

  1. OpenNews: Выпуск DNS-сервера BIND 9.16.0
  2. OpenNews: Выпуск DNS-сервера KnotDNS 2.9.0
  3. OpenNews: Атака NXNSAttack, затрагивающая все DNS-резолверы
  4. OpenNews: DNS Push-уведомления получили статус предложенного стандарта
  5. OpenNews: Почти половина трафика на корневые DNS-серверы вызвана активностью Chromium
Обсуждение (46 +3) | Тип: Программы |
08.09.2020 Выпуск мобильной платформы Android 11 (241 +19)
  Компания Google опубликовала релиз открытой мобильной платформы Android 11. Связанные с новым выпуском исходные тексты размещены в Git-репозиторий проекта (ветка android-11.0.0_r1). Обновления прошивки подготовлены для устройств серии Pixel, а также для смартфонов производства OnePlus, Xiaomi, OPPO и Realme. Также сформированы универсальные сборки GSI (Generic System Images), подходящие для разных устройств на базе архитектур ARM64 и x86_64.

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

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

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

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

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

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

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

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

  • Встроена возможность создания скринкастов с записью изменений на экране и звука с микрофона.
  • Упрощено выделение текста и изображений для помещения в буфер обмена и обмена между приложениями.
  • Модернизирована система голосового управления устройством (Voice Access), позволяющая управлять смартфоном исключительно при помощи голосовых команд. Voice Access теперь понимает содержимое экрана и учитывает контекст, а также генерирует метки для accessibility-команд.
  • Добавлена функция "Nearby Share" для быстрой и безопасной отправки файлов, видео, данных о местоположении и иных сведений на рядом находящиеся другие устройства на базе платформы Android или с браузером Chrome.


  • В Android Emulator добавлена экспериментальная возможность запуска исполняемого кода 32- и 64-разрядных приложений, собранных для архитектуры ARM, в окружении запущенного в эмуляторе системного образа Android 11, собранного для архитектуры x86_64. В эмуляторе также появилась поддержка симуляции работы фронтальной и задней камеры. Для задней камеры реализован Camera2 API HW Level 3 с поддержкой переработки YUV и захвата в RAW-режиме. Для передней камеры реализован уровень FULL с поддержкой логической камеры (одно логическое устройство на базе двух физических устройств c узким и широким углом обзора).
  • Расширена поддержка стандарта мобильной связи 5G, предоставляющего более высокую пропускную способность и меньшие задержки. Создающие большую сетевую нагрузку приложения, выполняющие такие действия, как просмотр потокового видео с качеством 4K и загрузка игровых ресурсов в высоком разрешении, теперь могут работать не только при соединении через Wi-Fi, но и при работе через сеть сотового оператора связи. Для упрощения адаптации работы приложений с учётом каналов связи 5G, расширен API Dynamic Meteredness, применяемый для проверки тарифицируется ли соединение по трафику и можно ли через него передавать большие объёмы данных. Данный API теперь охватывает сотовые сети и позволяет определить подключение к провайдеру, предоставляющем по настоящему безлимитный тариф при подключении через 5G. Добавлен 5G state API, дающий возможность приложению быстро определить подключение через 5G в режимах New Radio или Non-Standalone.

    Также расширен API Bandwidth Estimator, позволяющий прогнозировать размер доступной пропускной способности для загрузки или отправки данных, без проведения собственных сетевых тестов.

  • Добавлена поддержка новых типов экранов "pinhole" (экран занимает всю лицевую поверхность смартфона, за исключением небольшого кружка в верхнем левом углу для фронтальной камеры) и "waterfall" (экран охватывает также закруглённые боковые грани устройства). Наличие дополнительных видимых и слепых областей на данных экранах приложения теперь могут определять при помощи штатного API Display Сutout. Для охвата боковых граней и организации взаимодействия в областях рядом с краями экранов "waterfall" в API предложены новые вызовы.
  • Добавлены новые опции для контроля за доступом приложений к персональным данным. В дополнение к появившемуся в прошлом выпуске режиму доступа к местоположению только во время работы с программой (в фоне доступ блокируется) в Android 11 представлена поддержка одноразовых полномочий. Пользователь теперь может предоставить приложению временный доступ к ключевым полномочиям, таким как доступ к местоположению, микрофону и камере. Разрешение действует на время текущего сеанса и отзывается как только пользователь переключился на другую программу.
  • Внесены изменения, упрощающие миграцию приложений на хранилище Scoped Storage, позволяющее изолировать файлы приложений на внешнем накопителе (например, на SD-карте). При использовании Scoped Storage данные приложения ограничиваются отдельным каталогом, а для получения доступа к общим коллекциям мультимедийных файлов требуется получение отдельных полномочий. В Android 11 реализована поддержка опционального режима доступа к носителю по полным файловым путям, обновлён API DocumentsUI, добавлена возможность выполнения пакетных операций в MediaStore.
  • Расширены возможности по использованию биометрических датчиков для аутентификации. В API BiometricPrompt, предлагающем универсальный диалог биометрической аутентификации, появилась поддержка трёх типов аутентификаторов - надёжные, слабые и учётные данные устройства. Упрощена интеграция BiometricPrompt с различными архитектурами приложений, не ограничивающимися применением класса Activity.
  • При сборке компонентов платформы, требующих повышенной защиты, задействованы работающие на этапе компиляции механизмы защиты CFI (Control Flow Integrity), BoundSan, IntSan (Integer Overflow Sanitization) и Shadow-Call Stack. Для выявления проблем при работе с памятью в приложениях включена проверка указателей в куче на основе привязанных к ним тегов (heap pointer tagging). Для поиска ошибок работы с памятью предложен дополнительный системный образ, в котором включён отладочный механизм HWAsan (Hardware-assisted AddressSanitizer).
  • Подготовлен API BlobStoreManager, позволяющий организовать безопасный обмен бинарными данными между приложениями. Например, данный API можно использовать для предоставления нескольким приложениям доступа к моделям машинного обучения, при запуске этих приложений одним пользователем.
  • Добавлена поддержка платформ для безопасного хранения и извлечения проверяемых идентификационных документов, таких как электронные водительские удостоверения.
  • В рамках проекта Mainline, позволяющего обновлять отдельные системные компоненты без обновления платформы целиком, подготовлены 12 новых обновляемых модулей в дополнение к 10 модулям, доступным в Android 10. Обновления затрагивают не привязанные к оборудованию компоненты, которые загружаются через Google Play отдельно от OTA-обновлений прошивки от производителя. Среди новых модулей, которые смогут обновляться через Google Play без обновления прошивки - модуль для управления полномочиями, модуль для работы с накопителями (с поддержкой Scoped Storage) и модуль с NNAPI (Neural Networks API).
  • Проведена работа по снижению влияния изменения поведения некоторых подсистем на работу приложений. Новшества, которые могут повлиять на работу приложений теперь могут быть опционально отключены и отрегулированы на уровне SDK. Для упрощения тестирования совместимости приложений с Android 11 в интерфейсе Developer Options и в утилите adb предоставлены настройки для включения и отключения возможностей, влияющих на совместимость (позволяют обойтись при тестировании без изменения targetSdkVersion и без пересборки приложения). Обновлены серые списки ограниченных программных интерфейсов, не предоставляемых в SDK.
  • Добавлен фреймворк Resource Loader, позволяющий во время выполнения приложения динамически загружать дополнительные ресурсы.
  • В сервис проверки звонков добавлена возможность передачи приложениям статуса верификации входящего звонка, который может использоваться для формирования после обработки звонка кастомизированных диалогов, например, включающих дополнительные действия для пометки звонка как спам или добавления в адресную книгу.
  • Улучшен API Wifi Suggest, позволяющий приложению (менеджеру подключения к сети) влиять на алгоритм выбора предпочитаемых беспроводных сетей путём передачи ранжированного списка сетей, а также учитывающий при выборе сети дополнительные метрики, такие как сведения о пропускной способности и качества канала связи при прошлом подключении. Добавлена возможность управления беспроводными сетями, поддерживающими стандарт Hotspot 2.0 (Passpoint), в том числе обеспечен учёт времени истечения действия профиля пользователя и реализована возможность использования в профилях самоподписанных сертификатов.
  • В API ImageDecoder добавлена поддержка декодирования и отображения анимированных изображений в формате HEIF (HEIC у Apple), использующем методы сжатия HEVC (H.265). По сравнению с анимированными изображениями GIF формат HEIF позволяет существенно сократить размер файла.
  • В NDK добавлен API для использования в нативном коде операций кодирования и декодирования изображений (JPEG, PNG, WebP и т.п.), без привлечения сторонних библиотек. Новый API даёт возможность сократить размер APK-файлов с нативными приложениями и решить проблему с обновлением встраиваемых библиотек, которые могут содержать уязвимости.
  • Приложения для работы с камерой теперь могут временно отключать виброзвонок (например, при выводе уведомлений) для блокирования его срабатывания во время сеанса с камерой.
  • Предоставлена возможность включения режимов Боке (размытие фона на снимке) для устройств с их поддержкой (например, режим still обеспечивает более высокое качество снимка, а режим continuous более точное соответствие данным с сенсора).
  • Добавлен API для проверки и настройки режимов воспроизведения видео с низкими задержками, востребованных в приложениях для потокового вещания в реальном времени. Кроме того, добавлена поддержка режима работы HDMI с низкими задержками (игровой режим), при котором для сокращения задержек на телевизоре или внешнем мониторе отключается постобработка графики.
  • Для устройств со сгибающимися складными экранами добавлен API для получения информации от датчика угла раскрытия половинок экрана. При помощи нового API приложения могут определять точный угол раскрытия и адаптировать вывод с его учётом.
  • API для проверки звонков расширен возможностями для выявления автообзвонов. Для приложений, фильтрующих звонки, реализована поддержка проверки статуса входящего звонка через STIR/SHAKEN на предмет фальсификации идентификатора звонящего, а также возможность возвращать причину блокировки вызова и менять содержимое системного экрана, отображаемого после завершения звонка для пометки вызова как спам или добавления в адресную книгу.
  • Расширен API Neural Networks, предоставляющий приложениям возможности по задействованию средств аппаратного ускорения для систем машинного обучения. API позиционируется как базовая прослойка для функционирования в Android фреймворков машинного обучения, таких как TensorFlow Lite и Caffe2. Добавлена поддержка функции активации Swish, позволяющей сократить время обучения нейронной сети и повысить точность выполнения определённых задач, например, ускорить работу с моделями компьютерного зрения на базе MobileNetV3. Добавлена операция Control, позволяющая создавать более продвинутые модели машинного обучения, поддерживающие ветвления и циклы. Реализован API Asynchronous Command Queue для сокращения задержек при запуске по цепочке мелких связанных моделей.

    Для использования на мобильных устройствах предложен ряд готовых моделей нейронных сетей, в том числе MobileNets (распознавание объектов на фотографиях), Inception v3 (компьютерное зрение) и Smart Reply (подбор вариантов ответа на сообщения). Реализована поддержка расширенного квантования с использованием знаковых целых чисел вместо чисел с плавающей запятой, которое позволяет сократить размер моделей и ускорить работу с ними. Кроме того, в API Quality of Service добавлены возможности для управления приоритетами и таймаутами при выполнении моделей, а API Memory Domain расширено для снижения операций копировании и преобразования памяти при последовательном выполнении моделей.

  • Добавлены отдельные типы фоновых сервисов для камеры и микрофона, которые нужно будет запрашивать, если приложению необходимо получить доступ к камере и микрофону в момент неактивности.
  • Добавлены новые API для синхронизации вывода элементов интерфейса приложений с появлением экранной клавиатуры для организации более плавной анимации вывода за счёт информирования приложения об изменениях на уровне отдельных кадров.
  • Добавлен API для управления частотой обновления экрана, позволяющий для окон определённых игр и приложений установить другую частоту (например, по умолчанию Android использует частоту обновления 60Hz, но некоторые устройства позволяют увеличить её до 90Hz).
  • Реализован режим бесшовного продолжения работы после установки OTA-обновления прошивки, требующего перезагрузки устройства. Новый режим позволяет приложениям сохранить доступ к шифрованному хранилищу без необходимости разблокировки устройства пользователем после перезагрузки, т.е. приложения сразу смогут продолжить выполнять свои функции и получать сообщения. Например, автоматическая установка OTA-обновления может быть запланирована на ночное время и проведена без участия пользователя.
  • Добавлен API для получения информации о причинах завершения работы программы, позволяющий определить завершилась программа по инициативе пользователя, в результате сбоя или была принудительно завершена операционной системой. API также даёт возможность оценить состояние программы непосредственно перед завершением.
  • Добавлен GWP-ASan, анализатор памяти в куче, позволяющий находить и исправлять проблемы, вызванные небезопасной работой с памятью. GWP-ASan с минимальными накладными расходами анализирует операции распределения памяти и выявляет аномалии. По умолчанию GWP-ASan включен для исполняемых файлов платформы и системных приложений. Для применения GWP-ASan к своим приложениям требуется отдельное включение.
  • В утилиту ADB (Android Debug Bridge) добавлен инкрементальный режим установки APK-пакетов ("adb install --incremental"), позволяющий существенно ускорить установку больших программ, таких как игры, в процессе их разработки. Суть режима в том, что при установке первым делом переносятся необходимые для запуска части пакета, а остальное догружается в фоне, не блокируя возможность запуска программы. Например, при установке APK-файлов, размером более 2GB, в новом режиме время до возможности запуска сокращается до 10 раз. Инкрементальные установки пока работают только на устройствах Pixel 4 и 4XL, к релизу число поддерживаемых устройств будет расширено.
  • Полностью переработан режим отладки с запуском ADB поверх беспроводного соединения. В отличие от отладки с соединением по TCP/IP, отладка через Wi-Fi не требует подключения кабеля для настройки и может запоминать ранее произведённые сопряжения устройств. В планах также реализация более простой схемы сопряжения по QR-коду, показываемому в Android Studio.
  • Обновлены средства для аудита доступа к данным, позволяющие проанализировать к каким пользовательским данным обращается приложение и после каких действий пользователя. Переименованы некоторые вызовы API аудита.
  • Добавлен режим "Ethernet tethering", позволяющий предоставлять доступ к интернету через смартфон при помощи подключённых через USB-порт Ethernet-адаптеров.
  • В настройках появилась секция с историей уведомлений и возможность задания расписания для активации тёмной темы оформления.


  1. OpenNews: Выпуск мобильной платформы LineageOS 17 на основе Android 10
  2. OpenNews: Выпуск мобильной платформы Android 8.1
  3. OpenNews: Выпуск мобильной платформы Android 8.0 "Oreo"
  4. OpenNews: Выпуск мобильной платформы Android 9
  5. OpenNews: Выпуск мобильной платформы Android 10
Обсуждение (241 +19) | Тип: Программы | Интересно
08.09.2020 Доступен мультимедийный фреймворк GStreamer 1.18.0 (61 +25)
  После полутора лет разработки состоялся релиз GStreamer 1.18, написанного на языке Си кроссплатформенного набора компонентов для создания широкого спектра мультимедиа приложений, от медиаплееров и конвертеров аудио/видео файлов, до VoIP-приложений и систем потокового вещания. Код GStreamer распространяется под лицензией LGPLv2.1. Одновременно доступны обновления плагинов gst-plugins-base 1.18, gst-plugins-good 1.18, gst-plugins-bad 1.18, gst-plugins-ugly 1.18, а также обвязка gst-libav 1.18 и сервер потокового вещания gst-rtsp-server 1.18. На уровне API и ABI новый выпуск обратно совместим с веткой 1.0. Бинарные сборки в скором времени будут подготовлены для Android, iOS, macOS и Windows (в Linux рекомендуется использовать пакеты из дистрибутива).

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

  • Предложен новый высокоуровневый API GstTranscoder, который можно использовать в приложениях для перекодирования файлов из одного формата в другой.
  • Улучшено представление информации и обработка видео с расширенным динамическим диапазоном (HDR, High Dynamic Range).
  • Добавлена возможность изменения скорости воспроизведения на лету.
  • Добавлена поддержка набора кодеков AFD (Active Format Description) и Bar Data.
  • В сервере и клиенте RTSP добавлена поддержка trick-режимов (быстрая прокрутка с сохранением картинки), описанных в спецификации ONVIF (Open Network Video Interface Forum).
  • На платформе Windows реализовано аппаратное ускорение декодирования видео с использованием API DXVA2 / Direct3D11, а также предложен плагин для захвата видео и ускорения кодирования при помощи Microsoft Media Foundation. Добавлена поддержка UWP (Universal Windows Platform).
  • Добавлен элемент qmlgloverlay, позволяющий вывести сцену Qt Quick поверх входящего видеопотока.
  • Добавлен элемент imagesequencesrc, упрощающий создание видеопотока из последовательности изображений в форматах JPEG или PNG.
  • Добавлен элемент dashsink для генерации контента DASH.
  • Добавлен элемент dvbsubenc для кодирования субтитров DVB.
  • Обеспечена возможность упаковки потоков MPEG-TS с фиксированным битрейтом и поддержкой SCTE-35, в форме, совместимой с кабельными телесетями.
  • Реализован rtmp2 с новой реализацией клиента RTMP с элементами source и sink.
  • В RTSP Server добавлена поддержка заголовков для управления скоростью и масштабированием.
  • Добавлен svthevcenc, кодировщик видео H.265 на базе развиваемого компанией Intel кодировщиккода SVT-HEVC.
  • Добавлен элемент vaapioverlay для композитинга с использованием VA-API.
  • В rtpmanager добавлена поддержка RTP-расширения TWCC (Google Transport-Wide Congestion Control).
  • В элементах splitmuxsink и splitmuxsrc появилась поддержка вспомогательных (AUX) видеопотоков.
  • Представлены новые элементы для получения и генерации RTP-потоков, используя URI "rtp://".
  • Добавлен плагин AVTP (Audio Video Transport Protocol) для передачи звуковых- и видеопотоков, чувствительных к задержкам.
  • Добавлена поддержка профиля TR-06-1 (RIST - Reliable Internet Stream Transport).
  • Добавлен элемент rpicamsrc для захвата видео с камеры для платы Raspberry Pi.
  • В GStreamer Editing Services добавлена поддержка вложенных временных шкал, задания скорости в привязке к отдельному клипу и возможность использования формата OpenTimelineIO.
  • Удалены сценарии сборки на основе Autotools. В качестве основного сборочного инструментария теперь применяется Meson.

  1. OpenNews: Доступен мультимедийный фреймворк GStreamer 1.16.0
  2. OpenNews: Обновление MediaPipe, фреймворка для обработки видео и звука с использованием машинного обучения
  3. OpenNews: Google опубликовал данные и модель машинного обучения для разделения звуков
  4. OpenNews: Выпуск звукового сервера PulseAudio 13.0
  5. OpenNews: Доступен мультимедийный сервер PipeWire 0.3, идущий на смену PulseAudio
Обсуждение (61 +25) | Тип: Программы |
07.09.2020 Утверждён стандарт C++20 (360 +36)
  Комитет ISO по стандартизации языка C++ утвердил международный стандарт "C++20". Представленные в спецификации возможности, за исключением единичных случаев, поддерживаются в компиляторах GCC, Clang и Microsoft Visual C++. Поддерживающие C++20 стандартные библиотеки реализованы в рамках проекта Boost.

В следующие два месяца утверждённая спецификация будет находиться на стадии подготовки документа к публикации, на которой будет проведена работа по редакторской правке орфографических ошибок и опечаток. В начале ноября результирующий вариант документа будет направлен в ISO для публикации под формальным именем ISO/IEC 14882:2020. Тем временем, комитет уже приступил к работе над следующим стандартом C++23 (C++2b) и на ближайшем виртуальном совещании рассмотрит возможные новшества.

Основные особенности C++20 (примеры кода):

  • Добавлены "концепции", расширения шаблонов, позволяющие определить набор требований к параметрам шаблона, которые во время компиляции ограничивают набор аргументов, которые могут приниматься в качестве параметров шаблона. Концепции можно применять для того, чтобы избежать логических несоответствий между свойствами типов данных, используемых внутри шаблона, и свойствами типов данных входных параметров.
    
       template<typename T>
       concept EqualityComparable = requires(T a, T b) {
           { a == b } -> std::boolean;
           { a != b } -> std::boolean;
       };
    
    
  • В состав приняты расширения для работы с модулями, которые можно использовать вместо заголовочных файлов. Модули предоставляют новый способ организации исходных текстов на основании определения границ компонентов, без подключаемых через "#include" заголовочных файлов.
  • Макрос __VA_OPT__ для адаптивного раскрытия вариативных макросов в зависимости от наличия токенов в вариативном аргументе.
  • Поддержка оператора "<=>" для трехстороннего сравнения.
  • Поддержка инициализаторов элементов по умолчанию для битовых полей.
  • Возможность лямбда-захвата выражений "*this".
    
       struct int_value {
         int n = 0;
         auto getter_fn() {
           // BAD:
           // return [=]() { return n; };
    
           // GOOD:
           return [=, *this]() { return n; };
         }
       };
    
  • Вызов элементов по указателю (Pointer-to-member), используя определённые через выражение "const &" указатели на временные объекты.
  • Оператор delete с деструктором, описанный в документе P0722R1.
  • Классам разрешено использование параметры шаблона без типа.
    
       struct foo {
         foo() = default;
         constexpr foo(int) {}
       };
    
       template <foo f>
       auto get_foo() {
         return f;  
       }
    
       get_foo(); // uses implicit constructor
       get_foo<foo{123}>();
    
  • Не сохраняемые лямбда-выражения с конструктором.
  • Допустимость использования синтаксиса шаблонов для ламбда-выражений ("auto f = []<typename T>(std::vector<T> v)").
  • Возможность использования строковых литералов в параметрах шаблона.
  • Поддержка синтаксиса инициализации в стиле Си - явно не перечисленные в списке инициализации поля, инициализируются по умолчанию.
    
       struct A {
         int x;
         int y;
         int z = 123;
       };
    
       A a {.x = 1, .z = 2}; // a.x == 1, a.y == 0, a.z == 2
    
  • Поддержка пустых членов структур данных.
  • Поддержка атрибутов likely и unlikely для информирования оптимизатора о вероятности срабатывания условной конструкции ("[[likely]] if (random > 0) {").
  • Возможность использования диапазонов для инициализации значений переменной в цикле "for"
    
       for (auto v = std::vector{1, 2, 3}; auto& e : v) {
    
  • Автоматическое вычисление размера массива в new ("new double[]{1,2,3}");
  • Атрибут "[[no_unique_address]]" при котором переменные без данных не занимают места.
  • Атомарные указатели (std::atomic<shared_ptr<T>> и std::atomic<weak_ptr<T>>).
  • Возможность вызова виртуальных функций в условных выражениях.
  • Поддержка быстрых (immediate) функций, которые могут работать только с константами.
    
    
       consteval int sqr(int n) {
         return n * n;
       }
    
       constexpr int r = sqr(100); // OK
       int x = 100;
       int r2 = sqr(x); // ERROR:  'x' не может использоваться как константа
      
    
  • Возможность применения constexpr с виртуальными функциями ("constexpr virtual int f() const { return 2; }").
  • В стандартной библиотеке:
    • Добавлена поддержка типа char8_t для строк UTF-8.
    • Добавлены заголовочные файлы bit (битовые операции) и version.
    • Появилась возможность проверки префикса и суффикса строк (starts_with, ends_with).
    • Добавлены типажи std::remove_cvref, std::unwrap_reference, std::unwrap_decay_ref, std::is_nothrow_convertible и std::type_identity.
    • Добавлены функции std::midpoint, std::lerp, std::bind_front, std::source_location, std::visit, std::is_constant_evaluated и std::assume_aligned.
    • В std::make_shared добавлена поддержка массивов.
    • Добавлена функция std::to_array для преобразования похожих на массив объектов в std::array.
    • В состав включена библиотека std::ranges, позволяющая использовать итераторы над группой элементов.
  • Более удобный синтаксис перечислений:
    
       enum class rgba_color_channel { red, green, blue, alpha };
    
       std::string_view to_string(rgba_color_channel my_channel) {
         switch (my_channel) {
           using enum rgba_color_channel;
           case red:   return "red";
           case green: return "green";
           case blue:  return "blue";
           case alpha: return "alpha";
        }
       }
    
  • В индексах из-за неопределённого поведения запрещено использование операции "," ("a[b,c]"). Прекращена поддержка большинства операций с переменными, объявленными с ключевым словом volatile, в том числе запрещены операции "++" и "--" со стандартными типами.
  • Сокращено число ситуаций, в которых требуется указание "typename" для информировании о наличии типа.

  1. OpenNews: Утверждён стандарт C++17
  2. OpenNews: Спецификация C++0X принята в качестве международного стандарта C++11
  3. OpenNews: Опубликован новый международный стандарт для языка Си (C1X/C11)
  4. OpenNews: Объявлено о готовности международного стандарта C++14
  5. OpenNews: W3C придал WebAssembly статус рекомендованного стандарта
Обсуждение (360 +36) | Тип: К сведению |
07.09.2020 Выпуск libtorrent 2.0 с поддержкой протокола BitTorrent 2 (101 +53)
  Представлен значительный выпуск библиотеки libtorrent 2.0 (известна также как libtorrent-rasterbar), предлагающей реализацию протокола BitTorrent, эффективную с точки зрения потребления памяти и нагрузки на CPU. Библиотека задействована в таких торрент-клиентах, как Deluge, qBittorrent, Folx, Lince, Miro и Flush (не путать с другой библиотекой libtorrent, которая используется в rTorrent). Код libtorrent написан на языке C++ и распространяется под лицензией BSD.

Выпуск примечателен добавлением поддержки протокола BitTorrent v2, в котором осуществлён уход от использования алгоритма SHA-1, имеющего проблемы с подбором коллизий, в пользу SHA2-256. SHA2-256 применяется как для контроля целостности блоков данных, так и для записей в индексах (info-dictionary), что нарушает совместимость с DHT и трекерами. Для магнитных ссылок на торренты с хэшами SHA2-256 предложен новый префикс "urn:btmh:" (для SHA-1 и гибридных торрентов используется "urn:btih:").

Так как замена функции хэширования нарушает совместимость протокола (поле с хэшем 32 байта вместо 20 байт) разработка спецификации BitTorrent v2 изначально велась без оглядки на обратную совместимость и в состав были приняты другие существенные изменения, такие как использование хеш-дерева Меркла в индексах для сокращения размера torrent-файлов и проверки загруженных данных на уровне блоков.

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

Для сглаживания сосуществования BitTorrent v1 и BitTorrent v2 реализована возможность создания гибридных torrent-файлов, которые включают помимо структур с хэшами SHA-1, индексы с SHA2-256. Указанные гибридные торренты могут использоваться с клиентами, поддерживающими только протокол BitTorrent v1. Ожидаемая в libtorrent 2.0 поддержка протокола WebTorrent из-за нерешённых проблем со стабильностью отложена до следующего значительного выпуска, который выйдет не раньше конца года.

  1. OpenNews: В libtorrent добавлена поддержка протокола WebTorrent
  2. OpenNews: Выпуск qBittorrent 4.2
  3. OpenNews: Релиз BitTorrent-клиента Deluge 2.0
  4. OpenNews: Новая версия BitTorrent-клиента Transmission 3.0
  5. OpenNews: Доступны PeerTube 2.3 и WebTorrent Desktop 0.23
Обсуждение (101 +53) | Тип: Программы |
07.09.2020 Проект Gentoo представил систему управления пакетами Portage 3.0 (252 +58)
  Стабилизирован выпуск системы управления пакетами Portage 3.0, применяемой в дистрибутиве Gentoo Linux. Представленная ветка подвела итог длительной работы по переходу на Python 3 и прекращению поддержки Python 2.7.

Кроме прекращения поддержки Python 2.7, другим важным изменением стало включение оптимизаций, позволивших на 50-60% ускорить вычисления, связанные с определением зависимостей. Интересно, что некоторые разработчики предлагали переписать код разрешения зависимостей на C/C++ или Go для ускорения его работы, но удалось решить имевшуюся проблему малой кровью.

Проведение профилирования имевшегося кода показало, что основное время при вычислениях тратится на вызов функций use_reduce и catpkgsplit с повторяющимся набором аргументов (например, функция catpkgsplit вызывалась от 1 до 5 млн раз). Для ускорения было применено кэширование результата работы данных функций с использованием словарей. Оптимальным для хранения кэша была встроенная функция lru_cache, но она была доступна только в выпусках Python, начиная с 3.2. Для совместимости с более ранними версиями была добавлена заглушка, подменяющая lru_cache, но решение о прекращении поддержки Python 2.7 в Portage 3.0 сильно упростило задачу и позволило обойтись без данной прослойки.

Использование кэша позволило снизить время выполнения операции "emerge -uDvpU --with-bdeps=y @world" на ноутбуке ThinkPad X220 с 5 минут 20 секунд до 3 минут 16 секунд (63%). Тесты на других системах показали прирост производительности не ниже 48%.

Подготовивший изменение разработчик также попытался реализовать прототип кода разрешения зависимостей на C++ или Rust, но задача оказалась слишком сложной, так как требовала портирования большого объёма кода, и, при этом, было сомнительно, что полученный результат стоил бы потраченных усилий.

  1. OpenNews: Проект Gentoo опубликовал сборку для мобильных устройств, поставляемых с Android
  2. OpenNews: Разработчики Gentoo рассматривают возможность подготовки бинарных сборок ядра Linux
  3. OpenNews: Gentoo исполнилось 20 лет
  4. OpenNews: Выпуск дистрибутива Funtoo 1.4, развиваемого основателем Gentoo Linux
  5. OpenNews: Проект Gentoo опубликовал отчёт о взломе своих репозиториев на GitHub
Обсуждение (252 +58) | Тип: Программы |
05.09.2020 Выпуск свободной системы 3D-моделирования Blender 2.90 (132 +64)
  Представлен выпуск свободного пакета 3D-моделирования Blender 2.90. Основные изменения в Blender 2.90:
  • На платформе Linux реализована начальная поддержка протокола Wayland, для включения которой предложена сборочная опция WITH_GHOST_WAYLAND. X11 продолжает использоваться по умолчанию, так как некоторые возможности Blender пока остаются недоступными в окружениях на базе Wayland.
  • В движке Cycles предложена новая модель облаков Nishita, использующая генерацию текстур на основе симуляции физических процессов.
  • Для трассировки лучей силами CPU в Cycles задействована библиотека Intel Embree, которая позволила существенно повысить производительность при обработке сцен с эффектом размытия для передачи динамики движения объекта (motion blur), а также в целом ускорила обработку сцен со сложной геометрией. Например время расчёта тестовой сцены Agent 327 с motion blur сократилось с 54:15 до 5:00.
  • Для всех GPU NVIDIA, начиная с семейства Maxwell (GeForce 700, 800, 900, 1000), предоставлена возможность применения механизма подавления шумов OptiX.
  • Предложено два режима визуализации структуры волос: быстрый режим Rounded Ribbon (отображает волос как плоскую ленту с закруглёнными нормалями) и ресурсоёмкий режим 3D Curve (волос отображается в виде 3D кривой).
  • Добавлена возможность задания смещения терминатора тени (Shadow Terminator) в привязке к объектам для устранения артефактов со сглаженными нормалями на mesh-ах с низкой детализацией.
  • Добавлена поддержка библиотеки Intel OpenImageDenoise для интерактивного устранения шумов в 3D viewport и при финальном рендеринге (работает на CPU Intel и AMD c поддержкой SSE 4.1).
  • Улучшен интерфейс пользователя. Оператор поиска теперь охватывает и элементы меню. В 3D viewport добавлен новый слой со статистикой. В строке состояния по умолчанию отныне показывается только версия, а дополнительные данные, такие как статистика и потребление памяти, включаются через контекстное меню. Реализована возможность перетаскивать и перегруппировывать модификаторы в режиме drag&drop. Для упрощения изменения размера увеличена ширина границ областей. Изменено размещение флажков (Checkbox), которые теперь отображаются слева от текста.
  • В движке рендеринга Eevee, поддерживающем физически корректный рендеринг в реальном времени и использующем только GPU (OpenGL) для визуализации, полностью переписана реализация эффекта размытия при движении (Motion blur), добавлена поддержка деформации mesh-ей и увеличена точность.
  • Реализована полноценная поддержка скульптурного моделирования с несколькими разрешениями (модификатор Multires) - пользователь теперь может выбрать несколько уровней разбивки поверхности (Subdivision, кусочное построение гладких поверхностей с использованием полигональной сетки) и переключаться между уровнями. Также появилась возможность перестроения низких уровней разбивки поверхности и извлечения смещений, что может применяться для импорта моделей из любых приложений скульптурного моделирования по сетке и перестроения всех уровней разбивки поверхности для редактирования внутри модификатора. Появилась возможность создания гладких, линейных и простых разбивок поверхности без изменения типа модификатора.
  • Добавлен фильтр для симуляции ткани на полигональной сетке, используя четыре режима моделирования.
  • В кисти Pose реализованы два новых режима деформации: масштабирование/преобразование и сдавливание/растяжка.
  • В средства моделирования добавлен новый инструмент для автоматического разделения и удаления смежных граней при выполнении операций выдавливания. В инструменте и модификаторе скоса (Bevel) реализован режим "Absolute" для использования абсолютных значений, а не процентов, а также задействован новый метод для определения материала и развёртки (UV) для центральных полигонов в нечётных сегментах. В пользовательском профиле модификатора и инструмента скоса появилась поддержка регулировки на базе кривых Безье.
  • В модификаторе океана появилась генерация карт для направления брызг.
  • В редакторе развёрток (UV) при перемещении элементов полигональной сетки обеспечена автоматическая корректировка цветов вершин и развёрток.
  • Реализовано кэширование данных дыма и жидкостей в одном файле .vdb для каждого кадра.
  • При физической симуяции тканей добавлена возможность применения градиента давления, эмулирующего вес жидкости, которой заполнен объект или которая окружает его.
  • Продолжена реализация поддержки виртуальной реальности на базе стандарта OpenXR.
  • Улучшена поддержка импорта и экспорта в формате glTF 2.0.


  1. OpenNews: Выпуск свободной системы 3D-моделирования Blender 2.83
  2. OpenNews: Сообщество Blender выпустило свободный анимационный фильм Spring
  3. OpenNews: Позиция Blender по поводу свободного характера проекта и платных GPL-дополнений
  4. OpenNews: AMD, Embark Studios и Adidas стали участниками Blender Development Fund
  5. OpenNews: Выпуск свободной системы 3D-моделирования Blender 2.80
Обсуждение (132 +64) | Тип: Программы |
04.09.2020 Уязвимость в реализации сокетов AF_PACKET ядра Linux (112 +25)
  Спустя три года с момента волны уязвимостей (1, 2, 3, 4, 5) в подсистеме AF_PACKET ядра Linux выявлена ещё одна проблема (CVE-2020-14386), позволяющая локальному непривилегированному пользователю выполнить код с правами root или выйти из изолированных контейнеров, при наличии в них root-доступа.

Для создания сокета AF_PACKET и эксплуатации уязвимости требуется наличие полномочий CAP_NET_RAW. Тем не менее, указанное полномочие может быть получено непривилегированным пользователем в контейнерах, создаваемых в системах с включённой поддержкой пространств имён идентификаторов пользователей (user namespaces). Например, user namespaces по умолчанию включён в Ubuntu и Fedora, но не активирован в Debian и RHEL. В Android право создавать сокеты AF_PACKET имеет процесс mediaserver, через который может быть эксплуатирована уязвимость.

Уязвимость присутствует в функции tpacket_rcv и вызвана ошибкой вычисления переменной netoff. Атакующий может создать условия, при которых в переменную netoff будет записано значение меньше переменной maclen, что вызовет переполнение при вычислении "macoff = netoff - maclen" и неверной последующей установке указателя на буфер для поступающих данных. В итоге, атакующим может быть инициирована запись от 1 до 10 байт в область за границей выделенного буфера. Отмечается, что в разработке находится эксплоит, позволяющий получить root-права в системе.

Ошибка вычисления присутствует в ядре с июля 2008 года, т.е. во всех актуальных ядрах, однако известная сейчас возможность применить ее для записи в область за границей выделенного буфера (уязвимость) предположительно была привнесена в феврале 2016 (ядра 4.6-rc1 и новее), с развитием поддержки virtio_net. Исправление пока доступно в виде патча. Отследить появление обновлений пакетов в дистрибутивах можно на следующих страницах: Ubuntu, Fedora, SUSE, Debian, RHEL, Arch.

  1. OpenNews: Пятая уязвимость в реализации сокетов AF_PACKET ядра Linux
  2. OpenNews: Четвёртая уязвимость в реализации сокетов AF_PACKET ядра Linux
  3. OpenNews: Уязвимости в реализации сокетов AF_PACKET и UDP-стеке ядра Linux
  4. OpenNews: Локальная root-уязвимость в реализации сокетов AF_PACKET в ядре Linux
  5. OpenNews: Локальная root-уязвимость в ядре Linux
Обсуждение (112 +25) | Тип: Проблемы безопасности |
03.09.2020 Уязвимости в сканерах безопасности образов Docker-контейнеров (60 +13)
  Опубликованы результаты тестирования инструментов для определения неисправленных уязвимостей и выявления проблем с безопасностью в образах изолированных контейнеров Docker. Проверка показала, что в 4 из 6 известных сканеров образов Docker присутствовали критические уязвимости, позволяющие атаковать непосредственно сам сканер и добиться выполнения своего кода в системе, в отдельных случаях (например, при использовании Snyk) с правами root.

Для атаки злоумышленнику достаточно инициировать проверку своего Dockerfile или manifest.json, включающего специально оформленные метаданные, или разместить внутри образа файлы Podfile и gradlew. Прототипы эксплоитов удалось подготовить для систем WhiteSource, Snyk, Fossa и Anchore. Наилучшую безопасность показал пакет Clair, изначально написанный с оглядкой на обеспечение безопасности. Проблем также не выявлено в пакете Trivy. В итоге сделан вывод, что сканеры Docker-контейнеров следует запускать в изолированных окружения или использовать только для проверки собственных образов, а также проявлять осторожность при подключении подобных инструментов к автоматизированным системам непрерывной интеграции.

В FOSSA, Snyk и WhiteSource уязвимость была связана с вызовом внешнего пакетного менеджера для определения зависимостей и позволяла организовать выполнение своего кода через указание команд touch и system в файлах gradlew и Podfile.

В Snyk и WhiteSource дополнительно были найдены уязвимости, связанные с организацией запуска системных команд при разборе Dockerfile (например, в Snyk через Dockefile можно было заменить утилиту /bin/ls, вызываемую сканером, а в WhiteSurce можно было подставить код через аргументы в форме "echo ';touch /tmp/hacked_whitesource_pip;=1.0'").

В Anchore уязвимость была вызвана использованием утилиты skopeo для работы с docker-образами. Эксплуатация сводилась к добавлению в файл manifest.json параметров вида '"os": "$(touch hacked_anchore)"', которые подставляются при вызове skopeo без должного экранирования (вырезались только символы ";&<>", но допускалась конструкция "$()").

Тем же автором проведено исследование эффективности выявления неисправленных уязвимостей сканерами безопасности docker-контейнеров и уровень ложных срабатываний (часть 1, часть 2, часть 3). Ниже показаны результаты тестирования 73 образов, содержащих известные уязвимости, а также дана оценка эффективности определения наличия типовых приложений в образах (nginx, tomcat, haproxy, gunicorn, redis, ruby, node).

  1. OpenNews: Cloudflare представил открытый сканер сетевой безопасности Flan Scan
  2. OpenNews: Релиз сканера сетевой безопасности Nmap 7.30
  3. OpenNews: Проект CoreOS представил Clair, инструмент для оценки уязвимостей в контейнерах
  4. OpenNews: Компания Yahoo представила Gryffin, открытый сканер безопасности для Web-приложений
  5. OpenNews: Треть образов контейнеров в Docker Hub содержит опасные уязвимости
Обсуждение (60 +13) | Тип: Проблемы безопасности |
02.09.2020 Amazon опубликовал Bottlerocket 1.0.0, Linux-дистрибутив на базе изолированных контейнеров (117)
  Компания Amazon представила первый значительный выпуск специализированного Linux-дистрибутива Bottlerocket 1.0.0, предназначенного для эффективного и безопасного запуска изолированных контейнеров. Инструментарий и управляющие компоненты дистрибутива написаны на языке Rust и распространяются под лицензиями MIT и Apache 2.0. Разработка проекта ведётся на GitHub и доступна для участия представителей сообщества. Образ для развёртывания системы формируется для архитектур x86_64 и Aarch64. ОС адаптирована для запуска в кластерах Amazon ECS и AWS EKS Kubernetes. Предоставлены инструменты и для создания собственных сборок и редакций, в которых могут использоваться иные инструменты оркестровки, ядра и runtime для контейнеров.

Дистрибутив предоставляет ядро Linux и минимальное системное окружение, включающие только компоненты, необходимые для запуска контейнеров. Среди задействованных в проекте пакетов отмечаются системный менеджер systemd, библиотека Glibc, сборочный инструментарий Buildroot, загрузчик GRUB, конфигуратор сети wicked, runtime для изолированных контейнеров containerd, платформа оркестровки контейнеров Kubernetes, аутентификатор aws-iam-authenticator и агент Amazon ECS.

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

Ключевым отличием от похожих дистрибутивов, таких как Fedora CoreOS, CentOS/Red Hat Atomic Host является первичная ориентация на обеспечение максимальной безопасности в контексте усиления защиты системы от возможных угроз, усложнения эксплуатации уязвимостей в компонентах ОС и повышения изоляции контейнеров. Контейнеры создаются при помощи штатных механизмов ядра Linux - cgroups, пространств имён и seccomp. Для дополнительной изоляции в дистрибутиве применяется SELinux в режиме "enforcing", а для криптографической верификации целостности корневого раздела задействован модуль dm-verity. В случае выявления попытки модификации данных на уровне блочного устройства система перезагружается.

Корневой раздел монтируется в режиме только для чтения, а раздел с настройками /etc монтируется в tmpfs и восстанавливает исходное состояние после перезапуска. Прямое изменение файлов в каталоге /etc, таких как /etc/resolv.conf и /etc/containerd/config.toml, не поддерживается - для постоянного сохранения настроек следует использовать API или выносить функциональность в отдельные контейнеры.

Большинство системных компонентов написаны на языке Rust, предоставляющем средства для безопасной работы с памятью, позволяющие избежать уязвимостей, вызванных обращением к области памяти после её освобождения, разыменованием нулевых указателей и выходом за границы буфера. При сборке по умолчанию применяются режимы компиляции "--enable-default-pie" и "--enable-default-ssp" для включения рандомизации адресного пространства исполняемых файлов (PIE) и защиты от переполнения стека через подстановку канареечных меток. Для пакетов, написанных на языке C/C++, дополнительно включаются флаги "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" и "-fstack-clash-protection".

Инструменты для оркестровки контейнеров поставляются в отдельном управляющем контейнере, который включается по умолчанию и управляется через API и AWS SSM Agent. В базовом образе отсутствует командная оболочка, сервер SSH и интерпретируемые языки (например, нет Python или Perl) - средства для администратора и отладочные инструменты вынесены в отдельный служебный контейнер, который по умолчанию отключён.

  1. OpenNews: Проект Clear Linux смещает акцент при разработке на серверы и облачные системы
  2. OpenNews: Первый стабильный выпуск Fedora CoreOS
  3. OpenNews: Обновление гипервизоров Intel Cloud Hypervisor 0.3 и Amazon Firecracker 0.19, написанных на Rust
  4. OpenNews: Спецслужбы Франции опубликовали защищённый дистрибутив CLIP OS
  5. OpenNews: Выпуск RancherOS 1.5, ОС на базе контейнерной изоляции
Обсуждение (117) | Тип: Программы |
<< Предыдущая страница (позже)
Следующая страница (раньше) >>



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

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