Одна из интересных задач в области кибербезопасности — обнаружение ошибок веб-сервера, таких как известный код ответа 404 «Страница не найдена», даже когда веб-приложение или WAF возвращают код 200 OK. Это нужно для обнаружения замаскированных попыток обхода безопасности или для улучшения пользовательского опыта за счет выявления скрытых проблем на сайтах.
Коды состояния HTTP являются частью ответа веб-сервера на запросы. Каждый код состояния имеет уникальное значение и описание, которые сообщают клиенту (например, браузеру) о результате попытки сервера обработать запрос. Когда пользователь сталкивается с кодом 404 на сайте, это обычно означает, что попытка доступа к определенной странице не удалась, потому что она была удалена, перемещена или никогда не существовала. Важно отметить, что коды состояния HTTP — стандартизированные индикаторы, которые позволяют разработчикам сайтов и браузерам понимать результаты запросов и соответственно реагировать на них.
Зачем обнаруживать скрытые ошибки 404
Приведу пример. Воображаемая веб-компания WebSec столкнулась с загадочной проблемой: их WAF постоянно возвращал успешный код ответа 200 OK, даже когда запрашиваемая страница фактически не существовала. На первый взгляд кажется, что все в порядке, но внимательный анализ журналов сервера, включая частоту, типы, параметры запросов и другие факторы, выявил аномалии (например, высокую частоту запросов к несуществующим страницам, передаваемые в запросах параметры, которые не соответствуют типичным сценариям использования). Что делать и как быть?
WAF может быть настроен таким образом, чтобы скрывать реальные коды ошибок, например возвращая код 200 OK вместо 404, для обеспечения безопасности или создания более дружественного интерфейса для пользователя. Однако это может ввести в заблуждение как пользователей, так и системы мониторинга.
Давайте окунемся в мир веб-разработки и взглянем на ошибки 404 через призму кибербезопасности и SEO-оптимизации одновременно.
Когда сайт сообщает об ошибке 404, вместо того чтобы притворяться, что все в порядке, и выдавать ответ 200 OK, он создает своеобразную ловушку для хакеров. Они, уверенные в том, что нашли уязвимость, сталкиваются с неприступным виртуальным забором. В результате попытки эксплуатации возможных уязвимостей затрудняются.
Но есть другая сторона медали. Когда дело доходит до SEO-оптимизации, включение страниц с ошибкой 404 в карту сайта — это как приглашение на ужин, где вместо вкусного контента предлагается пустая тарелка. Это может запутать роботов и привести к индексации нежелательных страниц, что негативно отразится на рейтинге сайта в поисковых системах.
Несмотря на то что исправление ошибок 404 усложняет задачу хакерам, надо помнить и о том, что не все страницы на сайте должны быть представлены в поисковой выдаче. В конечном счете идеальный баланс между безопасностью и SEO-оптимизацией — это ключ к успеху веб-проекта.
Формальные методы
Используя формальные методы анализа журналов сервера, можно выявить частоту и типы запросов, приводящих к ошибке 404. Это позволит понять, какие уязвимости эксплуатируются хакерами и какие ресурсы они пытаются исследовать.
На основе анализа журналов можно разработать формальные правила для обработки ошибок 404. Так, можно настроить сервер таким образом, чтобы при обнаружении запросов на потенциально опасные ресурсы (например, административные панели) выдавалась ошибка 404.
Мониторинг ключевых показателей производительности и доступности ресурсов поможет выявить аномалии в поведении пользователей, идентифицировать случаи, когда ресурс должен быть доступен и, соответственно, должен возвращать успешный код ответа. Кроме того, анализ структуры и параметров запросов к ресурсам позволяет выявить запросы, которые предположительно должны возвращать успешный ответ. Это гарантирует, что веб-сервисы работают нормально и к ним можно получить доступ. И конечно, позволит своевременно отреагировать в случае подозрительных и необычных запросов.
Что дает машинное обучение
Machine Learning (ML) позволяет прогнозировать доступность ресурсов на основе ряда факторов, помогающих идентифицировать скрытую ошибку 404. Кроме того, ML-системы могут быть обучены на основе изменяющихся данных о запросах и ответах сервера. Это позволит им адаптироваться к новым условиям и изменениям в поведении пользователей и системы.
Для идентификации скрытой ошибки 404 с помощью ML-технологий нужно включить в анализируемые признаки частоту запросов к конкретным ресурсам, типы запросов (например, GET, POST, PUT, DELETE), их параметры, время и дни недели, когда они были сделаны, количество специальных символов и многое другое. Различные типы запросов имеют разные ожидаемые результаты. Например, если административные операции обычно выполняются с помощью POST-запросов, то возвращение успешного кода ответа для GET-запроса к административной панели может указывать на скрытую ошибку 404.
Изучение параметров, передаваемых в запросах, поможет выявить те запросы, которые обычно должны вызывать ошибку 404, но вместо этого получают успешный ответ.
Дополнительно можно рассмотреть признаки, связанные с поведением системы, такие как нагрузка на сервер, использование ресурсов и пропускная способность сети. Используя их, ML-модель сможет обучиться выявлять аномалии в ответах WAF и идентифицировать ситуации, когда скрытая ошибка 404 приводит к возврату кода ответа 200 OK. Поведение пользователей и системы может изменяться в зависимости от времени и дня недели. Анализ временных признаков поможет выявить аномалии, когда скрытая ошибка 404 возникает только в определенные периоды.
Анализ частоты запросов к различным URL-адресам может выявить аномальные паттерны, когда ресурсы, которые обычно возвращают ошибку 404, вдруг начинают возвращать успешный код ответа.
А почему не LLM?
Итак, вам необходимо обнаруживать ошибки 404 и делать это изящно. Вы стоите перед выбором — что использовать: модный LLM или все же простой классификатор типа random forest. Напомним, random forest, или «cлучайный лес», — это алгоритм машинного обучения, который использует комбинацию деревьев решений, чтобы повысить точность и устойчивость предсказаний. Каждое дерево в «лесу» обучается на случайно выбранной подвыборке данных с использованием случайного подмножества признаков. Это помогает сделать модель менее чувствительной к отдельным выбросам и шумам в данных. А такие крупные языковые модели (LLM), как GPT-4, — это передовые системы искусственного интеллекта, способные понимать и генерировать естественный язык.
Итак, ML против LLM — какие выводы я сделала:
- Если бы я была деревом в лесу, то не хотела бы оставаться одна. Так почему бы нам не собрать целый лес для борьбы с ошибками 404?
- В демократии все решения принимаются большинством голосов. Почему бы нам не довериться нашему лесу, чтобы он проголосовал и определил, является ли тот или иной случай ошибкой 404?
- Если одно дерево может сделать хороший прогноз, представьте, что сделают сразу множество деревьев!
- Если одно дерево ошибается, другие могут его исправить. Но если LLM ошибается... ну, удачи!
- А что, если наш лес уже знает все о 404? Возможно, он даже поможет нам найти потерянные деревья.
- Одно дерево может упасть от ветра, но не целый лес. Так что, если ветер перемен приносит новые и неожиданные ошибки 404, random forest будет готов.
- Некоторые говорят, что простота — признак мастерства. Но иногда жизнь требует немного магии... и деревьев!
Языковые модели могут стать помощниками в обнаружении потенциальных проблем на сайтах, предупреждая разработчиков о возможных ошибках в документации или коде. Но они не могут заменить специализированные инструменты и процессы, используемые для мониторинга и устранения ошибок на сайтах.
В конце концов, выбор за вами. Но если вы спросите меня, я скажу: «Давайте дадим шанс лесу!»
***
Наша воображаемая компания WebSec, помимо анализа журналов сервера, провела дополнительное исследование и использовала ML-модели для выявления скрытых аномалий. В результате действительно было выявлено несколько интересных закономерностей. Например, запросы с определенных IP-адресов, которые обычно не используются для административных задач, вызывали успешный ответ WAF, в то время как запросы от администраторов на аналогичные ресурсы возвращали ошибку 404. Это указывает на попытки вторжения с использованием маскировки под нормальное пользовательское поведение. Благодаря машинному обучению и анализу таких признаков, WebSec смогла защитить свои ресурсы и предотвратить возможные атаки.