С конца 2024 года некоторые владельцы сайтов на 1С-Битрикс и решениях Аспро заметили у себя на ресурсах файлы с названиями, похожими на 5af48f540ab8.php и странным содержимым. Разбираемся, чем это может грозить и как вылечить сайт.
В чем дело
Практически во всех решениях Аспро в разных технических файлах решения используется функция php unserialize, которая потенциально позволяет выполнять произвольный код. Об этом нас предупреждает документация:

Об уязвимости уже предупредили Аспро и многие хостинги в своих рассылках.


Как вылечить зараженный сайт
Если у вас не решение от Аспро, а какое-то другое или самописный сайт, но если у вас есть признаки похожего заражения, обязательно пройдите все шаги и очистите сайт. Это проблема не только шаблонов Аспро, но и любого сайта, использующего функцию unserialize.
1. Восстановить сайт из бэкапа
Если это возможно, рекомендуем откатить сайт до последней работоспособной версии. Тут важный момент: вирусы могут находиться на вашем сервере или хостинге долгое время, прежде чем вы их заметите. Возможно, придется восстанавливаться несколько раз, если в резервную копию попали зараженные файлы.
Если не делали бэкапы средствами 1С-Битрикс, проверьте наличие резервных копий на хостинге. Ну и настройте, наконец, регулярное резервное копирование.
2. Очистите сайт от подозрительных файлов
Если сайт не работает, подключитесь по ftp/sftp, проверьте вручную структуру сайта на наличие файлов с абракадаброй в названии, лишних файлов .htaccess и файлов php.ini.
Если делаете очистку самостоятельно, то алгоритм действий такой: скачиваете файл к себе, удаляете его на сервере, проверяете, работает ли сайт. Скачивать к себе нужно только для одного: если вдруг удалите что-то нужное, всегда сможете загрузить этот файл обратно на сервер. Но я настоятельно рекомендую обратиться за помощью к специалистам.
Обратите особое внимание на файлы в папках: /ajax, /include, /assets.
Если ваш сайт работает и вы можете зайти в админку, запустите проверку штатными средствами 1С-Битрикс. В новых версиях проверка находится в Настройки - Проактивная защита - Поиск троянов - Сканирование файлов.
В старых версиях нужно установить модуль "Поиск троянов", который с недавнего времени недоступен в Маркетплейс. Я выложил архив с модулем для загрузки тут. Вам останется только скачать его, распаковать в папку /bitrix/modules/, затем зайти в админке в Marketplace - Установленные решения, найти его там и установить. Затем переходите в Настройки - bitrix.xscan - Поиск (или Поиск old).
Внимание: это устаревшая версия модуля, она может найти не все подозрительные файлы, настоятельно рекомендую обновить 1С-Битрикс и пользоваться новым модулем.
3. Исправить уязвимость
Очистка сайта – это только временное решение. Если не решить проблему глобально, то сайт может быть снова заражен.
Хорошая новость: Аспро уже выпустил патчи безопасности для всех своих решений. Нужно скачать архив для своей версии шаблона, распаковать, загрузить файл fixit.php в корневую директорию сайта и зайти по адресу [ваш сайт]/fixit.php.
Внимание: не забудьте перед запуском скрипта сделать резервную копию сайта.
Если запустить скрипт не получается (или он ломает сайт), воспользуйтесь инструкцией для своего шаблона и выполните изменения вручную.
Проанализируем код, защитим от повторных взломов.
ПодробнееДополнительно я бы рекомендовал запустить поиск по всему проекту по функции unserialize. Везде, где она встречается, нужно привести её к виду:
unserialize($data); // Так плохо unserialize($data, ['allowed_classes' => false]); // Так хорошо
Вместо $data может быть любая переменная.
Особое внимание обратите на файлы reload_basket_fly.php, show_basket_fly.php, show_basket_popup.php, comp_catalog_ajax.php. Если в файлах используются функции Solution::unserialize() или CMax::unserialize – ничего исправлять не надо, в них уже все хорошо.
На форуме и многих сайтах рекомедуют в файл /bitrix/tools/upload.php добавить код:
if ($_SERVER['REQUEST_METHOD'] === 'POST') { header("Status: 404 Not Found"); die(); }
Это действительно может помочь, но вы не сможете загружать файлы (например картинки) через админку на сайт. Поэтому такое решение можно использовать только временно.
Проверьте файл /bitrix/templates/ваш_шаблон/footer.php, в конце могут быть ссылки на левые сайты.
4. Обновиться
Чем дольше оттягивается этот момент, тем сложнее будет в будущем. Поставьте себе задачу обновить 1С-Битрикс и все установленные решения до последних версий.
Важно перейти на PHP 8.2 и старше, а также обновить MySQL до актуальной версии.
Пока вы это не сделаете, так и придется вручную чистить сайт от очередной уязвимости. С обновленными версиями легче.
5. Поменяйти пароли
Замените пароли всех администраторов, поменяйте пароли на сервере. Это хорошая практика после взломов. Лишним уж точно не будет.
6. Сделайте свежий бэкап
После всех манипуляций сделайте свежую резервную копию сайта.
Заключение
Про то, какие действия можно предпринять, чтобы избежать заражения сайта мы описали в этой статье.
Актуальную информацию можно посмотреть в этой ветке форума 1С-Битрикс.
Если возникнут проблемы с восстановлением, обновлением или защитой сайта – пишите нам, поможем решить вашу проблему.