Выявлена уязвимость PHP 7, которая помогает перехватывать контроль над NGINX-серверами

    image

    Эксперты обнаружили в ветке PHP 7 уязвимость CVE-2019-11043, которая позволяет хакерам выполнять команды на сервере с помощью специально сформированного URL с добавлением '?a='.

    Данный баг активно применяется при атаках, так как его просто эксплуатировать. Проблему усугубило то, что в октябре на GitHub появился PoC-код для определения уязвимых серверов. Он отправляет специально сформированные запросы, чтобы выяснить, уязвим ли тот или иной сервер. При этом атаки возможны только в отношении NGINX-серверов с включенным PHP-FPM (программным пакетом для обработки скриптов на языке PHP).

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

    image

    «С помощью специально сформированного URL атакующий может добиться смещения указателя path_info на первый байт структуры _fcgi_data_seg. Запись нуля в этот байт приведет к перемещению указателя `char* pos` на ранее идущую область памяти, вызываемый следом FCGI_PUTENV перезаписывает некоторые данные (включая другие переменные ast cgi)», — так описана уязвимость. То есть, хакер может создать фиктивную переменную PHP_VALUE fcgi и добиться выполнения кода.

    Для данной уязвимости уже выпустили патч. Пользователям рекомендовали обновиться до новейших версий PHP 7.3.11 и PHP 7.2.24. Для тех, кто не может обновиться, представлена инструкция с использованием стандартной утилиты брандмауэра.

    Ранее сообщалось об обнаружении вредоносной программы Spidey Bot, которая использует легитимный клиент Discord для Windows как средство для шпионажа и кражи информации. Spidey Bot добавляет вредоносный JavaScript, который способен использовать команды Discord API, чтобы собирать данные о пользователе. Затем вся информация передается злоумышленнику через веб-хук Discord.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 30

      +6
      Мало того, что новости пять дней, так ещё и журналиста опять изнасиловали:
      Для тех, кто не может обновиться, представлена инструкция с использованием стандартной утилиты брандмауэра.
      Стандартной для кого, для ModSecurity? Или WallArm? Тут даже не надмозг, тут просто не подумали.
        +4

        Использующие /etc/nginx/snippets/fastcgi-php.conf из Debian, существующий с 2014-го года, проблеме не подвержены.

          0
          Nextcloud/Owncloud, к примеру, не инклудит этот сниппет по умолчанию, и не проверяет наличие существования файла в дефолтной конфигурации фронта.
            0
            Хм. В дефолтной конфигурации есть проблема?
              0
              Некстклауда? Да.
              Конфигурации из коробки подразумевают собственные настройки для FastCGI, где нет проверки на существование скрипта при пробросе запроса.
                0
                Печаль. Пойду, потушу. Буду разбираться.
                  0
                  Я там ниткой ниже постил линк на заметку на опеннете, там можно подсмотреть, как всё зафиксить в одну строку.
                    0
                    да, видел, мы на работе тоже распространили workaround. спасибо.
                    Только мы рекомендовали из исходной переписки вариант:
                    Add this line before ALL YOUR "location ~ \.php(/|$) {" LINES in nginx confs:
                    ```
                    rewrite ^(.*?)\n $1; #Fix CVE-2019-11043 (THIS LINE!!!)
                    location ~ \.php(/|$) {
                    ...
                    fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
                    ...
                    ```

                    That will truncate PATH_INFO after "\n" while URL contains "%0a".
                      0
                      Ребята из nextcloud, кстати, разослали админам серверов сообщения о необходимости обновления и с указанием, что нужно поправить в конфигурации. Было несколько неожиданно, но приятно. Жаль, они не пытались определить тип сервера предварительно — ибо у меня был apache на этой инсталляции.
                        0
                        Да, прям приятно. Мне как раз попало в тему.
                          0
                          Да они и заметку на сайте опубликовали. Жаль только, что на 12-ой версии nextcloud с этими изменениями получаешь пустую страницу на выходе. Тут либо обновляться, либо искать другое решение.
                        0
                        чудно, в ubuntu ppa патч прилетел.
              0
              Я не понял, простите. Это же в nginx уязвимость?
                +2
                Судя по всему, это уязвимость все-таки именно в PHP, но эксплуатировать ее можно благодаря особенностям определенных конфигураций Nginx.
                  +1
                  Уязвимость в php-fpm конкретно: www.opennet.ru/opennews/art.shtml?num=51749.
                  Если интересны детали — настоятельно рекомендуется к прочтению, описано куда как более внятно.
                    0

                    В нём, но через php

                      0
                      через fastcgi, если быть точным, который используется в php-fpm
                    0
                    С 5.4 бояться нечего?
                      0
                      Ну, конкретно этой уязвимости в php 5.x нет. Но вообще на 5.4 сидеть не стоит.
                        0
                        Дык, легаси с mysql_query
                          0
                          Есть же обертка для 7.2. 1 маленький инклюд и можно дальше не апдейтить код)
                            0
                            О какой обертке с маленьким инклюдом речь?
                            0
                            А ещё htmlspecialchars стал требовать указывать третий параметр с кодировкой строки. И наверняка это не весь список изменений.
                              0
                              Да, тут обертка не сработает(
                            0
                            По-идее ректором можно автоматически переписать, если правила хорошо задать
                          0
                          На странице PoC написано по поводу PHP5:
                          Оригинал
                          The buffer underflow in php-fpm is present in PHP version 5. However, this exploit makes use of an optimization used for storing FastCGI variables, _fcgi_data_seg. This optimization is present only in php 7, so this particular exploit works only for php 7. There might be another exploitation technique that works in php 5.

                          Мой вольный перевод:
                          В PHP5 есть такая же проблема. Но данный эксплоит использует функцию для оптимизации процесса, которая есть только в PHP7. По этой причине данный эксплоит будет работать только с PHP7.
                          Но это не отменяет существования способа воспользоваться этой уязвимостью на PHP5.

                          +1

                          Существует уже давно принята практика единой точки входа в веб приложение. В своих конфигурациях всегда использую прямой путь только к index.php файлу. Это еще и защищает от соблазна создавать всякие infophp(); файлы в корне. К тому же это уже не первая уязвимость, связанная с путями в связки nginx+php-fpm.

                            +6
                            Эксплойт назвали бесхитростно. Потом журналисты скажут, что русские атакуют.
                              0
                              Уязвимость найдена в конфигурации nginx, где проброс в PHP-FPM осуществляется c разделением частей URL при помощи fastcgi_split_path_info и определением переменной окружения PATH_INFO, но без предпроверки существования файла директивой try_files $fastcgi_script_name или конструкцией if

                              Иными словами, уязвимость найдена в давно deprecated фичах родом из апача и 10+ лет назад, которые поддерживаются современным софтом только для совместимости с древними пхп-скриптами.

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                              Самое читаемое