OWASP: какие уязвимости встречаются чаще всего?
Каждые 39 секунд в мире происходит успешная кибератака. Причем 9 из 10 используют уязвимости из списка OWASP. Разбираемся, что с этим делать.
364 открытий3К показов

Open Web Application Security Project — проект от экспертов по кибербезопасности. Цель сообщества — поделится знаниями о том, как защитить систему от взломов. На OWASP ссылаются создатели стандартов кибербезопасности, MITRE, DISA и PCI DSS.
В статье разберем, какие ТОП-10 уязвимостей угрожают бизнесу по версии OWASP, узнаем неутешительную статистику и рекомендации по защите от взлома.
Безопасники ошиблись — бизнес заплатил
Если защита вашего сайта содержит хотя бы 2-3 следующие уязвимости, можно считать, что вы поставили дорогую сигнализацию в доме и не закрыли дверь.
A01: Broken Access Control — ошибки контроля доступа
Специалисты подтвердили наличие этой уязвимости в 3,81% случаев. Это самая распространенная проблема из списка OWASP. Более 318 тысяч приложений работают с ошибками контроля доступа.
Представьте систему бронирования в отеле. Пользователь оплатил номер и видит свою бронь в личном кабинете. Если он вручную изменит идентификатор брони в адресной строке и увидит информацию о брони другого клиента — это будет нарушением контроля доступа.
Как защититься?
- Проектируйте контроль доступа по принципу наименьших привилегий. Пользователи должны иметь только те права, которые необходимы для выполнения их задач.
- Реализуйте проверку доступа на стороне сервера, даже если она есть на клиентской стороне. Клиентский код может быть изменен злоумышленником.
- Проводите аудит прав доступа и тестирование безопасности.
A02: Cryptographic Failures — проблемы с шифрованием данных
Снова обратимся к примеру. Вы перешли в интернет-магазин, чтобы оплатить заказ. Данные банковской карты отправляются на сервер для обработки, но есть проблема. Сайт работает через HTTP, и данные передаются без шифрования.
Поскольку информация передается «как есть», злоумышленник с Wireshark перехватит номер карты, имя, срок действия карты и CVV. Этого достаточно, чтобы покупать товары за ваш счет и снимать деньги.
Полный арсенал хакера описывали в статье «Лучшие инструменты для тестирования на проникновение».
Как защититься?
- Используйте современные алгоритмы шифрования — AES, RSA, SHA.
- Храните криптографические ключи в защищенном месте. Например в аппаратных модулях безопасности (HSM). Никогда не оставляйте ключи в коде приложения или открытом виде.
- Добавляйте «соль» к хэшам паролей. Это случайные данные, которые делают перебор паролей менее эффективным.
A03: Injection — внедрение вредоносного кода
В этот раз вы оплачиваете покупку на сайте, который шифрует пакеты алгоритмом AES-256. Это стойкая криптография, и перехватывать зашифрованные данные бесполезно.
Опять не повезло: злоумышленник может использовать SQL-инъекцию, чтобы получить доступ к базе данных и украсть номера, пароли, банковские карты.
Вторая популярная атака — XSS. Это когда сайт разрешает вставку вредоносных скриптов в поля ввода. Например, атакующий на форуме публикует сообщение с JavaScript-кодом, который ворует cookies других пользователей.
Злоумышленник с чужим печеньем может запускать чужие сессии. Фактически это доступ к аккаунту, но без логинов, паролей и кодов подтверждения.
Как защититься?
- Не передавайте значения в SQL-запрос напрямую через строки без дополнительной обработки.
- Ограничьте ввод данных по типу, принимайте только допустимые символы.
- Используйте библиотеки ORM, которые автоматически защищают от инъекций.
A04: Insecure Design — уязвимости, возникающие на этапе проектирования
Представьте, что разработчики создают платформу для частной клиники. На этапе проектирования они забывают заложить систему разграничения прав. Врач сможет просматривать историю болезни не только своего пациента, но и всех других посетителей клиники. Если злоумышленник получит доступ к учетной записи любого врача, то получит базу данных всей больницы.
Недостатки проектирования проявляются не сразу, а исправить их крайне сложно или даже невозможно.
Как защититься?
- С самого начала внедряйте принципы безопасного проектирования.
- Оценивайте сценарии угроз и проектируйте рубежи обороны.
- Моделируйте угрозы для проверки бизнес-логики и ключевых функций.
A05: Security Misconfiguration — ошибки конфигурации безопасности
Уязвимость возникает при неправильной настройке серверов, фреймворков или самого приложения. Например, после установки новой системы администратор не удалил тестовые аккаунты или не сменил стандартный пароль доступа к админ-панели.
Сюда же относятся устаревшие файлы, скрытые каталоги или ошибки настроек. Например, если страница отладки API по какой-то причине доступна в рабочем окружении, злоумышленник сможет использовать информацию с этой страницы для других атак.
Как защититься?
- Убедитесь, что отключены все ненужные функции, службы и порты.
- Замените стандартные пароли на уникальные.
- Автоматизируйте проверку конфигурации и включите регулярный аудит.
A06: Vulnerable and Outdated Components — использование уязвимых библиотек
Около 50% популярных библиотек для разработки ПО с открытым кодом содержат уязвимости. Если не следить за обновлением компонентов, код устаревает, и появляются нежелательные точки входа.
Злоумышленники могут детально изучать библиотеку, пока не найдут «уязвимость нулевого дня». Это когда проблема неизвестна на момент применения, следовательно? у разработчика 0 дней на ее устранение.
Еще хуже, если приложение использует компоненты, которые больше не поддерживаются. Такую систему практически невозможно защитить от новых угроз.
Как защититься?
- Обновляйте компоненты и следите за уведомлениями о выявленных уязвимостях.
- Удаляйте неиспользуемые библиотеки, модули и плагины.
- Используйте официальные инструменты для проверки безопасности компонентов.
A07: Identification and Authentication Failures — ошибки аутентификации
Пользователи в опасности, если разработчик разрешил установку слишком простых паролей вроде «123456» и «password». Система не запрашивает код подтверждения? Риск потерять аккаунт возрастает в 2 раза!
Задача злоумышленника сводится к простому: выяснить логин и перебрать словари популярных паролей.

Отдельная категория уязвимостей — ошибки восстановления доступа. Это тот случай, когда сложность пароля не имеет значения.
Например, онлайн-сервис позволяет сменить пароль, зная e-mail и ответ на вопрос вроде «ваше любимое животное». Если это «собака» или «кошка», за сколько секунд злоумышленник подберет секретную фразу?
Как защититься?
- Требуйте создания сложных паролей из спецсимволов, цифр и буков.
- Внедряйте 2FA-аутентификацию.
- Защищайте идентификаторы сессии, не передавая их напрямую в URL.
A08: Software and Data Integrity Failures — атаки на целостность данных
От антивируса пришло уведомление с просьбой установить новую версию. Улучшили производительность, безопасность, добавили новые функции — что может пойти не так?
Пример успешной атаки на целостность данных — инцидент с антивирусом eScan. Приложение доставляло обновления по незащищенному HTTP, а злоумышленники подменяли файлы. В итоге вместе с обновлением клиенты eScan устанавливали вредонос и майнер.
Другой пример — представьте, что сборка приложения включает зависимости из сторонних репозиториев. В них злоумышленник может внедрить бэкдор. Если вредоносный код вовремя не заметят, то открываются «врата» для дальнейших атак, поскольку программа заражена на этапе разработки.
Как защититься?
- Контролируйте целостность файлов с помощью хешей и цифровых подписей.
- Ограничьте возможность изменения критически важных данных для обычных пользователей.
- Внедрите мониторинг подозрительной активности.
A09: Security Logging and Monitoring Failures — недостаточный мониторинг безопасности
Отсутствие мониторинга означает, что система уязвима к длительным атакам.
Например: злодей получает доступ к учетной записи администратора и несколько месяцев выкачивает данные. В это время компания даже не подозревает о нападении.
Без логирования и мониторинга невозможно отследить действия преступника.
Как защититься?
- Настройте подробное логирование событий, включая попытки входа и изменения конфигурации.
- Установите систему уведомлений, которая оповещает администраторов о подозрительных действиях.
A10: Server-Side Request Forgery — подмена серверных запросов
Злоумышленник может обмануть приложение, заставив отправлять запросы от имени сервера. Это опасно, потому что у сервера больше привилегий, чем у обычного пользователя.
Рассмотрим угрозу на примере сайта, который проверяет доступ к URL (например: жива ли ссылка, безопасно ли по ней переходить):
- Пользователь вводит example.com/photo.jpg.
- Сервер выполняет запрос на этот URL.
- Если сервер работает, отображается сообщение: «Ссылка доступна».
Что сделает злоумышленник? Будет перебирать системные каталоги сервера.
Например:
- http://localhost:8080/admin
- http://192.168.1.10/config
Сервер при наличии уязвимости отправит запрос и вернет данные, которые помогут продолжить атаку.
Как защититься?
- Проверяйте пользовательский ввод.
- Используйте белый список адресов для внешних запросов.
- Ограничьте доступ сервера к внутренним ресурсам.
Применение WAF (Web Application Firewall)
WAF стоит между пользователем и сервером, отслеживая и фильтруя подозрительные запросы.
Если приложение содержит уязвимости, WAF может временно скрыть проблему, защищая систему до тех пор, пока разработчики не исправят ошибку.
Пример: WAF проверяет SQL-запросы на наличие подозрительных команд вроде SELECT или ‘ OR 1=1. Если запрос потенциально опасен, WAF отклонит его до того, как сервер начнет обработку.
Еще один пример: WAF блокирует XSS. Если пользователь отправляет сообщение со скриптом для кражи cookies, WAF перенаправит пользователя на страницу ошибки.
WAF используется в качестве дополнения к другим мерам. Он не исправляет бреши в коде, но снижает вероятность их эксплуатации.
Подробнее о технологии читайте здесь: WAF и Firewall: просто о сложном для начинающих разработчиков и аналитиков.
Аудит и пентест
Пентест — это имитация поведение злоумышленника. Специалист по кибербезопасности пытается найти уязвимости в приложении: слабые пароли, открытые API, устаревшие компоненты.
Существует несколько видов тестирования — статический (SAST) и динамический (DAST).
SAST изучает исходный код программы на этапе разработки
Например, анализ функций, через которые вредоносный ввод может попасть в запрос к базе данных. SAST используют, чтобы предотвратить уязвимости до того, как приложение будет запущено.
DAST тестирует систему в процессе работы
Инструмент имитирует действия пользователя, отправляя запросы и отслеживая ответы системы.
Например, DAST обнаружит открытые эндпоинты, которые известны лишь разработчикам, но не требуют авторизации для доступа.
Инструменты для выявления уязвимостей
OWASP ZAP
Один из самых популярных инструментов для тестирования безопасности веб-приложений. Это бесплатная программа с открытым исходным кодом.
После установки инструмент запускается как прокси-сервер. Через него происходит взаимодействие между пользователем и приложением.
ZAP поддерживает два типа сканирования: активное и пассивное. Пассивное не изменяет данные сайта, только анализирует ответы сервера. Активное имитирует атаки.
Важный этап анализа — краулинг. Это процесс сканирования всех ссылок сайта. Если ссылки скрыты или недоступны, используется принудительный просмотр.
Инструмент также позволяет перехватывать запросы. ZAP останавливает отправку данных и дает возможность их изменить.
Например, можно заменить имя пользователя на ручной ввод, чтобы проверить, как на это отреагирует сервер.
OWASP ZAP генерирует отчеты о найденных уязвимостях. Во вкладке «Alerts» отображаются риски, обозначенные цветами: средние, низкие и критические. Категории помогают понять, что требует немедленного исправления, а что можно отложить.
Burp Suite
Инструмент для более глубокого анализа безопасности. Его функционал похож на OWASP ZAP.
Основной компонент Proxy действует как посредник. Он перехватывает сообщения между браузером пользователя и сервером, позволяя изменять данные, например, пользовательский ID или токен авторизации.
Spider собирает структуру сайта. Burp Suite проходит по ссылкам, собирает информацию обо всех страницах и создает ее карту. Если не удается пробраться к закрытым зонам, инструмент пытается угадать URL или параметры.
Clickbandit моделирует атаки, при которых вредоносная невидимая страница накладывается поверх настоящего сайта. Пользователь думает, что нажимает кнопку в интерфейсе, но на самом деле активирует скрытую команду.
Extender позволяет добавлять модули, расширяющие функционал.
Nikto
Веб-сканер для быстрой проверки безопасности. Он анализирует сервер на наличие уязвимостей: проверяет версии ПО, опасные файлы, ненадежные скрипты.
Например, если сервер содержит публично доступный файл резервной копии базы данных, Nikto обнаружит его за считанные минуты.
Инструмент полезен на первых этапах анализа безопасности, чтобы быстро получить общую картину состояния системы.
Заключение
Защита от этих уязвимостей требует комплексного подхода. Необходимо закладывать защитные механизмы еще на этапе проектирования системы. Это значительно дешевле, чем исправлять проблемы после инцидента.
Регулярное тестирование на проникновение помогает выявить слабые места до того, как их обнаружат злоумышленники.
Инвестиции в кибербезопасность сегодня — это страховка от потенциальных убытков завтра. По данным IBM, средняя стоимость утечки данных в 2024 году достигла исторического максимума — более $ 4.880.000.
364 открытий3К показов