The OpenNET Project / Index page

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

20.07.2018 Facebook открыл код для обработки ситуации нехватки памяти в системе (3 +2)
  Facebook опубликовал собственную реализацию обработчика нехватки памяти в системе (OOM, Out Of Memory), работающую в пространстве пользователя. Как и представленный в начале месяца проект earlyoom, разработка Facebook нацелена на более оперативное и выборочное завершение работы процессов, потребляющих слишком много памяти, на стадии до срабатывания OOM-обработчика ядра Linux. Код oomd написан на языке C++ и поставляется под лицензией GPLv2. Oomd уже используется в инфраструктуре Facebook и хорошо зарекомендовал себя при промышленных нагрузках (в частности, проект позволил почти полностью избавиться от возникновения на серверах длительных livelock-блокировок).

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

Поддерживается подключение различных модулей для определения нехватки памяти (oomdetector) и завершения процессов (oomkiller). В процессе работы для мониторинга за потреблением ресурсов используются cgroup2 и подсистема PSI (Pressure Stall Information), несколько дней назад предложенная для включения в состав ядра Linux. PSI разработан в Facebook и позволяет проанализировать информацию о времени ожидания получения различных аппаратных ресурсов для определённых задач или наборов процессов в cgroup.

В контексте OOM подсистема PSI позволяет выявить начало возникновения задержек из-за нехватки ресурсов на стадии когда система ещё не находится в критическом состоянии и не начинает интенсивно урезать кэш и вытеснять данные в раздел подкачки. Кроме оценки нагрузки на систему памяти в PSI также учитывается нагрузка на CPU и ввод/вывод. По сути PSI можно рассматривать как более информативный индикатор перегрузки и механизм для отслеживания изменения нагрузки во времени, более точно отражающий реальную ситуацию по сравнению с метрикой LA (Load Average).

Проведённые синтетические тесты показали, что реализация OOM-обработчика в пространстве пользователя продемонстрировала более высокую эффективность и надёжность, по сравнению со штатным OOM killer ядра Linux. Ниже на графиках приведено сравнение oomd и OOM killer при тестировании постепенного запроса процессом 2 Гб ОЗУ в течение 120 секунд в условиях нехватки памяти (значения выше 120 следует рассматривать как поведение, приводящее к снижению производительности).

  1. OpenNews: Выпуск earlyoom 1.1, процесса для раннего реагирования на нехватку памяти
  2. OpenNews: Механизм уведомления приложений о нехватке памяти в системе
  3. OpenNews: Facebook открыл реализацию платформы и протокола маршрутизации Open/R
  4. OpenNews: Facebook открыл код платформы Detectron для распознавания объектов на фотографиях
  5. OpenNews: Facebook открыл систему распознавания речи Wav2Letter
Обсуждение (3 +2) | Тип: Программы |
20.07.2018 Началось формирование ASan-сборок Firefox для выявления проблем при работе с памятью (21 +6)
  В рамках проекта ASan Nightly разработчики Mozilla начали публикацию ежедневно обновляемых сборок Firefox, собранных с AddressSanitizer для выявления проблем в процессе работы с памятью, в том числе вызванных обращением к областям памяти после их освобождения (use-after-free) и различными вариантами переполнения буферов и стека.

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

Размер вознаграждения может составить от 500 до 3000 долларов, в зависимости от опасности проблемы. Для участия в программе выплаты вознаграждения пользователь должен идентифицировать себя, указав свой email в поле asanreporter.clientid через интерфейс about:config (если email не будет указан отчёты будут отправляться анонимно, а присуждённое вознаграждение будет рассматриваться как пожертвование проекту).

В качестве причины создания отдельной ASan-сборки называется желание восполнить недостаток информации, присылаемой в результате отчётов о крахах - подобные отчёты часто указывают на наличие потенциальной уязвимости, но причину краха не всегда удаётся оперативно выявить из-за отсутствия необходимых отладочных данных. Например, в обычных сборках очень трудно локализовать проблемы use-after-free, так как крах обычно происходит значительно позднее выполнения кода с ошибкой при освобождении памяти.

Из-за необходимости сохранения всех освобождённых блоков сборка ASan потребляет заметно больше памяти по сравнению со штатными сборками, поэтому для комфортной работы рекомендуется 16 Гб ОЗУ и ежедневный перезапуск браузера. ASan-сборка пока доступна только для Linux. С точки зрения производительности ASan-сборока незначительно отличается от обычных ночных сборок.

  1. OpenNews: Проект по интеграции поддержки Tor в Firefox
  2. OpenNews: В Firefox планируют реализовать анонимный сбор статистики о посещаемых сайтах
  3. OpenNews: Эксперимент Mozilla приведёт к утечке данных, вводимых в адресной строке Firefox
  4. OpenNews: Улучшение sandbox-изоляции в Firefox
  5. OpenNews: В браузерном дополнении Stylish выявлен код для отправки истории посещений
Обсуждение (21 +6) | Тип: К сведению |
19.07.2018 В Google ведётся обсуждение возможной замены Android на ОС Fuchsia (141 +11)
  Издание Bloomberg опубликовало официально неподтверждённую инсайдерскую информацию об обсуждении внутри компании Google возможности замены платформы Android на ОС Fuchsia для всех поставляемых под брендом Google устройств, таких как Google Pixel и Google Smart Speaker. На базе Fuchsia планируется сформировать единую универсальную операционную систему, способную работать на любых типах устройств, на которых сейчас используются платформы Android, Chrome OS или сборки Linux для встраиваемых устройств.

До 2021 года на базе Fuchsia планируется предоставить готовое решение для встраиваемой домашней электроники, такой как умные колонки с голосовым управлением. Затем на базе Fuchsia будет подготовлен продукт для более крупных систем, таких как ноутбуки. Конечной целью является разработка замены для платформы Android к середине следующего десятилетия. В статье утверждается, что реализуемые в Fuchsia возможности по обеспечению приватности и безопасности вызывают недовольство и споры с сотрудниками отдела продаж, так как угрожают применяемой в Google рекламной модели монетизации.

Fuchsia изначально развивается с оглядкой на устранение недостатков в платформе Android, касающихся обеспечения безопасности, доставки обновлений и интеграции технологий искусственного интеллекта, таких как голосовой помощник. При этом, последнее время отмечается внесение в кодовую базу Android изменений, нацеленных на обеспечение работы Android Runtime в окружении Fuchsia и добавление поддержки компонентов ядра Zircon, что, вероятно, связано с подготовкой прослойки для обеспечения совместимости с Android-приложениями в Fuchsia. В настоящее время над развитием платформы в Google работает более 100 человек, включая Matías Duarte (дизайнер интерфейсов, отвечавший за интерфейсы webOS и Android 3+) и Nick Kralevich (главный по безопасности платформы Android).

Напомним, что для Fuchsia подготовлен собственный графический интерфейс Armadillo, написанный на языке Dart с использованием фреймворка Flutter. Для обеспечения совместимости с Linux для Fuchsia развивается библиотека Machina, которая позволяет запускать Linux-программы в специальной изолированной виртуальной машине, формируемой при помощи гипервизора на базе ядра Zircon и спецификаций Virtio, по аналогии с тем, как организован запуск Linux-приложений в Chrome OS.

В зависимости от решаемых задач в Fuchsia предлагаются два ядра: Zircon и LK. Zircon является полнофункциональным микроядром, ориентированным на применение на достаточно мощных устройствах, таких как смартфоны и персональные компьютеры. Ядро LK, ранее развивавшееся в рамках проекта littlekernel, предназначено для систем с ограниченным размером ОЗУ и небольшой производительностью процессора, которые обычно применяются во встраиваемых решениях. LK может рассматриваться как открытая альтернатива таким системам, как FreeRTOS и ThreadX.

Ядро Zircon оформлено в виде надстройки над LK с реализацией дополнительных концепций. Например, в Zircon имеется поддержка процессов, а в LK нет, но реализация процессов в Zircon вовлекает компоненты LK для работы с памятью и потоками. В Zircon также поддерживаются такие отсутствующие в LK возможности, как уровень пользователя, система обработки объектов и модель обеспечения безопасности на основе capability. В свою очередь поверх Zircon реализован слой Garnet, предоставляющий драйверы устройств, и Topaz с интерфейсом для создания модулей-расширений.

Проектом Fuchsia также развиваются фреймворк для построения интерфейсов пользователя Peridot, пакетный менеджер Fargo, стандартная библиотека libc, система рендеринга Escher, Vulkan-драйвер Magma, композитный менеджер Scenic, файловые системы MinFS, MemFS, ThinFS (FAT на языке Go) и Blobfs. Для обеспечения безопасности предлагается продвинутая система sandbox-изоляции (новые процессы не имеют доступа к объектам ядра, не могут выделять память и не могут запускать код, а для доступа к ресурсам применяется система пространств имён, определяющая доступные полномочия). Наработки проекта поставляются под лицензиями BSD MIT и Apache 2.0.

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

  1. OpenNews: Для развиваемой в Google ОС Fuchsia подготовлен графический интерфейс Armadillo
  2. OpenNews: Google развивает новую операционную систему Fuchsia
  3. OpenNews: Google планирует осуществить слияние Chrome OS и Android
  4. OpenNews: Компания Oracle выиграла апелляцию в деле против Google, связанном с Java и Android
  5. OpenNews: Microsoft согласовал условия сделки о покупке GitHub
Обсуждение (141 +11) | Тип: К сведению |
19.07.2018 Доступен сборочный инструментарий Qbs 1.12, развиваемый проектом Qt (12 +4)
  Опубликован релиз развиваемого проектом Qt сборочного инструментария Qbs 1.12 (Qt Build Suite), который заменит qmake в Qt 6. Для сборки Qbs в качестве зависимости требуется Qt, хотя сам Qbs рассчитан на организацию сборки любых проектов. Qbs использует упрощённый вариант языка QML для определения сценариев сборки проекта, что позволяет определять достаточно гибкие правила сборки, в которых могут подключаться внешние модули, использоваться функции на JavaScript и создаваться произвольные правила сборки.

Используемый в Qbs язык сценариев адаптирован для автоматизации генерации и разбора сценариев сборки интегрированными средами разработки. Кроме того, Qbs не генерирует make-файлы, а сам, без посредников, таких как утилита make, контролирует запуск компиляторов и компоновщиков, оптимизируя процесс сборки на основе детального графа всех зависимостей. Наличие изначальных данных о структуре и зависимостях в проекте позволяет эффективно распараллеливать выполнение операций в несколько потоков. Для крупных проектов, состоящих из большого числа файлов и поддиректорий, производительность повторной пересборки с использованием Qbs может опережать make в разы - пересборка выполняется почти мгновенно и не заставляет разработчика тратить время на ожидание.

В новой версии:

  • Для упрощения оформления библиотек для применения в сторонних проектах реализованы два новых модуля: Exporter.qbs для создания qbs-модуля для итогового продукта и Exporter.pkgconfig для генерации файла ".pc" с метаданными pkgconfig. Указанные файлы включают информацию, необходимую для сборки сторонних проектов с предоставляемой библиотекой (например, в случае применения Exporter.qbs для использования библиотеки в другом qbs-проекте достаточно определить зависимость 'Depends { name: "mylib" }');
  • В утилиту qbs-config добавлен новый тип настроек - системные настройки, действующие для всех пользователей (например, пути поиска исполняемых файлов и библиотек). Для манипуляции системными настройками добавлена опция "--system", применение которой возможно только при наличии прав администратора;
  • Добавлен новый тип свойств varList для списков объектов;
  • В расширении FileInfo представлены две новые функции suffix и completeSuffix;
  • В блоке Rule свойство explicitlyDependsOn больше не заимствует зависимости из других зависимостей (для выполнения данной операции предложено отдельное свойство explicitlyDependsOnFromDependencies. Для исключения путаницы свойство excludedAuxiliaryInputs переименовано в excludedInputs;
  • Свойства cLanguageVersion и cxxLanguageVersion преобразованы в массивы и могут включать более одного значения, что позволяет в разных модулях определять разные требования к версиям языка;
  • В блок AutotestRunner добавлено свойство auxiliaryInputs для проверки наличия дополнительных ресурсов, необходимых для запуска autotest;
  • Во всех командах обеспечен вывод имени продукта для всех генерируемых объектов, что может быть полезно в больших проектах, в которых присутствует несколько продуктов, содержащих файлы с одинаковыми именами;
  • Добавлена возможность генерации сборочных файлов в формате Makefiles для проектов Qbs.

  1. OpenNews: Доступен сборочный инструментарий Qbs 1.11, развиваемый проектом Qt
  2. OpenNews: Разработчик языка XL опубликовал новую сборочную систему build
  3. OpenNews: Доступна система сборки Meson 0.42, на которую переходят systemd, GTK+ и GNOME
  4. OpenNews: Релиз генератора файлов сборки GNU Automake 1.16
  5. OpenNews: Релиз системы сборки CMake 3.12
Обсуждение (12 +4) | Тип: Программы |
19.07.2018 В ночные сборки Firefox добавлен WebRender, использующий GPU для отрисовки web-страниц (71 +9)
  В ночные сборки Firefox, которые лягут в основу выпуска Firefox 63, в качестве временного эксперимента интегрирована система композитинга Servo WebRender, написанная на языке Rust и выносящая на плечи GPU операции отрисовки содержимого страницы. При включении WebRender вместо встроенной в движок Gecko системы композитинга, обрабатывающей данные при помощи CPU, для выполнения операций сводной отрисовки элементов страницы используются шейдеры, выполняемые в GPU, что позволяет добиться существенного увеличения скорости отрисовки.

Новая система будет предложена для тестирования ограниченному числу пользователей ночных сборок, использующих видеокарты NVIDIA и ОС Windows 10. WebRender будет включен для 50% пользователей ночных сборок Firefox, удовлетворяющих вышеотмеченным критериям. Для активации независимо от попадания в группу тестирования в about:config можно выставить переменную "gfx.webrender.all.qualified" в значение "true". Для получения статистики в процессе тестирования будет применяться система Shield Studies, при помощи которой на серверы Mozilla будут отправлены метаданные, позволяющие провести сравнительную оценку частоты крахов у пользователей с включённым WebRender и без него.

В зависимости от результатов тестирования, если отклонение по числу крахов не превысит 5-10% и не всплывут неожиданные регрессивные изменения, будет составлен план интеграции WebRender в основной состав браузера, иначе код будет отправлен на доработку (например, при включении WebRender уже выявлены повышение нагрузки на CPU при просмотре видео на YouTube, снижение FPS при обработке WebGL и проблемы с отрисовкой изображений, встроенных в HTML/CSS).

  1. OpenNews: План развития функциональности Firefox на 2018 год
  2. OpenNews: Релиз Firefox 58
  3. OpenNews: Проект Mozilla представил Quantum, комбинированный браузерный движок для Firefox
  4. WebRender newsletter
  5. OpenNews: Тестирование DNS over HTTPS в Firefox может привести к утечке данных об открываемых сайтах
Обсуждение (71 +9) | Тип: К сведению |
19.07.2018 Выпуск cистемы управления контейнерной виртуализацией Docker 18.06 (48 +4)
  Подготовлен релиз инструментария для управления изолированными Linux-контейнерами Docker 18.06, предоставляющего высокоуровневый API для манипуляции контейнерами на уровне изоляции отдельных приложений. Docker позволяет, не заботясь о формировании начинки контейнера, запускать произвольные процессы в режиме изоляции и затем переносить и клонировать сформированные для данных процессов контейнеры на другие серверы, беря на себя всю работу по созданию, обслуживанию и сопровождению контейнеров. Инструментарий базируется на применении встроенных в ядро Linux штатных механизмов изоляции на основе пространств имён (namespaces) и групп управления (cgroups). Код Docker написан на языке Go и распространяется под лицензией Apache 2.0.

Дополнительно объявлено о грядущих изменениях в процессе разработки выпусков Docker Community Edition (CE). Стабильные выпуски (CE Stable) теперь будут формироваться не раз в квартал, а два раза в год, что позволит синхронизировать разработку с такими дистрибутивами, как Ubuntu и Fedora. Для повышение качества стабильных выпусков перед релизом кроме кандидата в релизы будут тестироваться дополнительные бета выпуски.

С целью оперативного доведения новых возможностей до пользователей вместо промежуточных ежемесячных выпусков (CE Edge) будет предоставлен канал nightly с обновляемыми раз в день ночными сборками. Docker 18.06 станет последим выпуском с четырёхмесячным временем сопровождения, а следующий релиз Docker 18.09 будет поддерживаться 7 месяцев. Следом за Docker 18.09 будет сформирован релиз Docker 19.03.

Из функциональных изменений в новом выпуске выделяется реализация нового экспериментального сборочного бэкенда (обеспечивает функциональность команды "docker build") - BuildKit, для активации которого следует установить переменную окружения DOCKER_BUILDKIT=1. Новый бэкенд использует расширяемую модульную архитектуру, поддерживает распараллеливание процесса разрешения зависимостей в несколько потоков, эффективно использует кэширование инструкций и результатов импорта/экспорта, жестко не привязан к формату файлов Dockerfile (могут подключаться обработчики для любых форматов), автоматически выполняет операции сборки мусора, поддерживает вложенный запуск работ, может вызывать распределённые обработчики и не требует в процессе работы полномочий пользователя root.

Из других изменений можно отметить:

  • Улучшение интеграции с системой оркестровки контейнеров Kubernetes: поддержка фильтров сервисов стека, улучшенная обработка пространств имён, поддержка нового Stack API, снятие флага экспериментальной разработки с команд Kubernetes;
  • Поддержка экспорта операций Push и Save;
  • В команду "docker service create" добавлена опция "--init";
  • Добавлена возможность активации экспериментальных возможностей CLI через переменную окружения DOCKER_CLI_EXPERIMENTAL;
  • Обновлены Cobra и pflag;
  • Клиентский API расширен возможность определения пользовательских HTTP-запросов;
  • Добавлена возможность ведения логов awslogs в неблокирующем режиме;
  • Налажен процесс сборки на платформе OpenBSD.

  1. OpenNews: Из каталога Docker Hub удалено 17 образов контейнеров с вредоносным кодом
  2. OpenNews: Выпуск cистемы управления контейнерной виртуализацией Docker 17.06
  3. OpenNews: Docker представил Moby и LinuxKit для построения произвольных систем контейнерной изоляции
  4. OpenNews: 11% актуальных образов в репозиториях Docker содержат опасные уязвимости
  5. OpenNews: В Docker 1.12.6 устранена уязвимость, позволяющая выбраться из контейнера
Обсуждение (48 +4) | Тип: Программы |
18.07.2018 Выпуск интегрированной среды разработки Qt Creator 4.7.0 (47 +14)
  Представлен выпуск интегрированной среды разработки Qt Creator 4.7.0, предназначенной для создания кроссплатформенных приложений с использованием библиотеки Qt. Поддерживается как разработка классических программ на языке C++, так и использование языка QML, в котором для определения сценариев используется JavaScript, а структура и параметры элементов интерфейса задаются CSS-подобными блоками.

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

Код построителя обновлён до версии Clang 6.0 и теперь поддерживает некоторые новые возможности будущего стандарта C++20. В интерфейс добавлены опции для выбора применения Clang-Tidy или Clazy для проверки кода в процессе редактирования. В режиме отладки добавлена возможность проверки всего кода проекта (Analyze > Clang-Tidy или Clazy). Выявленные анализатором модели кода ошибки и предупреждения теперь дополнительно могут отображаться в панели Issues.

В редакторе кода при нахождении текстового курсора на коде внутри тестовых функций при помощи новой опции "Run Test Under Cursor" теперь можно сразу запустить отдельный тест. В случае выявления проблем при выполнении теста, их местоположение сразу подсвечивается в редакторе. Добавлена поддержка фильтров для Google Test.

Опции механизма комплектов (Kit), позволяющих задействовать собственные инструментарии без необходимости создания для них специальных плагинов, теперь вынесены в отдельную первичную секцию настроек. В настройки (Environment > Interface) также добавлена возможность управления применением автоматического масштабирования на экранах с высокой плотностью пикселей (HiDPI).

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

  1. OpenNews: Начальный план разработки Qt 6
  2. OpenNews: Выпуск Qt for Python 5.11
  3. OpenNews: Релиз фреймворка Qt 5.11
  4. OpenNews: Выпуск десктоп-окружения LXQt 0.13
  5. OpenNews: Выпуск интегрированной среды разработки Qt Creator 4.6.0
Обсуждение (47 +14) | Тип: Программы |
18.07.2018 Евросоюз оштрафовал Google на 4.3 млрд евро за навязывание своих сервисов в Android (187 +39)
  Европейская комиссия признала применяемые компанией Google методы продвижения своих сервисов в платформе Android нарушающими антимонопольное законодательство Евросоюза и наложила штраф в размере 4.3 миллиарда евро (5 миллиардов долларов). Это крупнейший штраф, выписанный IT-компании, в истории антимонопольных разбирательств. Помимо штрафа компании Google предписано устранить выявленные нарушения в течение 90 дней, в противном случае будет начислен дополнительный штраф в размере до 5% от ежедневного совокупного оборота компании. Компания Google не согласилась с решением Еврокомиссии и заявила о намерении подать апелляцию.

Google вменяется злоупотребление доминирующим положением платформы Android для навязывания своих поисковых сервисов и браузера Chrome в форме, ущемляющей конкурирующие продукты, а также создание препятствий для поставки сторонних ответвлений Android на производимых устройствах. Нарушением антимонопольного законодательства признаны следующие действия Google:

  • Для предоставления производителю оборудования лицензии на доступ к каталогу-магазину приложений Play Store компания Google требовала предустановки приложения Google Search и браузера Chrome;
  • Google платил некоторым крупным производителям смартфонов и операторам мобильных сетей за эксклюзивную поставку в прошивках только поискового сервиса Google;
  • Google запрещал производителям предустанавливать набор приложений для доступа к сервисам Google в случае установки на устройствах прошивок на базе альтернативных сборок платформы Android (форков Android), официально не одобренных Google.

По мнению антимонопольного комитета указанные действия позволили поисковому сервису Google занять доминирующее положение на рынке поиска на мобильных устройствах и блокировать продвижение конкурирующих поисковых систем. Аналогично, в заведомо невыгодное положение были поставлены альтернативные web-браузеры для мобильных систем, что дало возможность мобильному варианту браузера Chrome занять лидирующее положение на рынке.

Антимонопольное разбирательство было инициировано в ответ на поданную в 2013 году жалобу от коалиции FairSearch, основанной Microsoft, Nokia и Oracle. Интересно, что изначально FairSearch пыталась преподнести в качестве основного аргумента о нечестной конкуренции бесплатное распространение Android в виде свободного ПО. Указывалось, что имеет место поставка продукта по цене ниже себестоимости, что не позволяет компаниям, поставляющим проприетарные системы, развивать конкурирующие решения. Антимонопольный комитет не согласился с данными доводами, но признал претензии относительно навязывания сервисов и браузера.

  1. OpenNews: Cуд оштрафовал разработчика открытого проекта за использование стороннего кода для обхода DRM
  2. OpenNews: Microsoft оштрафован на 732 млн долларов за нарушение соглашения о выборе web-браузеров в Windows
  3. OpenNews: Евросоюз наложил на Microsoft штраф в 860 млн евро за создание препятствий в обеспечении совместимости
  4. OpenNews: Компания Oracle оштрафована за нарушение условий публикации результатов TPC-тестов
  5. OpenNews: SCO оштрафован за клевету в адрес Linux
Обсуждение (187 +39) | Тип: Тема для размышления |
17.07.2018 Для Linux представлена файловая система TxFS с поддержкой ACID-транзакций (99 +38)
  Группа исследователей из Техасского университета в Остине разработала новую файловую систему TxFS, предоставляющую встроенную поддержку транзакций, удовлетворяющих требованиям ACID (атомарность, согласованность, изолированность, надежность). Код ФС доступен только в виде модифицированных исходных текстов ядра Linux 3.18, патчей для других версий пока нет.

TxFS даёт возможность выполнить атомарное применение сразу группы операций над файлами. Например, в рамках изолированной транзакции можно выполнить несколько операций записи в разные файлы, а затем атомарно применить все накопленные изменения, используя синтаксис begin/commit, похожий на транзакции в СУБД. Или можно откатить все внесённые в разные файлы изменения в случае, если в процессе обработки данных были выявлены какие-то проблемы.


   ret = fs_tx_begin();
   fd1 = open("file1.txt", O_RDWR | O_APPEND, 0644);
   fd2 = open("file2.txt", O_RDWR | O_APPEND, 0644);
   write(fd1, "foo\n", 4);
   write(fd2, "bar\n", 4);
   ret = fs_tx_commit(); // или fs_tx_abort() для отмены транзакции

ФС TxFS построена поверх штатной инфраструктуры журналирования jbd2 (Journaling block device) и файловой системы Ext4. Производительность системы сопоставима с производительностью обычной файловой системы Ext4. Реализация достаточно компактная и включает в себя всего 5200 строк кода, из которых 1300 составляет внутренний код (разрешение конфликтов, реализация системных вызовов), 1600 - изменения в VFS, 900 - изменения кода журналирования JBD2, 1200 - изменения в ext4 и 200 - изменения кода управления памятью. Помимо кода для расширения ext4 и jbd2 все остальные компоненты универсальны и в будущем могут быть использованы для адаптации TxFS для других ФС, таких как ZFS.

API для управления транзакциями реализован через надстройку над тремя новыми системными вызовами, обеспечивающими открытие, фиксацию и отмену транзакций. В настоящее время подготовлены порты SQLite и Git, использующие TxFS для обеспечения гарантированной устойчивости к сбоям. Благодаря упрощению логики обеспечения атомарности в приложениях и сокращению числа сбросов буферов через fsync(), порт SQLite на базе TxFS показал в тесте TPC-C увеличение производительности в 1.6 раза. Пропускная способность приложения Android Mail при использовании порта SQLite возросла в 2.3 раза. Порт Git продемонстрировал существенное увеличение надёжности и способность предотвращать повреждения данных и нарушения целостности при сбоях во время выполнения операций с репозиторием.

  1. OpenNews: Компания Alibaba открыла код P2P-системы доставки файлов Dragonfly
  2. OpenNews: Инженеры из Google представили глобальную файловую систему Upspin
  3. OpenNews: Представлена LittleFS, компактная файловая система для встраиваемых устройств
  4. OpenNews: Первый выпуск файловой системы Zbox
  5. OpenNews: Значительное обновление файловой системы Bcachefs
Обсуждение (99 +38) | Тип: Программы |
17.07.2018 Релиз системы сборки CMake 3.12 (22 +7)
  Доступен релиз кроссплатформенного открытого генератора сценариев сборки CMake 3.12, выступающего в качестве альтернативы Autotools и используемого в таких проектах, как KDE, LLVM/Clang, MySQL, MariaDB, ReactOS и Blender. Код CMake написан на языке C++ и распространяется под лицензией BSD.

CMake примечателен предоставлением простого языка сценариев, средствами расширения функциональности через модули, минимальным числом зависимостей (нет привязки к M4, Perl или Python), поддержкой кэширования, наличием инструментов для кросс-компиляции, поддержкой генерации файлов сборки для широкого спектра систем сборки и компиляторов, наличием утилит ctest и cpack для определения сценариев тестирования и сборки пакетов, утилитой cmake-gui для интерактивной настройки параметров сборки.

Основные улучшения:

  • Команда target_link_libraries() теперь может использоваться для библиотек объектных файлов (Object Libraries);
  • В команды file(GLOB) и file(GLOB_RECURSE) добавлен флаг CONFIGURE_DEPENDS, которые позволяет обрабатывать зависимости системы сборки в процессе перебора содержимого каталогов;
  • Средства для настройки параметров компилятора (Compile Features) теперь учитывают особенности стандарта C++ 20, но набор мета-флагов "cxx_std_20" пока остаётся пустым;
  • В генераторы для Visual Studio 2017 в CMAKE_GENERATOR_TOOLSET добавлена поддержка опции "version=14.##" для явного выбора версии инструментария;
  • В режим сборки (cmake --build) добавлена опция "--parallel [jobs]" ("-j [jobs]") для определения числа параллельно запускаемых сборочных процессов;
  • Добавлена команда add_compile_definitions() для указания конструкций препроцессора, применяемых для текущего уровня иерархии каталогов;
  • В команды cmake_minimum_required() и cmake_policy(VERSION) добавлена возможность указания диапазонов версий в форме "min...max";
  • В команде find_package() обеспечена поддержка поиска префикса, указанного в параметре или переменной окружения PackageName_ROOT;
  • Добавлены новые выражения генератора "$‹GENEX_EVAL:…›", "$‹TARGET_GENEX_EVAL:target,…›", "$‹TARGET_EXISTS:…›" и "$‹TARGET_NAME_IF_EXISTS:…›";
  • В модулях FindCURL, FindALSA, FindLibXml2 и FindJPEG обеспечена установка флагов импортирования;
  • Добавлен модуль FindODBC для поиска библиотеки ODBC (Open Database Connectivity);
  • Добавлены модули FindPython, FindPython3 и FindPython2 для определения наличия окружений для выполнения скриптов на языке Python.

  1. OpenNews: Релиз системы сборки CMake 3.11
  2. OpenNews: Выпуск системы сборки GNU Make 4.2
  3. OpenNews: Выпуск системы сборки пакетов Open Build Service 2.8 с поддержкой технологии Snap
  4. OpenNews: Доступна система сборки Meson 0.42, на которую переходят systemd, GTK+ и GNOME
  5. OpenNews: Разработчик языка XL опубликовал новую сборочную систему build
Обсуждение (22 +7) | Тип: Программы |
16.07.2018 Mozilla, Cloudflare, Fastly и Apple работают над применением шифрования для SNI (155 +26)
  Компании Mozilla, Cloudflare, Fastly и Apple работают над новым TLS-расширением ESNI (Encrypted Server Name Indication), которое позволит передавать идентификатор запрошенного хоста в шифрованном виде. В настоящее время расширение SNI, необходимое для организации работы на одном IP-адресе нескольких HTTPS-сайтов со своими сертификатами, подразумевает передачу имени хоста на стадии согласования соединения в сообщении ClientHello, которое передаётся в открытом виде до установки шифрованного канала связи.

С одной стороны подобная особенность упрощает организацию обработки запросов на http-серверах и позволяет использовать прокси и CDN-сети для проброса шифрованного трафика, но с другой стороны раскрывает информацию о запрошенных ресурсах для транзитных наблюдателей, например, позволяет провайдеру судить о запрашиваемых пользователем сайтах и выборочно фильтровать трафик. До недавнего времени CDN-сети Amazon и Google предоставляли возможность скрытия имени хоста при помощи техники "domain fronting", позволявшей обращаться по HTTPS с указанием в SNI фиктивного хоста и фактической передачей имени запрашиваемого хоста в HTTP-заголовке Host внутри TLS-сеанса (данная возможность позволяла использовать CDN для обхода блокировок и весной была отключена).

Поддержка начальной черновой спецификации ESNI уже реализована в библиотеках BoringSSL (используется в Chromium), NSS (используется в Firefox) и picotls (используется в http-сервере h2o). При использовании ESNI имя хоста (поле server_name) также передаётся в ClientHello, но в зашифрованном виде. Для шифрования используется секрет, вычисленный на основе ключей сервера и клиента. Для расшифровки перехваченного или полученного значения поля ESNI необходимо знать закрытый ключ клиента или сервера (плюс открытые ключи сервера или клиента). Информация об открытых ключах передаётся для серверного ключа в DNS с использованием TXT-поля "_esni", а для клиентского ключа в сообщении ClientHello. Расшифровка также возможна при помощи согласованного в процессе установки TLS-соединения общего секрета, известного только клиенту и серверу. Для скрытия обращения к DNS клиентом может применяться DNS-over-HTTPS или DNS-over-TLS.

  1. OpenNews: Let's Encrypt опубликовал описание атаки и план по устранению проблемы
  2. OpenNews: TLS 1.3 получил статус предложенного стандарта
  3. OpenNews: Cloudflare ввёл в строй DNS-резолвер в форме скрытого сервиса Tor
  4. OpenNews: В следующем выпуске Android появится поддержка "DNS over TLS"
Обсуждение (155 +26) | Тип: К сведению |
16.07.2018 Оценка безопасности новой системы контейнерной изоляции Nabla (11 +9)
  Джеймс Боттомли (James Bottomley), известный разработчик ядра Linux, входивший в координационный технический комитет Linux Foundation, опубликовал результаты анализа безопасности различных систем контейнерной изоляции, включая традиционные контейнеры Docker, недавно представленную систему Nabla, нацеленную на минимизацию выполняемых в основном ядре системных вызовов, и гибридные системы gVisor и Kata Containers с изоляцией на базе гипервизоров.

Для каждого типа систем оценивался уровень защищённости от совершения горизонтальных атак (HAP, Horizontal Attack Profile), при которых брешь в одном из базовых слоёв (например, в ядре Linux или гипервизоре) может привести к полной компрометации всей инфраструктуры и получению контроля за корневым окружением и всеми запущенными контейнерами. Уровень безопасности HAP зависит от объёма привилегированного кода, который вызывается в процессе работы той или оной системы контейнерной изоляции или виртуализации. Чем меньше привилегированного кода вовлечено в выполнение контейнера тем выше безопасность всей системы, так как сокращается число потенциальных векторов для атак и уменьшается вероятность присутствия уязвимостей.

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

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

В Nabla используется только 9 системных вызовов, а вся основная функциональность, включая TCP/IP стек и код файловых систем, реализована в виде работающего в пространстве пользователя unikernel, не привязанного к ядру ОС и системным библиотекам. Данную систему можно рассматривать как аналог проектов для запуска приложений поверх гипервизора, но вместо гипервизора Nabla использует обычные механизмы контейнерной изоляции с жесткой блокировкой доступа к системным вызовам при помощи фильтров seccomp.

В качестве основы в окружениях Nabla задействованы наработки открытого компанией IBM проекта Solo5, предоставляющего изолированное окружение для запуска произвольных unikernel, в том числе развиваемых проектами Rump, MirageOS и IncludeOS. Вся необходимая системная функциональность прикрепляется к приложению во время сборки. Среди протестированных приложений Nginx, Python, Redis и Node.js, для которых подготовлены типовые образы контейнеров. Для запуска контейнеров применяется runtime runnc (переработанный runc), интегрируемый с инструментарием Docker и совместимый со спецификацией OCI (Open Container Initiative).

Для анализа безопасности была проведена оценка охвата привилегированного кода, который вовлекается при выполнении изолированных окружений. В частности, было посчитано число уникальных функций ядра, которые были вызваны в процессе работы окружений с Redis, Python и Node.js. Для контейнеров при помощи ftrace учитывалось число выполненных системных вызовов, а для систем виртуализации число гипервызовов и обращений к бэкендам, выполняемым на стороне kvm vhost или Xen dom0.

В результате в Nabla было зафиксировано в 2-3 раза меньше вызовов по сравнению с другими механизмами изоляции, в том числе по сравнению с gVisor (используется собственное мини-ядро на языке Go, предоставляющее необходимые системные вызовы) и Kata Containers (применяется урезанный вариант обычного ядра Linux).

Измерение производительности тестовых заданий на базе Redis, Python и Node.js показало, что показатели конетейнеров Nabla сравнимы с Kata Containers и отстают от Docker на 10-30%. Узким местом Nabla стала реализация сетевого стека в пространстве пользователя. При использовании конфигурации с оркестровкой контейнера напрямую (nabla-raw) без сетевого взаимодействия, производительность Nabla достигла уровня Docker. Низкая производительность gVisor объясняется большими накладными расходами при использовании ptrace и гипервызовов (gVisor-kvm) для привязки системных вызовов к изолированному окружению.

  1. OpenNews: Google открыл gVisor, гибрид системы виртуализации и контейнеров
  2. OpenNews: Выпуск MirageOS 2.5, платформы для запуска приложений поверх гипервизора
  3. OpenNews: В рамках проекта IncludeOS развивается ядро для обособленного запуска C++-приложений
  4. OpenNews: Компании Intel и Hyper представили проект Kata Containers
  5. OpenNews: Выпуск Kata Containers 1.0 с изоляцией на основе виртуализации
Обсуждение (11 +9) | Тип: К сведению |
15.07.2018 Выпуск Latte Dock 0.8, альтернативной панели для KDE (43 +20)
  Состоялся релиз панели Latte Dock 0.8, предлагающей элегантное и простое решение для управления задачами и плазмоидами. В том числе поддерживается эффект параболического увеличения пиктограмм в стиле macOS или панели Plank. Панель Latte построена на базе фреймворка KDE Plasma и требует для работы Plasma 5.12, KDE Frameworks 5.38 и Qt 5.9 или более новые выпуски. Код проекта распространяется под лицензией GPLv2. Установочные пакеты сформированы для Ubuntu, Debian, Fedora и openSUSE.

Проект основан в результате слияния схожих по своим задачам панелей - Now Dock и Candil Dock. После объединения разработчики попытались совместить предлагаемый в Candil принцип формирования обособленной панели, работающей отдельно от Plasma Shell, со свойственными Now Dock качественным оформлением интерфейса и использованием только библиотек KDE и Plasma без сторонних зависимостей.

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

  • Появилась возможность одновременного использования нескольких раскладок панели, что позволяет привязать к разным комнатам (activities) принципиально разные способы компоновки панели, например, в одной комнате отображать панель сбоку в стиле Unity, а в другой комнате в форме нижней строки в стиле Plasma;



  • Улучшен механизм динамического отображения фона окон - во время перемещения или изменения размера окон теперь автоматически фон окна становится полупрозрачным для более удобного позиционирования с учётом другого содержимого на рабочем столе;
  • Добавлен унифицированный механизм горячих клавиш для апплетов и задач (для всех элементов на панели теперь применяются общие номера быстрого вызова);
  • В каталог store.kde.org добавлена возможность загрузки раскладок панели для Latte Dock, подготовленных представителями сообщества. Содержимое каталога можно просмотреть непосредственно из конфигуратора панели;
  • Обеспечена более плавная анимация изменений при конфигурировании панели;
  • В режим редактирования пользователю предоставлена возможность выбора произвольных фоновых изображений для панели;
  • Добавлен новый виджет с реализацией разделителя, позволяющего более явно визуально отделить друг от друга задачи в панели;
  • В конфигуратор добавлены новые настройки: возможность блокировки раскладок панели для запрета внесения изменений и режим скрытия границ (Borderless) при раскрытии окна на весь экран;
  • Во вкладке настройки задач пользователь теперь может отключить группировку идентичных программ;
  • В настройки добавлены две новые секции Active Indicator для настройки стиля индикатора активной задачи и Glow для настройки характера подсветки значка активной задачи;
  • Добавлена возможность смены режима панели в один клик;
  • Для людей с ослабленным зрением реализована возможность вывода более крупных меток на значках;
  • Добавлена возможность выбрать раскладку панели через контекстное меню при использовании менеджера задач Plasma;
  • Добавлены опции командной строки для манипуляции базовыми настройками панели (например, "--layout" для выбора раскладки, "--available-layouts" для просмотра доступных раскладок и "--import-layout" для импорта раскладки);
  • Улучшена поддержка Wayland. Разработчик Latte Dock теперь использует панель в окружении на базе Wayland в своей повседневной работе.

  1. OpenNews: Выпуск Latte Dock 0.7, альтернативной панели для KDE
  2. OpenNews: Выпуск Dock Panel 0.3, альтернативной панели для KDE
  3. OpenNews: Выпуск панели LXPanel 0.9.0
  4. OpenNews: Новые версии панели Xfce 4.12.2 и 4.13.2
  5. OpenNews: Выпуск панели Dash to Dock 63
Обсуждение (43 +20) | Тип: Программы |
13.07.2018 Релиз гипервизора Xen 4.11 (35 +16)
  После семи месяцев разработки состоялся релиз свободного гипервизора Xen 4.11. По сравнению с прошлым выпуском в Xen 4.11 внесено 1206 изменений. В разработке нового выпуска приняли участие такие компании, как Citrix, SUSE, ARM, AMD, Intel, Amazon, Google, Oracle, EPAM Systems, Huawei, DornerWorks и Qualcomm.

Ключевые изменения в Xen 4.11:

  • Продолжена работа по усовершенствованию ABI-интерфейса PVH, комбинирующего элементы режимов паравиртуализации (PV) для ввода/вывода, обработки прерываний, организации загрузки и взаимодействия с оборудованием, с применением полной виртуализации (HVM) для ограничения привилегированных инструкций, изоляции системных вызовов и виртуализации таблиц страниц памяти. Гостевые системы в режиме PVH содержат меньше критичного кода по сравнению с PV и HVM, а интерфейс между операционной системой и гипервизором значительно проще и менее подвержен атакам.

    В новом выпуске добавлена экспериментальная поддержка PVH Dom0, активируемая при вызове Xen c опцией "dom0=pvh". До сих пор запуск в качестве Dom0 был возможен только для гостевых систем в режиме PV. Гостевые системы в режиме HVM требуют выполнения компонентов QEMU на стороне Dom0 для эмуляции оборудования, что не позволяет использовать их как Dom0. Гостевые системы PVH не требуют для своего выполнения компонентов, помимо гипервизора, поэтому они как и гостевые системы PV могут загружаться в условиях, когда не запущено других гостевых систем, и могут выполнять функции базового окружения Dom0. Применение PVH Dom0 существенно повышает безопасность конфигураций Xen, так как по сравнению с PV позволяет исключить при работе примерно 1.5 млн строк кода QEMU. Работа PVH Dom0 пока доступна только в Linux и FreeBSD;

  • В гипервизор добавлена встроенная поддержка эмуляции конфигурации PCI, которая ранее предоставлялась через внешний обработчик из QEMU;
  • Добавлена прослойка для обеспечения запуска немодифицированных паравиртуализированных гостевых систем (PV) в окружении PVH, что позволяет обеспечить работу старых гостевых систем в более безопасных окружениях, ограниченных режимом PVH;
  • Производительность планировщиков Credit1 и Credit2 оптимизирована для работы в условиях эксклюзивной и мягкой (soft-affinity) привязки виртуальных CPU (vCPU) к физическим ядрам CPU (pCPU);
  • Добавлены новые вызовы DMOP (Device Model Operation Hypercall) для работы консоли VGA при использовании QEMU, запущенном в режиме изоляции, позволяющем защититься от атак на гипервизор в случае компрометации компонентов QEMU;
  • На системах с процессорами на базе архитектуры Skylake и новее включена поддержка расширения MBA (Memory Bandwidth Allocation), позволяющего снизить негативное влияние на систему перегруженных виртуальных машин за счёт применения системы урезания ресурсов на основе выделенного бюджета;
  • В эмулятор x86 добавлена поддержка наборов инструкций Intel AVX и AVX2, а также AMD F16C, FMA4, FMA, XOP и 3DNow;
  • В систему привязки ресурсов для гостевых систем добавлена возможность маппинга таблиц доступа к памяти (Grant table) и серверных страниц IOREQ;
  • Для систем на базе архитектуры ARM переработана поддержка VGIC и проведён рефакторинг обработчиков таблиц страниц памяти, подсистем работы с памятью и поддержки платформ big.LITTLE для упрощения сопровождения кода. Добавлена поддержка интерфейсов PSCI 1.1 (Power State Coordination Interface) и SMCCC 1.1 (Secure Monitor Call Calling Conventions);
  • Добавлены механизмы для блокирования уязвимостей в механизме спекулятивного выполнения инструкций в процессорах: для защиты от уязвиомости Meltdown добавлен механизм XPTI (эквивалент добавленной в ядро Linux техники KPTI (Kernel Page Table Isolation). Для защиты от Spectre задействованы инструции IBRS (Indirect Branch Restricted Speculation) и IBPB (Indirect Branch Prediction Barriers), а для систем без их поддержки предложена техника Retpoline. Также добавлены методы для защиты от атак Spectre 4 и Lazy FP. Для управления включением методов защиты предложена новая опция spec-ctrl;
  • В будущих выпусках ожидается стабилизация PVH Dom0, поддержка проброса PCI-устройств в гостевые системы PVH и возможность сборки PV- и HVM-версий Xen.

  1. OpenNews: Уязвимости в гипервизоре Xen
  2. OpenNews: Первый выпуск XCP-NG, свободного варианта Citrix XenServer
  3. OpenNews: Релиз гипервизора Xen 4.10
  4. OpenNews: Проект Xen представил Unikraft для выполнения приложений поверх гипервизора
  5. OpenNews: Релиз гипервизора Xen 4.9
Обсуждение (35 +16) | Тип: Программы |
13.07.2018 В популярный NPM-модуль внедрено вредоносное ПО, копирующее параметры аутентификации (50 +16)
  Администраторы репозитория NPM уведомили пользователей о компрометации пакетов eslint-scope и eslint-config-eslint, в которых поставлялся популярный анализатор JavaScript-кода, насчитывающий более 2 млн загрузок в неделю и 59 млн суммарных загрузок. В результате получения контроля за учётными данными мэйнтейнера eslint-scope злоумышленникам удалось опубликовать обновление, содержащее троянский код.

При выполнении операции установки пакета, с сайта pastebin.com загружался и запускался скрипт, который отправлял на внешний сервер содержимое файла ~/.npmrc, включающего токен для аутентификации в NPM. Данные отправлялись на серверы учёта статистики посещений "sstatic1.histats.com" и "c.statcounter.com" в составе параметра, указанного в HTTP-заголовке "Referer" (злоумышленники могли просмотреть захваченные токены через web-интерфейсы счётчиков посещений histats.com и statcounter.com).

Взлом учётной записи разработчика был произведён из-за использования одного и того же пароля на разных сайтах, на одном из которых произошла утечка базы пользователей. Сопоставив email разработчика злоумышленники смогли воспользоваться паролем для получения доступа к NPM. Троянская вставка присутствовала в версиях eslint-scope 3.7.2 и eslint-config-eslint 5.0.2.

По предварительным сведениям с момента публикации до блокировки вредоносного обновления (c 12:49 до 17:37 MSK 12 июля) злоумышленникам удалось получить токены для доступа к учётным записям примерно 4500 разработчиков. К счастью атака была оперативно пресечена и администрация NPM заблокировала все токены аутентификации, выданные до 17:30 (MSK) 12 июля. Пользователям NPM необходимо обновить свои токены повторно выполнив процедуру аутентификации на сайте npmjs.com. Для усиления защиты своих учётных записей разработчикам модулей рекомендовано включить двухфакторную аутентификацию. В промежуток времени с момента публикации вредоносного обновления до начала блокировки токенов достоверно подтверждённых попыток использования перехваченных токенов не зафиксировано.

Предполагается, что компрометация пакета eslint-scope, как правило используемого для отладки других NPM-пакетов разработчиками, была первым этапом внедрения червя, который мог использовать захваченные токены для внедрения вредоносного кода в новые модули. С учётом разветвлённой системы зависимостей в случае успеха атака могла иметь катастрофические последствия. Например, среди пользователей eslint-scope разработчики таких популярных проектов, как Yarn (48% всех загрузок в NPM), Babel (150 млн загрузок), jQuery (65 млн загрузок), CoffeeScript (50 млн загрузок). Данные пакеты используются как зависимости в тысячах других пакетов и проектов.

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

  1. OpenNews: Применение тайпсквоттинга для распространения вредоносных модулей NPM, PyPI и Gems
  2. OpenNews: Выявлена попытка включения бэкдора в популярный NPM-пакет mailparser
  3. OpenNews: Незащищённость NPM к атакам по внедрению вредоносных модулей-червей
  4. OpenNews: Сбой антиспам-системы привёл к коллапсу в репозитории NPM
  5. OpenNews: Более половины npm-пакетов могли быть скомпрометированы из-за ненадёжных паролей доступа
Обсуждение (50 +16) | Тип: Проблемы безопасности |
Следующая страница (раньше) >>


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