Сообщество - GNU/Linux

GNU/Linux

1 172 поста 15 635 подписчиков

Популярные теги в сообществе:

24

Уязвимость php-fpm, позволяющая удалённо выполнить код на сервере

Доступны корректирующие релизы PHP 7.3.11, 7.1.33 и 7.2.24, в которых устранена критическая уязвимость (CVE-2019-11043) в расширении PHP-FPM (менеджер процессов FastCGI), позволяющая удалённо выполнить свой код в системе. Для атаки на серверы, использующие для запуска PHP-скриптов PHP-FPM в связке с Nginx, уже публично доступен рабочий эксплоит.


Атака возможна в конфигурациях nginx, в которых проброс в PHP-FPM осуществляется c разделением частей URL при помощи "fastcgi_split_path_info" и определением переменной окружения PATH_INFO, но без предварительной проверки существования файла директивой "try_files $fastcgi_script_name" или конструкцией "if (!-f $document_root$fastcgi_script_name)". Проблема в том числе проявляется в настройках, предлагаемых для платформы NextCloud. Например, уязвимы конфигурации с конструкциями вида:


location ~ [^/]\.php(/|$) {

fastcgi_split_path_info ^(.+?\.php)(/.*)$;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_pass php:9000;

}


Проследить за устранением проблемы в дистрибутивах можно на данных страницах: Debian, RHEL, Ubuntu, SUSE/openSUSE, FreeBSD, Arch, Fedora. В качестве обходного метода защиты после строки "fastcgi_split_path_info" можно добавить проверку существования запрошенного PHP-файла:


try_files $fastcgi_script_name =404;


Проблема вызвана ошибкой при манипуляции с указателями в файле sapi/fpm/fpm/fpm_main.c. При присвоении указателя предполагается, что значение переменной окружения PATH_INFO обязательно содержит префикс, совпадающий с путём к PHP-скрипту. Если в директиве fastcgi_split_path_info указано разделение пути к скрипту с использованием регулярного выражения, чувствительного к передаче символа перевода строки (например, во многих примерах предлагается использовать "^(.+?\.php)(/.*)$"), то атакующий может добиться записи в переменную окружения PATH_INFO пустого значения. В этом случае далее по ходу выполнения осуществляется запись в path_info[0] нуля и вызов FCGI_PUTENV.


Запросив определённым образом оформленный URL атакующий может добиться смещения указателя path_info на первый байт структуры "_fcgi_data_seg", а запись нуля в этот байт приведёт к перемещению указателя "char* pos" на ранее идущую область памяти. Вызываемый следом FCGI_PUTENV перезапишет данные в этой памяти значением, которое может контролировать атакующий. В указанной памяти в том числе хранятся значения других переменных FastCGI и записав свои данные атакующий может создать фиктивную переменную PHP_VALUE и добиться выполнения своего кода.

Показать полностью
17

Выпуск серверной JavaScript-платформы Node.js 13.0

Доступен релиз Node.js 13.0, платформы для выполнения сетевых приложений на языке JavaScript. Одновременно завершена стабилизация прошлой ветки Node.js 12.x, которая переведена в категорию выпусков с длительным сроком поддержки, обновления для которых выпускаются в течение 4 лет. Поддержка прошлой LTS-ветки Node.js 10.0 продлится до апреля 2021 года, а позапрошлой LTS-ветки 8.0 до января 2020 года.


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


Движок V8 обновлён до версии 7.8, в которой задействованы новые методы оптимизации производительности, улучшена деструктуризация объектов, уменьшено потребление памяти и сокращено время подготовки к выполнению WebAssembly;


По умолчанию включена полная поддержка интернационализации и Unicode на базе библиотек ICU (International Components for Unicode), позволяющая разработчикам писать код, поддерживающий работу с разными языками и локалями. Модуль full-icu теперь установлен по умолчанию;


Стабилизирован API Workers Threads, позволяющий создавать многопоточные циклы обработки событий (event loop). Реализация основана на модуле worker_threads, позволяющем запускать JavaScript-код в несколько параллельных потоков. Стабильная поддержка API Workers Threads также бэкепортирована в LTS-ветку Node.js 12.x;


Повышены требования к платформам. Для сборки теперь требуется как минимум macOS 10.11 (требуется Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;


Улучшена поддержка Python 3. При наличии в системе Python 2 и Python 3, по-прежнему используется Python 2, но добавлена возможность сборки при наличии в системе только Python 3;


Удалена старая реализация HTTP-парсера ("--http-parser=legacy"). Удалены или переведены в разряд устаревших вызовы и свойства FSWatcher.prototype.start(), ChildProcess._channel, метод open() в объектах ReadStream и WriteStream, request.connection, response.connection, module.createRequireFromPath();


Следом вышло обновление 13.0.1, в котором по горячим следам устранено несколько ошибок. В том числе решена проблема с выводом в npm 6.12.0 предупреждения об использовании неподдерживаемой версии.


Напомним, что платформа Node.js может быть использована как для серверного сопровождения работы Web-приложений, так и для создания обычных клиентских и серверных сетевых программ. Для расширения функциональности приложений для Node.js подготовлена большая коллекция модулей, в которой можно найти модули с реализацией серверов и клиентов HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, модули для интеграции с различными web-фреймворками, обработчики WebSocket и Ajax, коннекторы к СУБД (MySQL, PostgreSQL, SQLite, MongoDB), шаблонизаторы, CSS-движки, реализации криптоалгоритмов и систем авторизации (OAuth), XML-парсеры.


Для обеспечения обработки большого числа параллельных запросов Node.js задействует асинхронную модель запуска кода, основанную на обработке событий в неблокирующем режиме и определении callback-обработчиков. В качестве способов мультиплексирования соединений поддерживаются такие методы, как epoll, kqueue, /dev/poll и select. Для мультиплексирования соединений используется библиотека libuv, которая является надстройкой над libev в системах Unix и над IOCP в Windows. Для создания пула потоков (thread pool) задействована библиотека libeio, для выполнения DNS-запросов в неблокирующем режиме интегрирован c-ares. Все системные вызовы, вызывающие блокирование, выполняются внутри пула потоков и затем, как и обработчики сигналов, передают результат своей работы обратно через неименованный канал (pipe). Выполнение JavaScript-кода обеспечивается через задействование разработанного компанией Google движка V8 (дополнительно Microsoft развивает вариант Node.js с движком Chakra-Core).


По своей сути Node.js похож на фреймворки Perl AnyEvent, Ruby Event Machine, Python Twisted и реализацию событий в Tcl, но цикл обработки событий (event loop) в Node.js скрыт от разработчика и напоминает обработку событий в web-приложении, работающем в браузере. При написании приложений для node.js необходимо учитывать специфику событийно-ориентированного программирования, например, вместо выполнения "var result = db.query("select..");" с ожиданием завершения работы и последующей обработкой результатов, в Node.js использует принцип асинхронного выполнения, т.е. код трансформируется в "db.query("select..", function (result) {обработка результата});", при котором управление мгновенно перейдёт к дальнейшему коду, а результат запроса будет обработан по мере поступления данных.

Показать полностью
30

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

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


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


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


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


Во встроенном браузере Morph, построенном на базе движка Chromium и QtWebEngine, реализована модель привязки настроек к отдельным доменам. Благодаря данному улучшению удалось реализовать в браузере такие возможности как сохранение выбранного уровня масштабирования для сайтов, выборочного управления доступом к данным о местоположении на уровне сайтов (для переопределния общих настроек "Always allow" или "Always deny"), запуск внешних приложений через обработчики URL (например, при клике на ссылки "tel://" можно вызывать интерфейс осуществления звонка), поддержание чёрного или белого списка запрещённых или только разрешённых ресурсов;


Клиент и сервер push-уведомлений избавлены от привязки к учётной записи пользователя в Ubuntu One. Для получения push-уведомлений теперь достаточно лишь поддержки в приложениях данного сервиса;


Улучшена поддержка устройств, поставляемых с Android 7.1. В том числе добавлены дополнительные обработчики звука, которые необходимы для при осуществлении звонков;


На смартфонах Nexus 5 решены проблемы с зависанием Wi-Fi и Bluetooth, приводящим к излишней нагрузке на CPU и быстрому разряду аккумулятора;


Решены проблемы с получением, отображением и обработкой MMS-сообщений.


Дополнительно, рассказано о состоянии портирования UBports для сматрфона Librem 5. Уже подготовлен простой экспериментальный образ на базе прототипа Librem 5 devkit. Возможности прошивки пока сильно ограничены (например, нет поддержки телефонии, передачи данных по мобильной сети и сообщений). Некоторые из проблем, например, невозможность перехода в спящий режим без Android-драйверов до окончания адаптации Unity System Compositor для поддержки Wayland через Mir, не специфичны для Librem 5, и также решаются для Pinephone и Raspberry Pi. Возобновить работу над портом для Librem 5 планируется после получения финального устройства, которое компания Purism обещала отправить в начале 2020 года.

Показать полностью
30

Samsung без Ubuntu | Провал linux on dex

Недолго мы кайфанули с Linux on Dex. Около года. И вот, буквально вчера, Samsung заявила о прекращении поддержки приложения Linux on Dex. Закончили упражнение. Звоните в гонги, вызывайте техно шаманов. Ушла эпоха, так и не начавшись. Сколько стартапов могло быть написано на планшете прямо в универе. Но нет.

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

23

Выпуск Linux-дистрибутива Pop!_OS 19.10

Выпуск Linux-дистрибутива Pop!_OS 19.10

Компания System76, специализирующаяся на производстве ноутбуков, ПК и серверов, поставляемых с Linux, опубликовала выпуск дистрибутива Pop!_OS 19.10, развиваемого для поставки на оборудовании System76 вместо ранее предлагаемого дистрибутива Ubuntu. Pop!_OS основан на пакетной базе Ubuntu 19.10 и отличается переработанным окружением рабочего стола, основанным на модифицированной оболочке GNOME Shell. Наработки проекта распространяются под лицензией GPLv3. ISO-образы сформированы для архитектуры x86_64 в вариантах для графических чипов NVIDIA и Intel/AMD (2 Гб).


Pop!_OS поставляется с оригинальной темой оформления system76-pop, новым набором пиктограмм, другими шрифтами (Fira и Roboto Slab), изменёнными настройками, расширенным набором драйверов и модифицированной оболочкой GNOME Shell. Проектом развиваются три расширения к GNOME Shell: Suspend button для изменения кнопки выключения/перехода в спящий режим, Always show workspaces для постоянного отображения эскизов виртуальных рабочих столов в обзорном режиме и Right-click для просмотра детальной информации о программе при клике на пиктограмме правой кнопкой мыши.


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

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


Добавлена утилита Tensorman для управления инструментарием Tensorflow в изолированном окружении на базе Docker. Tensorman позволяет запустить скрипты в контейнере с Tensorflow, выбирать версию для проектов и отдельных операций;


Компоненты GNOME обновлены до выпуска 3.34 c поддержкой группировки пиктограмм приложений в обзорном режиме, улучшенным конфигуратором беспроводных соединений, новой панелью выбора обоев рабочего стола и проведением работы по повышению отзывчивости интерфейса и снижению нагрузки на CPU.


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

Показать полностью
80

Компания Paragon Software открыла код драйвера с реализацией ФС exFAT

Компания Paragon Software, поставляющая лицензированные в Microsoft проприетарные драйверы NTFS и exFAT для Linux, опубликовала в списке рассылки разработчиков ядра Linux начальную реализацию нового открытого драйвера exFAT. Код драйвера открыт под лицензией GPLv2 и временно ограничен работой в режиме только для чтения. В разработке находится вариант драйвера, поддерживающий режим записи, но он ещё не готов для публикации. Патч для включения в ядро Linux прислал лично Константин Комаров, основатель и руководитель компании Paragon Software.


Компания Paragon Software приветствовала действия Microsoft по публикации общедоступных спецификаций и предоставления возможности безвозмездного использования патентов на exFAT в Linux, и в качестве своего вклада подготовила открытый драйвер exFAT для ядра Linux. Отмечается, что драйвер оформлен в соответствии с требованиями по подготовке кода для Linux и не содержит привязок к дополнительным API, что позволяет включить его в основной состав ядра.


Напомним, что в августе в экспериментальный раздел "staging" ядра Linux 5.4 ("drivers/staging/"), куда помещаются компоненты требующие доработки, уже добавлен разработанный компанией Samsung открытый драйвера exFAT. При этом добавленный драйвер основан на устаревшем коде (1.2.9), требующем доработки и адаптации к требованиям по оформлению кода для ядра. Позднее для ядра был предложен обновлённый вариант драйвера Samsung, переведённый на ветку "sdFAT" (2.2.0) и демонстрирующий существенный прирост производительности, но данный драйвер пока не принят в состав ядра Linux.


Файловая система exFAT была создана Microsoft для устранения ограничений FAT32 при использовании на Flash-накопителях большого объема. Поддержка файловой системы exFAT появилась в Windows Vista Service Pack 1 и Windows XP с Service Pack 2. Максимальный размер файла по сравнению с FAT32 был расширен с 4 ГБ до 16 эксабайт, устранено ограничение на максимальный размер раздела в 32 ГБ, для уменьшения фрагментации и увеличения скорости введена битовая карта свободных блоков, ограничение на число файлов в одной директории поднято до 65 тыс., предусмотрена возможность хранения ACL.

Показать полностью
95

GNOME предпринял меры для противостояния атаке патентного тролля

Организация GNOME Foundation рассказала о действиях, предпринятых для защиты от судебного иска, выдвинутого компанией Rothschild Patent Imaging LLC, ведущей деятельность патентного тролля. Компания Rothschild Patent Imaging LLC предложила отозвать иск в обмен на покупку лицензии на использование патента в Shotwell. Сумма лицензии выражается пятизначным числом. Несмотря на то, что покупка лицензии стала бы самым простым выходом, а судебное разбирательство потребует больших затрат и нервотрёпки, организация GNOME Foundation решила не соглашаться на сделку и бороться до конца.


Согласие поставило бы под угрозу другие открытые проекты, которые потенциально могут стать жертвами указанного патентного тролля. До тех пор пока используемый для исков патент, охватывающий очевидные и широко используемые, методы работы с изображениями, продолжает действовать, он может быть использован как оружие для осуществления других атак. Для финансирования защиты GNOME в суде и проведения работы по признанию патента недействительным (например, через доказательство фактов более раннего использования описанных в патенте технологий) организован специальный фонд "GNOME Patent Troll Defense Fund".


К защите GNOME Foundation была привлечена компания Shearman & Sterling, которая уже направила в суд три документа:


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

Ответ на иск, в котором поставлено под сомнение то, что GNOME должен выступать ответчиком на подобные иски. В документе предпринята попытка доказать, что указанный в иске патент не может быть использован для предъявления претензий к Shotwell и любому другому свободному ПО.

Встречный иск, который не позволит компании Rothschild Patent Imaging LLC ретироваться и выбрать себе менее строптивую жертву для атаки, когда поймёт серьёзность намерения GNOME бороться за признание патента недействительным.


Напомним, что GNOME Foundation вменяется нарушение патента 9,936,086 в менеджере фотографий Shotwell. Патент датирован 2008 годом и описывает технику беспроводного соединения устройства захвата изображений (телефон, web-камера) с получающим изображение устройством (компьютер) и последующей выборочной передачей изображений с фильтрацией по дате, местоположению и другим параметрам. По мнению истца для нарушения патента достаточно наличия функции импорта с камеры, возможности группировки изображений по определённым признакам и отправки изображений на внешние сайты (например, в социальную сеть или фотосервис).

Показать полностью
51

Mozilla развивает собственную систему машинного перевода

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


Разработка Bergamot ведётся в берлинском офисе Mozilla при участии исследователей из нескольких университетов Виликобритании, Эстонии и Чехии. Разработку финансирует Евросоюз в рамках гранта, полученного по программе Horizon 2020. Размер гранта составляет три миллиона евро. Проект рассчитан на три года. В Mozilla открыта вакансия специалиста по системам машинного обучения для участия в разработке движка для перевода с одного языка на другой.


Из смежных разработок, имеющих отношение к проекту Bergamot, упомянуты:


Развиваемый в Эдинбургском университете фреймворк машинного перевода Marian, построенный на базе рекуррентной нейронной сети. Фреймворк написан на языке C++, может задействовать GPU для ускорения обучения и перевода, и поставляется под лицензией MIT.


Созданный в Пражском университете инструментарий Neural Monkey для обработки информации на естественном языке с использованием методов последовательного машинного обучения. Проект применяет фреймворк TensorFlow и может использоваться для быстрого создания прототипов систем машинного перевода и классификации информации на естественном языке. Код доступен под лицензией BSD.


Подготовленный в Шеффилдском университете проект QuEst++, применяемый для оценки и прогнозирования качества систем машинного перевода.


Развиваемые в Mozilla синтезатор речи (TTS) и движок распознавания речи (Deep Speech)


Финансируемый Евросоюзом проект ParaCrawl, накапливающий базу синхронных переводов различных фраз на разных языках, которую можно использовать для тренировки систем машинного обучения. Основой проекта является бот bitextor, который индексирует многоязычные web-сайты и автоматически находит одинаковые тексты, представленные на нескольких языках. База примеров параллельных переводов формируется для 24 языков, в том числе для русского (БД для русского языка занимает 637MB в сжатом виде и включает более 12 млн примеров перевода).


Разработка Bergamot началась в январе этого года, но наработки проекта пока недоступны для публичного тестирования. Тем не менее, несколько дней назад разработчики опубликовали видео с демонстрацией начального прототипа.


Напомним, что в Firefox уже имеется встроенный механизм для перевода страниц, но он завязан на использовании внешних облачных сервисов (поддерживаются Google, Yandex и Bing) и не активирован по умолчанию (для включения в about:config следует изменить настройки "browser.translation"). Механизм перевода в том числе поддерживает автоматическое определение языка при открытии страницы на неизвестном языке и выводит специальный индикатор с предложением осуществить перевод страницы. Развиваемый в рамках проекта Bergamot прототип системы перевода использует этот же интерфейс для взаимодействия с пользователем, но вместо обращения к внешним сервисам запускается встроенный обработчик.

Показать полностью
Отличная работа, все прочитано!