Обновлять веб-приложения нужно вовремя — об этом ещё раз напомнил взлом 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 теряет свои позиции, и его постепенно вытесняют другие языки.