22 июня 2021 г.
Время чтения: 2 минуты

Обновлять веб-приложения нужно вовремя — об этом ещё раз напомнил взлом PHP

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

Хакеры добрались и до Git-репозитория PHP. Они изменили исходный код, чтобы создать бэкдор и управлять им. Чтобы не вызывать подозрений, киберпреступники выдавали внесённые изменения за исправление ошибок в тексте. При этом они выдали себя за разработчиков PHP.

Подробности взлома PHP

Хакеры получили доступ не к учётной записи Git отдельного пользователя, а к серверу git.php.net. А именно здесь и находились исходники PHP. После инцидента разработчики перенесли исходный код PHP на GitHub, где ранее было только зеркало.

План злоумышленников был таким: сначала получить значение заголовка HTTP_USER_AGENTT на 366 строчке, затем проверить на 368 строчке, начинается ли текст в заголовке со слова zerodium. Далее код в добавленной строке 370, где вызывается функция zend_eval_string, должен был внедрить бэкдор для выполнения кода на сайте с заражённой версией PHP.

Первый коммит обнаружился при рутинной проверке кода уже спустя часа два после его появления. Изменения сразу отменили. Но затем в репозиторию добавился второй коммит, который отменил предыдущее изменение и возвратил изменение хакеров. Эта атака тоже была отражена. Взлом повлиял на ветки разработки для версии PHP 8.1 (ожидается, что она будет выпущена в конце 2021 года).

Возможные последствия взлома PHP

Если действия злоумышленников остались бы незамеченными, коммит направился бы дальше по разным источникам, попал бы и в официальные репозитории. А когда разработчики обновили бы PHP и запустили свои сервисы на последней версии, и появилась бы возможность отправления на сервер с последней версией PHP любого запроса. В него можно включить заголовок с именем HTTP_USER_AGENTT. Значением может быть любой PHP-код.

При добавлении строки, в начале которой стоит слово zerodium, происходит следующее: 1. PHP-код извлекает бинарный файл по ссылке. 1. Бинарный файл отправляется в папку /tmp и запускается. 1. Данный бинарный файл извлекает другой бинарный файл с кодом, который позволяет хакерам получить доступ к операционной системе.

Таким способом киберпреступники могли бы навредить каждому серверу с PHP-приложением.

Туманное будущее PHP

Сейчас PHP использует около 79% сайтов, и эта цифра понемногу снижается. Некоторые новые проекты пишут на этом языке, однако его во многом превосходят C#, Python, Java и другие аналоги. Тут многое зависит от целей пользователя — PHP используют для разработки быстрого MVP, особенно когда бюджет ограничен.

PHP применяется для поддержки legacy-кода и CMS. Но для создания микросервиса разработчики вряд ли выберут PHP. Каких-то особых плюсов у этого языка нет, а вот минусы легко найти. Например, то, что Xdebug для отладки PHP-скриптов даёт лишнюю нагрузку на сервер и забирает ресурсы VPS.

Программисты недовольны тем, что язык имеет неудачный синтаксис, не отличается последовательностью и логичностью. Кроме того, PHP узкопрофильный — он заточен под web и не подходит для создания десктопных приложений или системных компонентов. У него есть проблемы и с безопасностью.

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

Постоянные клиенты: почему они важны и как их удержать

30 важных инструментов для фронтенда. Часть 1

Рекомендуем

Домен .SALE: как купить его за 790 ₽ и для каких сайтов использовать

Защита PHP-сайта: зачем подключать услугу «Антивирус для PHP-сайтов» на хостинге

Нашли ошибку в тексте? Выделите ее и нажмите Ctrl + Enter
© Джино, 2003–2024. «Джино» является зарегистрированным товарным знаком.
Лицензия на телематические услуги связи № 150549 от 09.03.2017.
Правовая информация Политика конфиденциальности Карта сайта