Защита Bitrix24 от SQL-инъекций через WAF
Формы обратной связи — частая цель атакующих, особенно через SQL-инъекции. Встроенная защита WAF может не сработать, если не настроена корректно. В этой статье разберём, как обеспечить надёжную защиту.
Что такое WAF и как он защищает Bitrix24
WAF — Web Application Firewall — это система, которая фильтрует входящие HTTP-запросы, идентифицируя и блокируя вредоносные паттерны, включая SQL-инъекции. В Bitrix24 WAF встроен в систему и активен по умолчанию. Он анализирует данные, поступающие через формы, API и другие интерфейсы, и отклоняет запросы, содержащие подозрительные фрагменты SQL-кода. Например, если в поле формы появляется строка, содержащая конструкции типа OR 1=1, WAF может автоматически заблокировать запрос.
Встроенная защита Bitrix24 использует сигнатурный анализ и правила фильтрации, чтобы блокировать атаки. Однако не все правила настроены по умолчанию, и это создаёт риски, особенно если форма не проходит через стандартные компоненты Bitrix24. В некоторых случаях WAF может не сработать, если злоумышленник использует обфусцированный код или отправляет запросы через API напрямую, минуя стандартные компоненты.
WAF в Bitrix24 — это не панацея. Он не заменяет корректную разработку. Если в коде есть прямые SQL-запросы без параметризации, WAF может не справиться. Например, если в коде используется CDatabase::Query() с нефильтрованным вводом, WAF не сможет предотвратить инъекцию. Поэтому WAF — это часть комплексной системы защиты, а не единственный барьер.
В Bitrix24 WAF активен в режиме «Проактивная защита», который включает блокировку SQL-инъекций, XSS и обхода путей. Этот режим работает на уровне приложения и фильтрует ввод пользователей. Однако, если форма реализована через кастомный код или внешний сервис, WAF может не распознать подозрительный запрос. Это приводит к уязвимости, особенно если в коде есть прямые SQL-запросы.
WAF блокирует SQL-инъекции, предотвращая доступ к базе данных злоумышленниками. Он использует сигнатурный анализ, сравнивая входящие данные с известными паттернами атак. Например, если в поле формы появляется строка, содержащая конструкции типа UNION SELECT, WAF может заблокировать запрос. Это особенно важно, если форма используется для отправки данных, которые затем передаются в базу данных.
WAF в Bitrix24 — это не просто «включил и забыл». Он требует настройки. Например, можно настроить правила для конкретных форм, добавить исключения для полей, которые не должны содержать SQL-конструкции, и задать жесткие ограничения на длину и формат ввода. Это повышает эффективность WAF и снижает количество ложных срабатываний.
Почему формы обратной связи — уязвимое место
Формы обратной связи — наиболее частый канал для атак, поскольку они открыты для публичного ввода. Даже если форма использует стандартные компоненты Bitrix24, злоумышленник может попытаться обойти валидацию, отправив запрос напрямую через API или с помощью инструментов типа Burp Suite. В таких случаях встроенный WAF может не сработать, если не настроен на анализ именно этих типов запросов.
Часто сисадмины полагаются на то, что Bitrix24 «всё само по себе защищает». Это ошибка. Встроенная защита работает, но не всегда охватывает все сценарии. Например, если форма реализована через кастомный код или внешний сервис, WAF может не распознать подозрительный запрос. Это приводит к уязвимости, особенно если в коде есть прямые SQL-запросы без параметризации.
Кастомные формы — это частая причина проблем. Если вы создали форму вручную, используя HTML и PHP, и не прошли через стандартные компоненты Bitrix24, WAF может не сработать. Например, если форма отправляет данные через POST-запрос напрямую, без использования компонентов Bitrix24, WAF не будет анализировать этот запрос. Это создаёт уязвимость, которую злоумышленник может использовать для SQL-инъекций.
Если форма использует прямые SQL-запросы, например, через CDatabase::Query(), WAF не сможет предотвратить инъекцию. В этом случае защита зависит от корректной валидации и параметризации запросов. Например, если в коде используется CDatabase::Query("SELECT * FROM users WHERE name = '" . $name . "'"), злоумышленник может ввести '; DROP TABLE users; -- и удалить таблицу. WAF не сможет распознать этот паттерн, если он не проходит через стандартные компоненты.
Даже если форма использует стандартные компоненты Bitrix24, злоумышленник может попытаться обойти валидацию, отправив запрос через API. Например, если API позволяет отправлять данные напрямую, WAF может не сработать, если не настроен на анализ API-запросов. Это приводит к уязвимости, особенно если API не проходит через стандартные компоненты Bitrix24.
Настройка WAF для защиты форм
Для настройки WAF в Bitrix24 необходимо войти в административную панель и перейти в раздел «Настройки системы» → «Безопасность». Здесь можно найти опции, связанные с «Проактивной защитой» и «Веб-фаерволом». Убедитесь, что оба режима включены. В частности, активируйте «Блокировка SQL-инъекций» и «Анализ ввода пользователем».
Дополнительно можно настроить правила для конкретных форм. В Bitrix24 есть возможность создавать кастомные правила фильтрации через модуль «Проактивная защита». Например, можно добавить исключения для полей, которые не должны содержать SQL-конструкции, и задать жесткие ограничения на длину и формат ввода. Это повышает эффективность WAF и снижает количество ложных срабатываний.
Если форма реализована кастомно, WAF может не сработать. В этом случае можно настроить внешний WAF на уровне сервера или облачного фильтра. Например, на Nginx можно использовать модуль ModSecurity, который блокирует SQL-инъекции на уровне сервера. Это особенно важно, если вы используете собственные серверы.
Настройка WAF в Bitrix24 — это не просто включение. Нужно проверить, что WAF обрабатывает запросы через API. Например, если API позволяет отправлять данные напрямую, WAF может не сработать, если не настроен на анализ API-запросов. Это приводит к уязвимости, особенно если API не проходит через стандартные компоненты Bitrix24.
Порядок действий: как настроить WAF
Первым шагом необходимо войти в административную панель Bitrix24 и перейти в раздел «Настройки системы» → «Безопасность». Здесь можно найти опции, связанные с «Проактивной защитой» и «Веб-фаерволом». Убедитесь, что оба режима включены. В частности, активируйте «Блокировка SQL-инъекций» и «Анализ ввода пользователем».
Далее, включите «Проактивную защиту». Этот режим включает блокировку SQL-инъекций, XSS и обхода путей. Убедитесь, что все правила включены. Например, можно настроить правила для конкретных форм, добавить исключения для полей, которые не должны содержать SQL-конструкции, и задать жесткие ограничения на длину и формат ввода.
Проверьте, что WAF обрабатывает запросы через API. Если API позволяет отправлять данные напрямую, WAF может не сработать, если не настроен на анализ API-запросов. В этом случае можно настроить внешний WAF на уровне сервера или облачного фильтра. Например, на Nginx можно использовать модуль ModSecurity, который блокирует SQL-инъекции на уровне сервера.
Настройте кастомные правила для критичных форм. В Bitrix24 есть возможность создавать кастомные правила фильтрации через модуль «Проактивная защита». Например, можно добавить исключения для полей, которые не должны содержать SQL-конструкции, и задать жесткие ограничения на длину и формат ввода. Это повышает эффективность WAF и снижает количество ложных срабатываний.
Проверьте логи безопасности. В Bitrix24 есть журнал событий безопасности, где можно найти сведения о блокировках и срабатываниях. Убедитесь, что WAF блокирует запросы, содержащие подозрительные фрагменты SQL-кода. Например, если в поле формы появляется строка, содержащая конструкции типа OR 1=1, WAF должен заблокировать запрос.
Типовые ошибки и как их избежать
Одна из самых распространённых ошибок — полагаться на то, что Bitrix24 «всё само по себе защищает». Это ошибка. Встроенная защита работает, но не всегда охватывает все сценарии. Например, если форма реализована через кастомный код или внешний сервис, WAF может не распознать подозрительный запрос. Это приводит к уязвимости, особенно если в коде есть прямые SQL-запросы без параметризации.
Ещё одна ошибка — использовать прямые SQL-запросы без параметризации. Например, если в коде используется CDatabase::Query("SELECT * FROM users WHERE name = '" . $name . "'"), злоумышленник может ввести '; DROP TABLE users; -- и удалить таблицу. WAF не сможет распознать этот паттерн, если он не проходит через стандартные компоненты Bitrix24.
Третья ошибка — не настраивать WAF для API. Если API позволяет отправлять данные напрямую, WAF может не сработать, если не настроен на анализ API-запросов. В этом случае можно настроить внешний WAF на уровне сервера или облачного фильтра. Например, на Nginx можно использовать модуль ModSecurity, который блокирует SQL-инъекции на уровне сервера.
Четвёртая ошибка — не проверять логи безопасности. В Bitrix24 есть журнал событий безопасности, где можно найти сведения о блокировках и срабатываниях. Убедитесь, что WAF блокирует запросы, содержащие подозрительные фрагменты SQL-кода. Например, если в поле формы появляется строка, содержащая конструкции типа OR 1=1, WAF должен заблокировать запрос.
Пятая ошибка — не обновлять Bitrix24. В новых версиях улучшаются правила WAF, исправляются уязвимости, и повышается общая устойчивость к атакам. Обновление — это не только функциональные улучшения, но и защита. В 2024 году в Bitrix24 было исправлено более 15 уязвимостей, включая уязвимости, связанные с SQL-инъекциями.
Как проверить, что WAF работает
Чтобы проверить, что WAF работает, можно отправить тестовые запросы с SQL-инъекциями. Например, отправьте запрос с фрагментом OR 1=1 в поле формы. Если WAF работает, запрос должен быть заблокирован. Проверьте логи безопасности, чтобы убедиться, что запрос был заблокирован.
Ещё один способ — использовать инструменты для тестирования безопасности, такие как OWASP ZAP или Burp Suite. Эти инструменты позволяют отправить вредоносные запросы и проверить, как WAF реагирует. Например, можно отправить запрос с фрагментом UNION SELECT и убедиться, что WAF блокирует его.
Если WAF не блокирует запросы, проверьте настройки. Убедитесь, что «Проактивная защита» и «Веб-фаервол» включены. Также проверьте, что WAF обрабатывает запросы через API. Если API позволяет отправлять данные напрямую, WAF может не сработать, если не настроен на анализ API-запросов.
Что делать, если уже сломалось
Если WAF не блокирует атаки, проверьте настройки. Убедитесь, что «Проактивная защита» и «Веб-фаервол» включены. Также проверьте, что WAF обрабатывает запросы через API. Если API позволяет отправлять данные напрямую, WAF может не сработать, если не настроен на анализ API-запросов.
Если проблема остаётся, рассмотрите использование внешнего WAF. Например, на Nginx можно использовать модуль ModSecurity, который блокирует SQL-инъекции на уровне сервера. Это особенно важно, если вы используете собственные серверы.
Если форма реализована кастомно, WAF может не сработать. В этом случае можно настроить внешний WAF на уровне сервера или облачного фильтра. Например, на Nginx можно использовать модуль ModSecurity, который блокирует SQL-инъекции на уровне сервера.
Частые вопросы
Что такое WAF и как он защищает от SQL-инъекций?
WAF — Web Application Firewall — фильтрует входящие запросы, блокируя вредоносные паттерны, такие как SQL-инъекции. Он анализирует данные, поступающие через формы и API, и отклоняет запросы, содержащие подозрительные фрагменты SQL-кода.
Достаточно ли встроенного WAF в Bitrix24 для защиты от SQL-инъекций?
Встроенный WAF защищает от большинства атак, но не всегда. Если форма реализована кастомно или использует прямые SQL-запросы, WAF может не сработать. Дополнительная настройка или использование внешнего WAF необходимы для полной защиты.
Можно ли настроить WAF для отдельных форм в Bitrix24?
Да. Через модуль «Проактивная защита» можно настроить кастомные правила фильтрации для конкретных форм. Это позволяет задать жесткие ограничения на ввод и блокировать подозрительные данные.
Что делать, если WAF не блокирует SQL-инъекции?
Проверьте настройки WAF, убедитесь, что все режимы включены. Также проверьте логи безопасности. Если проблема остаётся, рассмотрите использование внешнего WAF или дополнительной валидации на уровне кода.
Как проверить, что WAF работает?
Отправьте тестовые запросы с SQL-инъекциями. Например, отправьте запрос с фрагментом `OR 1=1` в поле формы. Если WAF работает, запрос должен быть заблокирован. Проверьте логи безопасности, чтобы убедиться, что запрос был заблокирован.
Что делать, если уже сломалось?
Проверьте настройки WAF. Убедитесь, что «Проактивная защита» и «Веб-фаервол» включены. Также проверьте, что WAF обрабатывает запросы через API. Если проблема остаётся, рассмотрите использование внешнего WAF.
Источники
- GitHub: WAF-Light для Joomla — https://github.com/IDevOne/WAF-Light---Web-Application-Firewall-for-Joomla/blob/main/README.md
- Bitrix24: Безопасность — https://www.bitrix24.com/security/
- IDevOne: WAF-Light для Joomla — https://github.com/IDevOne/WAF-Light---Web-Application-Firewall-for-Joomla/blob/main/README.md


