Техническая поддержка
Безопасность веб-проектов на 1С Битрикс в 2023 году
31 июля 2023
28 июня 2022 года новостные ленты запестрели заголовками в духе «Хакеры поздравили россиян с Днем Конституции Украины через «1С-Битрикс».

Дело было в том, что многие сайты под управлением 1С-Битрикс были практически единовременно выведены из строя. Как по команде, были удалены все страницы проектов, сломана работоспособность админ-панелей, а на главных страницах вместо привычного контента оказались картинки в цветах украинского флага, и не только.

Среди пострадавших были такие организации, как «Росреестр» и «Совет по правам человека». Несколько проектов нашей студии также оказались под ударом. Специалисты нашей компании оперативно исправили последствия хакерской атаки, изучили ее «под микроскопом» и выработали алгоритмы защиты, благодаря которым следующие массовые хакерские атаки не наносили ущерба проектам наших клиентов.

В этой статье мы поделимся полученным опытом и подскажем, как правильно держать оборону в информационном поле.

Дела минувших дней

Но обо всем по порядку. За несколько месяцев до первой атаки украинских хакеров сотрудники «1С-Битрикс» неоднократно предупреждали о найденной уязвимости в одном из модулей системы и острой необходимости установить обновления. Однако не все пользователи вовремя это сделали, и получилось то, что получилось. Стоит отметить, что причины не устанавливать обновления могут быть разными, приведем самые частые ситуации:
1
Частично или полностью переписанный функционал модулей ядра 1С-Битрикс. В этом случае обновление затрет изменения в файлах ядра, что может привести к поломке важного функционала.
2
Наличие в системе необновляемых компонентов сторонних разработчиков, без которых функционал проекта невозможен.
3
Интеграция со сторонними сервисами, не поддерживающими последние версии 1С-Битрикс.
4
Нежелание оплачивать продление лицензии, без которой невозможно получить обновления.
5
Халатность системного администратора.
Если с последними двумя пунктами понятно, что делать, то первые три могут заставить растеряться специалиста, ответственного за поддержку проекта.

Например, в случае с одним из наших клиентов получилось так, что была настроена интеграция с «1С: Управление торговлей» версии 10-летней давности, которую невозможно было оперативно обновить. В случае обновления Битрикса ломался обмен заказами между Битриксом и 1С. Прежде чем обновить Битрикс, было необходимо обновить 1С, и, забегая вперед, этого не получилось сделать даже спустя год после первой атаки – очень непростая история, связанная с утерей исходных кодов, большого объема собственных доработок и глубокой интеграции устаревшей 1С в инфраструктуру компании.

На момент написания статьи 1С-Битрикс в этом проекте до сих пор не обновлен, что не мешает оставаться ему в полностью рабочем режиме.

Итак, за несколько месяцев до первой массовой атаки сотрудники компании «1С-Битрикс» предупредили о найденной уязвимости в модуле опросов и голосований пользователей «vote», в НКЦКИ (Национальный Координационный Центр по Компьютерным Инцидентам) уязвимости был присвоен номер CVE-2022-27228, и какое-то время имела статус 0-day. Уязвимость оказалась актуальной для всех редакций Битрикса, кроме «Старт», до версии 22.0.400. Чуть позже, в конце мая 2022 года, в публичном доступе появился документ, подробно описывающий различные уязвимости 1С-Битрикс, включая вышеупомянутую.

Уже спустя месяц в сети появились эксплойты (программы для проведения хакерских атак) на языке php, эксплуатирующие уязвимости из недавно опубликованного документа. В 20-ых числах июня 2022 года была произведена масштабная, но при этом незаметная, атака, результатом которой стала модификация агента с ID=1 в админ-панели Битрикса, с помощью которого стало возможным уничтожить все данные зараженных сайтов в день Х по расписанию.

Стоит отметить, что в атаке использовалась не только уязвимость CVE-2022-27228, но и комбинации других методов. Поэтому даже те проекты, у которых был своевременно удален модуль vote, подверглись атаке, с той или иной степенью успешности.

Рассмотрим более внимательно последовательность шагов атаки:

1
1. Хакерами производится POST-запрос к файлу uf.php модуля vote, который разрешал создавать экземпляр объекта с произвольным именем, что в свою очередь позволяло использовать методы-конструкторы классов ядра Битрикс, один из которых позволило модифицировать файлы ядра. Пример такого запроса можно посмотреть на скриншоте ниже:
2
Этот запрос модифицирует агента с ID=1 в ядре Битрикса, с не присущей для агентов функцией eval(). По сути – это «бэкдор» (умышленный дефект для получения несанкционированного доступа к данным), который можно использовать не только для уничтожения файлов.
3
Модифицированный агент создает вредоносный файл, который в ручном или автоматическом режиме способен на многое – дать злоумышленнику доступ к админ-панели, слить базу всех пользователей с их персональными данными, изменить стоимость всех товаров, зачистить следы и создать другие «бэкдоры», распространить заражение на посетителей сайта и т.д.

В случае с атакой июня 2022-го года «бэкдор» позволил хакерам по расписанию массово удалить весь контент зараженных сайтов и оставить после себя «поздравительную открытку» на главных страницах.
Владельцам проектов, у которых не было настроено регулярное резервное копирование данных, и попавших под полностью проведенную атаку, мы сочувствуем, так как. после такого восстановить данные невозможно.
Но даже для тех сайтов, у которых были резервные копии, откат – не панацея, потому что почти во всех случаях резервные копии уже были заражены и без зачистки деятельности эксплойта и проведения защитных мер через некоторое время снова оказывались сломанными. О способах защиты мы расскажем позже.

Ситуация в 2023 году

Конечно, та атака была громкой, пострадали тысячи проектов, был нанесен серьезный ущерб коммерческому сегменту, но благодаря сплоченному и многочисленному Битрикс-сообществу, сообща мы быстро поняли, как это произошло, что надо делать и уже через несколько дней все вернулось в привычное русло. Однако атаки на этом не закончились, и не заканчиваются до сих пор.

Помимо эксплуатации уязвимости в файле uf.php модуля vote хакеры атакуют вредоносными POST-запросами файл html_editor_action.php, который отвечает за редактирование контента в визуальном редакторе и composite_data.php, нужный для работы технологии «Композитный сайт». И если модуль vote используется редко и чаще проще отключить его, то без двух других деятельность проекта заметно усложняется.

Помимо POST-запросов в логах сервера можно было увидеть и GET-запросы. Все это свидетельствовало об эволюции эксплойтов – они становятся сложнее и хитрее. К нам часто приходили уже зараженные проекты, и клиенты даже об этом не знали. Визуально было вроде бы все хорошо, все работает, а под капотом, например, в файле /bitrix/modules/main/include/prolog.php, который подключается до всех модулей, скромно сидел замаскированный под распространенную библиотеку «JQuery» зловред, пытающийся заразить посетителей сайта. Причем он проявлял активность, только когда пользователь пришел на сайт через какую-нибудь конкретную поисковую систему, оставаясь долго незаметным для владельца, который привык заходить на свой сайт из панели закладок браузера. Такие «тихони» не менее опасны, и в каком-то смысле более коварны – из-за них сливаются бюджеты контекстной рекламы, ухудшаются позиции в поисковой выдаче, или вовсе сайт загоняется под фильтры.

И вот уже в мае 2023 прогремела очередная масштабная атака. Ее последствия и почерк были аналогичными, что и у первой, вот только подготовка у хакеров была более долгая и основательная.

  • Во-первых, они оставили в покое восстановленные, но не вылеченные сайты, зараженные еще в 2022 году.
  • Во-вторых, вместо уязвимости в uf.php преимущественно использовали файл html_editor_action.php, имеющий аналогичную проблему, и куда более часто используемый, чем uf.php .
  • В-третьих, «бэкдоры» долгое время тихо сидели внутри и не производили никакой деятельности, не привлекая к себе особого внимания. В некоторых случаях не помогало даже обновление Битрикса без последующего лечения всех уязвимых узлов системы.
Тут хотелось бы сделать небольшую ремарку и отметить, что в результате этой атаки ни один проект, обслуживаемый нашей компанией, не пострадал, благодаря заранее проведенным мерам защиты.
А какие именно это меры, читайте ниже.

Что делать, если сайт уже взломан

Восстановить файлы и базу данных из свежей резервной копии

Лучше это делать на тестовой или локальной площадке, потому что после восстановления из копии велик шанс снова попасть под атаку. Этот шаг справедлив, если успешная атака дошла до стадии постэксплуатации уязвимости, т.е. в случае с атакой украинских хакеров – удалены файлы, повреждена или уничтожена база данных, отсутствует доступ к админ-панели и т.д. Если у вас нет свежей копии, обратитесь к вашему хостинг-провайдеру – наверняка у него найдутся снапшоты всего сервера. В случае если нет никаких копий, ни старых, ни новых, то частично контент вы сможете восстановить из веб-архива (но наполнять сайт придется вручную).

Установить обновления

Установить свежие обновления 1С-Битрикс и всех сторонних модулей, обновить версию php на сервере до 8.1, обновить версию БД и программное окружение сервера. Если по каким-то причинам обновить ядро 1С-Битрикс невозможно, не отчаивайтесь, с этим можно жить; тем не менее, чем раньше вы это сможете сделать, тем лучше.

Просканировать файлы

Как показала практика, с этой задачей отлично справляется бесплатная утилита bx_scan – нужно ее установить из маркетплейса 1С-Битрикс и запустить сканирование всех файлов, предварительно удалив весь кеш. Утилита после сканирования выведет список подозрительных файлов. Особое внимание надо уделить следующим:

bx_root.php

prolog.php

prolog_before.php

prolog_after.php

xmlrpcs.php

inputs.php

l.php (в директории /bitrix/src/app/)

spread.php (в директориях /bitrix/tools/ и /bitrix/)

access.php

wp.php

term.php

locale.php

themes.php

network.php

container.php

router.php

wp-login.php

send_trait_imap.php

.cas.php

.cas.tmp.php

Имена, сгенерированные случайным образом (например, f408f2b7df70.php)
Имейте в виду, что некоторые из этих файлов нельзя удалять. Например, файлы bx_root.php, prolog.php, prolog_before.php (в зависимости от того, в какой директории располагаются) системные и необходимы для функционирования системы, но это не мешает «бэкдорам» их заражать – поэтому важно смотреть содержимое файлов. Часто вредоносный код содержит следующие конструкции:
Созданные вредоносные файлы нужно удалить, зараженные (модифицированные) – вылечить. Если при удалении файла вы не уверены, перенесите его в безопасное место и проверьте работоспособность системы.

str_rot13 (кроме файлов vuln_scanner.php, content.php, logindex.php)

md5($_COOKIE

bitrixxx

eval(base64_decode

BX_STAT

BX_TOKEN

parse_str(hex2bin

iasfgjlzcb

QlhfVE9LRU4=

gzinflate(base64_decode

C.A.S

urldecode(base64_decode(hex2bin

jquery-ui.js

Проверить всех агентов и задания в cron

Агенты располагаются на странице /bitrix/admin/agent_list.php, имя агента и его ID могут быть стандартными, а вот функция, как правило, закодирована и бросается в глаза, может содержать функцию eval().

Для организации защиты

Сменить пароли

Нужно сменить все пароли административных учетных записей, а также пароли от FTP, SSH (если используются), MySQL, обновить ключи SSH.

Проактивная защита

В редакциях 1С-Битрикс редакции «Стандарт» и выше встроены модули проактивной защиты и контроля целостности – их необходимо настроить и активировать. Также рекомендуется перевести уровень безопасности группы пользователей «Администраторы» в «Повышенный»
После выполнения всех манипуляций, описанных выше, можно утверждать с высокой долей вероятности, что сайт вылечен и можно его возвращать в публичное поле.
Иногда НКЦКИ блокирует сломанные сайты, ввиду того, что они демонстрируют запрещенную в России информацию. После проведения всех мероприятий по лечению сайта можно связаться с НКЦКИ, они снимут блокировки. Но на этом еще не все, следует позаботиться о дальнейшей безопасности своего проекта, для этого нужно сделать следующее:

Настроить регулярное создание резервных копий

Причем, желательно следовать правилу 3-2-1.
1
любые данные копируются минимум три раза.
2
используется минимум два разных носителя
3
один из носителей должен располагаться на другом сервере.

Настроить регулярную проверку файлов на вирусы

Это можно сделать путем усовершенствования утилиты bx_scan, о которой говорилось выше, либо можно воспользоваться уже готовым модулем, который разработан на базе bx_scan – Поиск Вирусов, и уже имеет возможность запуска по расписанию с отправкой отчетов.


Следующие шаги нужны для тех проектов, которые по каким-то причинам невозможно обновить:

Закрыть доступ к файлам на уровне сервера

На сегодняшний день таковыми являются:

/bitrix/tools/upload.php

/bitrix/tools/mail_entry.php

/bitrix/modules/main/include/virtual_file_system.php

/bitrix/components/bitrix/sender.mail.editor/ajax.php

/bitrix/tools/vote/uf.php

/bitrix/tools/html_editor_action.php

/bitrix/admin/site_checker.php
Имейте в виду, что после блокировки этих файлов часть функционала 1С-Битрикс станет недоступной. Иногда можно пропатчить вызов особо уязвимых файлов примерно такой конструкцией перед их подключением (все зависит от текущей версии Битрикса):

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
	header("Status: 404 Not Found");
	die();
}

Ограничить доступ к серверу из других стран

Следует напомнить, что взлом сайтов – это уголовно наказуемое преступление, и в логах сервера прекрасно видно, с каких IP-адресов производятся атаки. Хакеры могут использовать зараженные зомбо-сети из обычных домашних и офисных компьютеров, раскиданных по всему миру, но это накладывает ряд ограничений и создает неудобства злоумышленникам для проведения атак, описанных в этой статье. Поэтому чаще используются временно арендованные виртуальные серверы, принадлежащие хостинг-провайдерам, которые, как правило, стараются пресекать зловредную деятельность и быстро реагируют на жалобы от пострадавших – это может повредить их бизнесу и навлечь нежелательные проверки.

В случае с деятельностью украинских хакеров, если судить по логам серверов обслуживаемых нашей компанией проектов, все атаки были произведены с серверов хостинг-провайдера AEZA, которые преимущественно располагаются в Финляндии. Все наши жалобы они проигнорировали, а писать заявление в силовые органы мы посчитали неразумным ввиду непростых политических отношений нашей страны с Финляндией.

Вместо этого мы заблокировали весь трафик с их серверов - атаки сразу же прекратились. Понимая, что злоумышленники однажды могут сменить хостера, для некоторых особо чувствительных проектов, мы заблокировали весь трафик из других стран. Многим сайтам, кроме российских пользователей, другие неинтересны, но имейте в виду, что так вы потеряете и тех, кто использует VPN, поэтому к таким мерам нужно относиться осторожно.

Список заблокированных через .htaccess IP-адресов серверов AEZA (актуален для июля 2023 года):

Deny from 109.172.45.0/24

Deny from 176.124.198.0/23

Deny from 185.106.94.0/24

Deny from 185.112.83.0/24

Deny from 185.17.0.0/24

Deny from 185.174.136.0/24

Deny from 185.174.137.0/24

Deny from 185.229.65.0/24

Deny from 185.229.66.0/24

Deny from 194.26.229.0/24

Deny from 195.20.16.0/24

Deny from 212.113.106.0/24

Deny from 212.113.116.0/24

Deny from 212.113.119.0/24

Deny from 45.138.74.0/24

Deny from 45.142.122.0/24

Deny from 45.15.158.0/24

Deny from 45.15.159.0/24

Deny from 5.252.118.0/24

Deny from 77.73.131.0/24

Deny from 79.137.206.0/24

Deny from 91.193.43.128/25

Deny from 2a0e:d602:1::/48

Deny from 2a0e:d602:2::/48

Deny from 2a0e:d602:3::/48

Deny from 2a0e:d606::/48

Deny from 2a0e:d607::/48

Заключение

Любой, даже не особо крупный веб-проект – это сложная, живущая и функционирующая экосистема. Каждый день программисты всего мира пишут тысячи строк кода, исправляя прежние ошибки и допуская новые, чтобы пользователи могли быстрее и комфортнее совершать онлайн-покупки, получать информацию, записываться на прием к врачу и осуществлять прочую деятельность.

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

Важно проводить техническое обслуживание сервера, анализировать трафик, своевременно устанавливать обновления, следить за чистотой кода, проверять целостность бэкапов. Только так можно быть уверенным в жизнеспособности своего проекта.
г. Тула, ул. Некрасова, д.7, офис 311