Выпуск новой стабильной ветки Tor 0.4.1

Представлен выпуск инструментария Tor 0.4.1.5, используемого для организации работы анонимной сети Tor. Tor 0.4.1.5 признан первым стабильным выпуском ветки 0.4.1, которая развивалась последние четыре месяца. Ветка 0.4.1 будет сопровождаться в рамках штатного цикла сопровождения — выпуск обновлений будет прекращён через 9 месяцев или через 3 месяца после релиза ветки 0.4.2.x. Длительный цикл поддержки (LTS) обеспечен для ветки 0.3.5, обновления для которой будут выпускаться до 1 февраля 2022 года.

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

  • Реализована экспериментальная поддержка добавочного заполнения на уровне цепочек, позволяющего усилить защиту от методов определения трафика Tor. Клиент теперь добавляет добавочные ячейки (padding cells) вначале цепочек INTRODUCE и RENDEZVOUS, делая трафик этих цепочек более похожим на обычный исходящий трафик. Ценой усиления защиты является добавление двух дополнительных ячеек в каждом направлении для цепочек RENDEZVOUS, а также одной вышестоящей и 10 нижестоящих ячеек для цепочек INTRODUCE. Метод активируется при указании в настройках опции MiddleNodes и может быть отключен через опцию CircuitPadding;
  • Добавлена поддержка аутентифицированых ячеек SENDME для защиты от DoS-атаки, основанной на создании паразитной нагрузки, в случае когда клиент запрашивает загрузку больших файлов и приостанавливает операции чтения после отправки запросов, но продолжает отправлять управляющие команды SENDME, инструктирующие входные узлы продолжать передачу данных. Каждая ячейка SENDME теперь включает хэш трафика, который она подтверждает, и конечный узел при получении ячейки SENDME может удостовериться, что другая сторона уже получила трафик, отправленный при обработке прошлых ячеек;
  • В состав включена реализация обобщённой подсистемы для передачи сообщений в режиме издатель-подписчик, которая может использоваться для организации внутримодульного взаимодействия;
  • Для разбора управляющих команд задействована обобщённая подсистема парсинга вместо отдельного разборка входных данных каждой команды;
  • Проведена оптимизация производительности, позволяющая снизить нагрузку на CPU. Tor теперь использует отдельный быстрый генератор псевдослучайных чисел (PRNG) для каждого потока, который основан на применении режима шифрования AES-CTR, использовании буферизированных конструкций как в libottery и коде arc4random() из OpenBSD. Для небольших выходных данных предложенный генератор работает быстрее CSPRNG из OpenSSL 1.1.1 почти в 100 раз. Несмотря на то, что новый PRNG оценивается как криптографический надёжный, он пока используется только в местах, требующих высокой производительности, например, в коде планирования прикрепления добавочного заполнения;
  • Добавлена опция «—list-modules» для вывода списка включённых модулей;
  • Для третьей версии протокола скрытых сервисов реализована команда HSFETCH, которая ранее поддерживалась только во второй версии;
  • Устранены ошибки в кода запуска Tor (bootstrap) и обеспечении работы третьей версии протокола скрытых сервисов.

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

В Webmin найден бэкдор, позволяющий удалённо получить доступ с правами root

В пакете Webmin, предоставляющем средства для удалённого управления сервером, выявлен бэкдор (CVE-2019-15107), найденный в официальных сборках проекта, распространяемых через Sourceforge и рекомендованных на основном сайте. Бэкдор присутствовал в сборках с 1.882 по 1.921 включительно и позволял удалённо без прохождения аутентификации выполнить произвольные shell-команды в системе с правами root.

Для атаки достаточно наличия открытого сетевого порта с Webmin и активности в web-интерфейсе функции смены устаревшего пароля (по умолчанию включена в сборках 1.890, но в остальных версиях выключена). Проблема устранена в обновлении 1.930. В качестве временной меры для блокирования бэкдора достаточно убрать настройку «passwd_mode=» из файла конфигурации /etc/webmin/miniserv.conf. Для тестирования подготовлен прототип эксплоита.

Проблема была обнаружена в скрипте password_change.cgi, в котором для проверки введённого в web-форме старого пароля используется функция unix_crypt, которой передаётся полученный от пользователя пароль без выполнения экранирования спецсимволов. В git-репозитории данная функция является обвязкой над модулем Crypt::UnixCrypt и не представляет опасности, но в поставляемом на сайте Sourceforge архиве с кодом вызывается код, который напрямую обращается к /etc/shadow, но делает это при помощи shell-конструкции. Для атаки достаточно указать в поле со старым паролем символ «|» и следующий после него код будет выполнен с правами root на сервере.

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

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

Выпуск пакетного фильтра nftables 0.9.2

Состоялся релиз пакетного фильтра nftables 0.9.2, развивающегося в качестве замены iptables, ip6table, arptables и ebtables за счёт унификации интерфейсов фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов. В пакет nftables входят компоненты пакетного фильтра, работающие в пространстве пользователя, в то время как на уровне ядра работу обеспечивает подсистема nf_tables, входящая в состав ядра Linux начиная с выпуска 3.13. Необходимые для работы выпуска nftables 0.9.2 изменения включения в состав ядра Linux 5.3.

На уровне ядра предоставляется лишь общий интерфейс, не зависящий от конкретного протокола и предоставляющий базовые функции извлечения данных из пакетов, выполнения операций с данными и управления потоком. Непосредственно логика фильтрации и специфичные для протоколов обработчики компилируются в байткод в пространстве пользователя, после чего данный байткод загружается в ядро при помощи интерфейса Netlink и выполняется в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters). Подобный подход позволяет значительно сократить размер кода фильтрации, работающего на уровне ядра и вынести все функции разбора правил и логики работы с протоколами в пространство пользователя.

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

  • Возможность проверки номера порта из заголовка пакета транспортного уровня независимо от типа протокола 4 уровня:
         add rule x y ip protocol { tcp, udp } th dport 53  
  • Поддержка восстановления времени жизни набора элементов:
         add element ip x y { 1.1.1.1 timeout 30s expires 15s }  
  • Возможность проверки отдельных опций (lsrr, rr, ssrr и ra) из пакетов IPv4:
         add rule x y ip option rr exists drop  

    Для опций маршрутизации возможна проверка полей type, ptr, length и addr:

         add rule x y ip option rr type 1 drop  
  • В выражениях теперь допустимо указание сетевых префиксов и диапазонов адресов:
         iifname ens3 snat to 10.0.0.0/28     iifname ens3 snat to 10.0.0.1-10.0.0.15  
  • Поддержка использования переменных в определениях цепочек:
          define default_policy = accept      add chain ip foo bar { type filter hook input priority filter; policy $default_policy }  
  • Указание приоритета цепочки теперь может производиться как в числовом, таки символьном виде:
          define prio = filter      define prionum = 10      define prioffset = "filter - 150"        add table ip foo      add chain ip foo bar { type filter hook input priority $prio; }      add chain ip foo ber { type filter hook input priority $prionum; }      add chain ip foo bor { type filter hook input priority $prioffset; }  
  • Реализована поддержка модуля synproxy. Например, для размещения TCP-порта 8888 под защитой synproxy можно использовать набор правил:
          table ip x {              chain y {                      type filter hook prerouting priority raw; policy accept;                      tcp dport 8888 tcp flags syn notrack              }                chain z {                      type filter hook forward priority filter; policy accept;                      tcp dport 8888 ct state invalid,untracked synproxy mss 1460 \                         wscale 7 timestamp sack-perm  ct state invalid drop              }      }  
  • Для определения в таблице conntrack связанных с текущим соединением ожидаемых дополнительных соединений, которые применяются в требующих установки нескольких соединений протоколах и сценариях, теперь можно определять политики через штатные наборы правил. Например, для определения ожидаемых после соединений к TCP порту 8888 последующих соединений к порту 5432 можно указать следующие правила:
              table x {                  ct expectation myexpect {                          protocol tcp                          dport 5432                          timeout 1h                          size 12                          l3proto ip                  }                    chain input {                          type filter hook input priority 0;                          ct state new tcp dport 8888 ct expectation set myexpect                          ct state established,related counter accept                  }          }  
          

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

OpenDrop — открытая реализации технологии Apple AirDrop

Проект Open Wireless Link, занимающийся разбором проприетарных беспроводных протоколов компании Apple, представил на конференции USENIX 2019 доклад с анализом уязвимостей в беспроводных протоколах Apple (найдены возможности совершения MiTM-атаки для модификации передаваемых между устройствами файлов, DoS-атаки для блокирования взаимодействия устройств и вызова зависания устройств, а также применения AirDrop для идентификации и отслеживания пользователей). В ходе проведённого исследования были подготовлены открытые реализации протокола AWDL (Apple Wireless Direct Link) и технологии AirDrop, детали о которых получены в результате обратного инжиниринга.

Реализация AWDL написана на языке Си и опубликована в виде Linux-приложения owl (Open Wireless Link), использующего API Netlink для выполнения специфичных для Wi-Fi операций, таких как переключение каналов. Интеграция с сетевым стеком осуществляется через виртуальный сетевой интерфейс, позволяющий приложениям с поддержкой IPv6 использовать протокол AWDL без внесения изменений в код. Работа возможна на сетевых картах с поддержкой режима активного мониторинга, допускающего подстановку кадров (например, поддерживается в Atheros AR9280).

Протокол AWDL является основой беспроводных технологий Apple, используемых для организации прямого взаимодействия устройств без их предварительной настройки и сопряжения. На базе AWDL в том числе работает сервис AirDrop, позволяющий обмениваться файлами по Wi-Fi и Bluetooth. Подготовленные исследователями компоненты AirDrop написаны на языке Python и доступны в рамках проекта OpenDrop. Код owl и OpenDrop опубликован под лицензией GPLv3.

OpenDrop предоставляет интерфейс командой строки, позволяющий обмениваться файлами между устройствами по Wi-Fi. На уровне протокола реализация полностью совместима с устройствами Apple, что позволяет организовать взаимодействия систем на базе Linux с устройствами с iOS и macOS. Допускается отправка файлов только на устройства Apple, находящиеся в режиме неограниченного определения другими пользователями, так как выборочное определение устройства и отправка по адресной книге требуют заверения цифровой подписью Apple.

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

DoS-атаки для снижения производительности сети Tor

Группа исследователей Джорджтаунского университета и исследовательской лаборатории ВМС США проанализировали стойкость анонимной сети Tor к атакам, приводящим к отказу в обслуживании (DoS). Исследования в области компрометации сети Tor в основном строятся вокруг цензурирования (блокирования доступа к Tor), определения запросов через Tor в транзитном трафике и анализа корреляции потоков трафика перед входным узлом и после выходного узла Tor для деанонимизации пользователей. Представленное исследование показывает, что организация DoS-атак на Tor упускается из виду и при затратах в несколько тысяч долларов в месяц вполне реально создать условия для нарушения нормальной работы Tor, которые могут вынудить пользователей прекратить использование Tor из-за плохой производительности.

Исследователями предложены три сценария проведения DoS-атак: создание заторов между мостовыми узлами, разбалансировка нагрузки и создание заторов между релееями, для осуществления которых требуется наличие у атакующего пропускной способности в 30, 5 и 3 Gbit/s. В денежном эквиваленте стоимость проведения атаки на протяжении месяца будет составлять 17, 2.8 и 1.6 тысяч долларов, соответственно. Для сравнения, проведение DDoS-атаки в лоб для нарушения работы Tor потребует пропускной способности 512.73 Gbit/s и будет стоить 7.2 миллиона долларов в месяц.

Первый метод, при затратах в 17 тысяч долларов в месяц, через флуд ограниченного набора мостовых узлов с интенсивностью 30 Gbit/s снизит скорость загрузки данных клиентами на 44%. При проведении тестов оставалось в работе только 12 мостовых узлов obfs4 из 38 (не входят в списки публичных серверов каталогов и используются для обхода блокировки сторожевых узлов), что позволяет выборочно вывести остающиеся в работе мостовые узлы флудом. Разработчики Tor могут удвоить расходы на сопровождение и восстановить работу недостающих узлов, но атакующему достаточно будет увеличить свои затраты до 31 тысячи долларов в месяц для проведения атаки на все 38 мостовых узла.

Второй метод, который требует для атаки 5 Gbit/s, основан на нарушении работы централизованной системы измерения пропускной способности TorFlow и позволяет снизить среднюю скорость загрузки данных клиентами на 80%. TorFlow используется для балансировки нагрузки, что позволяет в рамках атаки нарушить распределение трафика и организовать его прохождение через ограниченное число серверов, вызвав их перегрузку.

Третий метод, для которого достаточно 3 Gbit/s, основан на использовании модифицированного Tor-клиента для создания паразитной нагрузки, что позволяет снизить скорость клиентских загрузок на 47% при затрате 1.6 тысяч долларов в месяц. При увеличении затрат на атаку до 6.3 тысяч долларов можно добиться снижения скорости клиентских загрузок на 120%. Модифицированный клиент вместо штатного построения цепочки из трёх узлов (входной, промежуточный и выходящий узел), применяет допустимую протоколом цепочку из 8 узлов с максимальным числом хопов между узлами, после чего запрашивает загрузку больших файлов и приостанавливает операции чтения после отправки запросов, но продолжает отправлять управляющие команды SENDME, инструктирующие входные узлы продолжать передачу данных.

Отмечается, что инициирование отказа в обслуживании заметно эффективнее, чем организация DoS-атаки методом Sybil при аналогичных затратах. Метод Sybil подразумевает размещение в сети Tor большого числа собственных релеев, на которых можно отбрасывать цепочки или урезать пропускную способность. При наличии бюджета для атаки в 30, 5 и 3 Gbit/s метод Sybil позволяет добиться снижения производительности для 32%, 7.2% и 4.5% выходных узлов, соответственно. В то время как предложенные в рамках исследования DoS-атаки охватывают все узлы.

Если сравнивать затраты с другими видами атак, то проведение атаки по деанонимизации пользователей с бюджетом 30 Gbit/s позволит добиться контроля за 21% входящими и 5.3% выходящими узлами и добиться охвата всех узлов цепочки в 1.1% случаях. Для бюджетов 5 и 3 Gbit/s эффективность составит 0.06% (4.5% входящих, 1.2% выходящих узлов) и 0.02% (2.8% входящих, 0.8% выходящих узлов).

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

Атака KNOB, позволяющая перехватить зашифрованный трафик Bluetooth

Раскрыты сведения об атаке KNOB (Key Negotiation Of Bluetooth), позволяющей организовать перехват и подстановку информации в шифрованном Bluetooth-трафике. Имея возможность блокировать прямую передачу пакетов в процессе согласования соединения Bluetooth-устройств, атакующий может добиться задействования для сеанса ключей, содержащих всего 1 байт энтропии, что позволяет применить метод прямого перебора (brute-force) для определения ключа шифрования.

Проблема вызвана недоработками (CVE-2019-9506) в спецификации Bluetooth BR/EDR Core 5.1 и более ранних версиях, допускающих использование слишком коротких ключей шифрования и не препятствующими вмешательству атакующего на этапе согласования соединения для отката на подобные ненадёжные ключи (возможна подстановка пакетов неаутентифицированным атакующим). Атака может быть совершена в момент согласования соединения устройств (уже установленные сеансы не могут быть атакованы) и эффективна только для соединений в режимах BR/EDR (Bluetooth Basic Rate/Enhanced Data Rate), если оба устройства подвержены уязвимости. В случае успешного подбора ключа злоумышленник может расшифровать передаваемые данные и незаметно от жертвы выполнить подстановку в трафик произвольного шифротекста.

При установке соединения между двумя Bluetooth-контроллерами A и B контроллер A после аутентификации по канальному ключу (link key) может предложить использовать для ключа шифрования (encryption key) 16 байт энтропии, а контроллер B может согласиться с этим значением или указать меньшее значение, в случае если не имеет возможности сформировать ключ предложенного размера. В ответ контроллер A может принять ответное предложение и активировать шифрованный канал связи. На данном этапе согласования параметров не применяется шифрование, поэтому атакующий имеет возможность вклиниться в обмен данными между контроллерами и подменить пакет с предложенным размером энтропии. Так как допустимый размер ключа варьируется от 1 до 16 байт, второй контроллер примет данное значение и отправит своё подтверждение с указанием аналогичного размера.

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

Организация Bluetooth SIG, отвечающая за разработку стандартов Bluetooth, опубликовала корректировку спецификации под номером 11838, в которой для реализации производителями предложены меры для блокирования уязвимости (минимальный размер ключа шифрования повышен с 1 до 7). Проблема проявляется во всех соответствующих стандарту Bluetooth-стеках и прошивках Bluetooth-чипов, включая продукты Intel, Broadcom, Lenovo, Apple, Microsoft, Qualcomm, Linux, Android, Blackberry и Cisco (из 14 протестированных чипов все оказались уязвимы). В Bluetooth-стек ядра Linux внесено исправление, позволяющее изменять минимальный размер ключа шифрования.

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

Выпуск языка программирования Rust 1.37

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

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

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

  • В компиляторе rustc обеспечена поддержка оптимизации на основе результатов профилирования кода (PGO, Profile-Guided Optimization), позволяющих генерировать более оптимальный код на основе анализа статистики, накопленной в процессе выполнения программы. Для генерации профиля предусмотрен флаг «-C profile-generate», а для использования профиля при сборке — «-C profile-use» (вначале программа собирается с первым флагом, обкатывается и после создания профиля собирается повторно со вторым флагом);
  • При выполнении команды «cargo run», которую удобно использовать для быстрого тестирования консольных приложений, добавлена возможность автоматического выбора исполняемого файла для запуска, в случае если в пакете присутствует несколько исполняемых файлов. Выполняемый по умолчанию файл определяется через директиву default-run в секции [package] с параметрами пакета, которая позволяет обойтись без явного указания имени файла через флаг «—bin» при каждом запуске «cargo run»;
  • В пакетный менеджер Cargo интегрирована команда «cargo vendor», ранее поставляемая в виде отдельного пакета. Команда позволяет организовать работу с локальной копией зависимостей — после выполнения «cargo vendor» все исходные тексты зависимостей проекта загружаются с crates.io в локальный каталог, который затем можно использовать для работы без обращения к crates.io (после выполнения команды показывается подсказка по изменению конфигурации для использования каталога при сборках). Указанная возможность уже применяется для организации поставки компилятора rustc с упаковкой всех зависимостей в один архив с релизом;
  • Появилась возможность создания ссылок на варианты перечислений (enum), используя псевдонимы типа (например, в теле функции «fn increment_or_zero(x: ByteOption) можно указывать «ByteOption::None => 0»), конструкции вычисления типов (‹MyType‹..››::вариант => N) или обращения Self (в блоках c &self можно указать «Self::Quarter => 25»);
  • Добавлена возможность создания неименованных констант в макросах. Вместо определения имени элемента в «const» теперь можно использовать символ «_» для динамического выбора неповторяющегося идентификатора, позволяющего избежать конфликта имён при повторном вызове макроса;
  • Добавлена возможность использования атрибута «#[repr(align(N))» с перечислениями (enums), используя синтаксис, аналогичный определению структуры AlignN‹T› с выравниванием и последующему использованию AlignN‹MyEnum›;
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы методы BufReader::buffer, BufWriter::buffer, Cell::from_mut, Cell::as_slice_of_cells, DoubleEndedIterator::nth_back, Option::xor, {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits и slice::copy_within.

Дополнительно можно отметить начало тестирования проекта Async-std, предлагающего асинхронный вариант стандартной библиотеки Rust (порт библиотеки std, в котором все интерфейсы предложены в версии с async и готовы для использования с синтаксисом async/await).

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

Выпуск распределенной системы управления исходными текстами Git 2.23

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

По сравнению с прошлым выпуском в новую версию принято 505 изменений, подготовленных при участии 77 разработчиков, из которых 26 впервые приняли участие в разработке. Основные новшества:

  • Представлены экспериментальные команды «git switch» и «git restore», призванные разделить между собой малосвязанные возможности «git checkout», такие как манипуляция веток (переключение и создание) и восстановление файлов в рабочей директории («git checkout $commit — $filename») или сразу в staging area («—staging», не имеет аналога в «git checkout»). Стоит отметить, что, в отличие от «git checkout», «git restore» удаляет неотслеживаемые файлы из восстанавливаемых директорий («—no-overlay» по умолчанию).
  • Добавлена опция «git merge —quit», которая, аналогично «—abort», останавливает процесс слияния веток, но оставляет при этом рабочую директорию нетронутой. Данная опция может оказаться полезной в случае, если некоторые из уже внесённых изменений, внесённых в результате ручного слияния, предпочтительнее оформить в виде отдельного коммита.
  • Команды «git clone», «git fetch» и «git push» теперь учитывают наличие коммитов в связанных репозиториях (alternates);
  • Добавлены опции «git blame —ignore-rev» и «—ignore-revs-file», позволяющие пропустить коммиты, в которых внесены незначимые правки (например, исправления форматирования);
  • Добавлена опция «git cherry-pick —skip» для пропуска конфликтного коммита (запоминаемый аналог последовательности «git reset && git cherry-pick —continue»);
  • Добавлена настройка status.aheadBehind, фиксирующая опцию «git status —[no-]ahead-behind» на постоянной основе;
  • С данного выпуска «git log» по умолчанию учитывает изменения, внесённые mailmap, аналогично тому, как это уже происходит в git shortlog;
  • Существенно ускорена операция обновления представленного в 2.18 экспериментального кеша графа коммитов (core.commitGraph). Также ускорен git for-each-ref в случае использования нескольких шаблонов и сокращено количество вызовов auto-gc в «git fetch —multiple»;
  • «git branch —list» теперь всегда показывает detached HEAD в самом начале списка независимо от локали.

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

Выпуск KDE Applications 19.08

Доступен релиз набора KDE Applications 19.08, включающего подборку пользовательских приложений, адаптированных для работы с KDE Frameworks 5. Информацию о наличии Live-сборок с новым выпуском можно получить на данной странице.

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

  • В файловом менеджере Dolphin реализована и включена по умолчанию возможность открытия новой вкладки в существующем окне файлового менеджера (вместо открытия нового окна с отдельным экземпляром Dolphin) при попытке открытия каталога из другого приложения. Другим улучшением является поддержка глобальной горячей клавиши «Meta + E», позволяющей в любой момент вызвать файловый менеджер.

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

  • В просмотрщике изображений Gwenview усовершенствовано отображение миниатюр и добавлен режим низкого потребления ресурсов, при котором используются миниатюры в низком разрешении. Данный режим существенно быстрее и потребляет меньше ресурсов при загрузке миниатюр из изображений JPEG и RAW. В случае невозможности сгенерировать миниатюру, теперь отображается картинка-заглушка вместо использования миниатюры от предыдущего изображения. Также решены проблемы с созданием миниатюр из камер Sony и Canon и расширена информация, отображаемая на основе метаданных EXIF для RAW-изображений. Добавлено новое меню «Share» («Опубликовать»), позволяющее отправить изображение по email, через Bluetooth, в Imgur, Twitter или NextCloud и корректно отобразить внешние файлы, доступ к которым производится через KIO;
  • В просмотрщике документов Okular улучшена работа с аннотациями, например, появилась возможность сворачивания и раскрытия разом всех аннотаций, переработан диалог с настройками и добавлена функция обрамления концов линейных меток (например, можно отобразить стрелку). Улучшена поддержка формата ePub, в том числе решены проблемы с открытием некорректных файлов ePub и увеличена производительность при обработке больших файлов;
  • В эмуляторе терминала Konsole расширены возможности мозаичной компоновки окон — основное окно теперь может быть разделено на части в произвольной форме, как вертикально, так и горизонтально. В свою очередь, каждая полученная после разделения область также может быть разделена или перемещена мышью в новое место в режиме drag&drop. Переработано окно с настройками, которое стало более ясным и простым;
  • В утилите для создания скриншотов Spectacle при создании снимка с задержкой в заголовке и кнопке на панели менеджера задач обеспечена индикация времени, оставшегося до создания снимка. При раскрытии окна Spectacle во время ожидания снимка теперь появляется кнопка для отмены действия. После сохранения снимка выводится сообщение, позволяющее открыть изображение или каталог, в котором оно сохранено;
  • В адресной книге, почтовом клиенте, календаре-планировщике и средствах совместной работы появилась поддержка Emoji. В KOrganizer реализована возможность перемещения событий из одного календаря в другой. В адресной книге KAddressBook появилась функция отправки SMS при помощи приложения KDE Connect;
  • В почтовом клиенте KMail обеспечена интеграция с системами проверки грамматики, такими как LanguageTool и Grammalecte. В окне написания сообщения добавлена поддержка разметки Markdown. При планировании событий прекращено автоудаление писем с приглашениями после написания ответа;
  • В видеоредакторе Kdenlive появились новые управляющие последовательности, вызываемые при помощи клавиатуры и мыши. Например, вращение колеса при удерживании Shift на шкале времени приведёт к изменению скорости клипа, а перемещение курсора по миниатюрам в клипе при удерживании Shift активирует предпросмотр видео. Унифицированы с другими видеоредакторами операции трёхточечного монтажа.
  • В текстовом редакторе Kate при попытке открыть новый документ осуществлён вывод на передний план уже запущенного экземпляра редактора. В режиме «Quick Open» («Быстрый переход») обеспечена сортировка элементов по времени их прошлого открытия и выделение по умолчанию самого верхнего элемента в списке.

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

Выпуск эмулятора QEMU 4.1

Представлен релиз проекта QEMU 4.1. В качестве эмулятора QEMU позволяет запустить программу, собранную для одной аппаратной платформы, на системе с совершенно иной архитектурой, например, выполнить приложение для ARM на x86-совместимом ПК. В режиме виртуализации в QEMU производительность выполнения кода в изолированном окружении близка к нативной системе за счёт прямого выполнения инструкций на CPU и задействования гипервизора Xen или модуля KVM.

Изначально проект был создан Фабрисом Белларом (Fabrice Bellard) с целью обеспечения возможности запуска собранных для платформы x86 исполняемых файлов Linux на архитектурах, отличных от x86. За годы разработки была добавлена поддержка полной эмуляции для 14 аппаратных архитектур, число эмулируемых аппаратных устройств превысило 400. При подготовке версии 4.1 внесено более 2000 изменений от 276 разработчиков.

Ключевые улучшения, добавленные в QEMU 4.1:

  • В эмулятор архитектуры x86 добавлена поддержка моделей CPU Hygon Dhyana и Intel SnowRidge. Добавлена эмуляция расширения RDRAND (аппаратный генератор псевдослучайных чисел). Добавлены флаги md-clear и mds-no для управления защитой от атак MDS (Microarchitectural Data Sampling) на процессоры Intel. Добавлена возможность определения топологий интегральных схем при помощи флага «-smp …,dies=». Реализовано версионирование для всех моделей CPU x86;
  • Блочный драйвер SSH переведён с использования libssh2 на libssh;
  • В драйвер virtio-gpu (виртуальный GPU, развиваемый в рамках проекта Virgil) добавлена поддержка выноса операций отрисовки 2D/3D во внешний процесс vhost-user (например, vhost-user-gpu);
  • В эмулятор архитектуры ARM добавлена поддержка расширения ARMv8.5-RNG для генерации псевдослучайных чисел. Реализована поддержка эмуляции FPU для чипов семейства Cortex-M и решены проблемы с эмуляцией FPU для Cortex-R5F. Предложена новая система настройки опций сборки, оформленная в стиле Kconfig. Для SoC Exynos4210 добавлена поддержка DMA-контроллеров PL330;
  • В эмуляторе архитектуры MIPS улучшена поддержка инструкций MSA ASE при использовании порядка следования байт big-endian и приведена в соответствие с эталонным оборудованием обработка случаев деления на ноль. Увеличена производительность эмуляции инструкций MSA для целочисленных вычислений и операций перестановки;
  • В эмуляторе архитектуры PowerPC появилась поддержка проброса к GPU NVIDIA V100/NVLink2 при помощи VFIO. Для pseries реализовано ускорение эмуляции контроллера прерываний XIVE и добавлена поддержка горячего подключения PCI мостов. Внесены оптимизации в эмуляцию векторных инструкций (Altivec/VSX);
  • В эмулятор архитектуры RISC-V добавлена новая модель оборудования — «spike». Добавлена поддержка ISA 1.11.0. Улучшен 32-разрядный ABI системных вызовов, расширена обработка недопустимых инструкций и улучшен встроенный отладчик. Добавлена поддержка топологии CPU в device tree;
  • В эмулятор архитектуры s390 добавлена поддержка эмуляции всех векторных инструкций группы «Vector Facility» и добавлены дополнительные элементы для поддержки систем gen15 (в том числе добавлена поддержка AP Queue Interruption Facility для vfio-ap). Реализована поддержка BIOS для загрузки с ECKD DASD, привязанного к гостевой системе через vfio-ccw;
  • В эмуляторе архитектуры SPARC для систем sun4m решены проблемы с использованием флага «-vga none» для OpenBIOS;
  • В эмуляторе процессоров семейства Tensilica Xtensa реализованы опции для MPU (memory protection unit) и эксклюзивного доступа;
  • В команду «qemu-img convert» добавлена опция «—salvage» для отключения аварийного завершения работы процесса преобразования образа в случае возникновения ошибок ввода/вывода (например, можно применять для восстановления частично повреждённых файлов qcow2). В команде «qemu-img rebase» обеспечена работа, когда для входного файла пока не создан базовый (backing) файл;
  • Добавлена возможность перенаправления вывода, организованного с использованием технологии «semihosting» (позволяет эмулируемому устройству использовать stdout, stderr и stdin для создания файлов на стороне хоста), в бэкенд chardev («-semihosting-config enable=on,target=native,chardev=[ID]»);
  • В блочном драйвере VMDK добавлена поддержка субформата seSparse в режиме только для чтения;
  • В драйвере эмуляции GPIO добавлена поддержка GPIO-контроллера SiFive.

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

В Chrome планируют полностью убрать поддержку FTP

Компания Google опубликовала план прекращения поддержки протокола FTP в Chromium и Chrome. В Chrome 80, намеченном на начало 2020 года, ожидается постепенное отключение поддержи FTP для пользователей стабильной ветки (для корпоративных внедрений будет добавлен флаг DisableFTP для возвращения FTP). В Chrome 82 планируется полностью удалить код и ресурсы, использующиеся для обеспечения работы FTP-клиента.

Постепенное урезание поддержки FTP началось в Chrome 63, в котором обращение к ресурсам по протоколу FTP начало помечаться как небезопасное соединение. В Chrome 72 было отключено отображение в окне браузера содержимого ресурсов, загружаемых по протоколу «ftp://» (например, прекращён показ HTML-документов и файлов README), и запрещено использование FTP при загрузке субресурсов из документов. В Chrome 74 из-за ошибки перестал работать доступ к FTP через HTTP-прокси, а в Chrome 76 поддержка прокси для FTP была удалена. На текущий момент остаются работоспособны загрузка файлов по прямым ссылкам и отображение содержимого каталогов.

По оценке Google FTP уже почти не используется — доля пользователей FTP составляет около 0.1%. Данный протокол также небезопасен из-за отсутствия шифрования трафика. Поддержка FTPS (FTP over SSL) для Chrome не реализована, и компания не видит смысла в доработке FTP-клиента в браузере с учётом его невостребованности, а также не намерена продолжать сопровождение небезопасной реализации (с точки зрения отсутствия шифрования). При необходимости загрузки данных по протоколу FTP пользователям будет предложено использовать сторонние FTP-клиенты — при попытке открытия ссылок по протоколу «ftp://» браузер будет вызывать установленный в операционной системе обработчик.

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

Разработчики PHP предложили P++, диалект со строгой типизацией

Разработчики языка PHP выступили с идеей по созданию нового диалекта P++, который поможет вывести язык PHP на новый уровень. В текущем виде развитию PHP мешает необходимость сохранения совместимости с имеющейся кодовой базой web-проектов, что удерживает разработчиков в ограниченных рамках. В качестве выхода предлагается параллельно начать развивать новый диалект PHP — P++, разработка которого будет вестись без оглядки на необходимость сохранения обратной совместимости, что позволит добавить в язык революционные улучшения и избавиться от устаревших концепций.

Наиболее заметными изменениями в P++ станет переход к использованию строгой типизации, избавление от применения тегов «‹?», прекращеие поддержки array() в пользу синтаксиса «[]» и запрет использования глобального пространства имён для функций. Для проекта предварительно выбрано имя P++ (PHP Plus Plus) по аналогии с С++. PHP и P++ предложено развивать бок о бок и использовать единый runtime. Не связанные с синтаксисом низкоуровневые компоненты, структуры данных, расширения и оптимизации производительности одновременно будут разрабатываться для PHP и P++, но в режиме PHP будет сохраняться обратная совместимость, а в P++ можно будет экспериментировать с эволюционированием языка.

Код на PHP и P++ можно будет смешивать в одном приложении и выполнять одним интерпретатором, но метод разделения кода пока не определён. При этом разработчики не отказываются от планов по развитию ветки PHP 8, в которой планируется добавить JIT-компилятор и средства для обеспечения переносимости с библиотеками на C/C++. Проект P++ пока находится на стадии обсуждения предложения. Основным сторонником P++ является Зеев Сураски (Zeev Suraski), один из лидеров сообщества разработчиков PHP, сооснователь компании Zend Technologies и автор движка Zend Engine.

Из возражений оппонентов можно отметить опасение в недостатке ресурсов для продвижения проекта (в режиме полного рабочего дня над PHP работает всего два разработчика), возможность фрагментации сообщества, конкуренция с уже существующим языком Hack (PHP со статической типизацией), опыт проекта HHVM (в конечном счёте отказавшегося поддерживать в одном runtime PHP и Hack), необходимость изменения семантики для строгой типизации, опасность стагнации PHP и развития новшеств только в P++, вопросы по поводу организации сосуществования и взаимодействия PHP и P++ (нетривиальность конвертации кода PHP в P++ (синтаксис может разойтись настолько, что потребуется переписывание приложения), несовместимость P++ с существующими инструментариями для PHP и необходимость убедить авторов инструментариев, систем тестирования и IDE обеспечить поддержку новой редакции).

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