
Статья подготовлена вместе с экспертом
Станислав Погоржельский, технологический евангелист VK Cloud&Data

Почти каждая громкая атака на веб-приложение связана не со сломанной криптографией уровня спецслужб или редким o-day, а вполне стандартными ошибками. Неправильно проверили права доступа, доверились пользовательскому вводу, оставили слабое место в цепочке поставки, не заметили аномалию в логах. OWASP Top 10 ценен именно этим: он не обещает исчерпывающую картину всех рисков, но очень точно показывает, где веб-приложения ломаются чаще всего и что стоит чинить в первую очередь.
В 2025 году список обновился. Часть категорий сместилась, формулировки стали точнее, а акцент ещё сильнее ушёл в сторону архитектуры, supply chain и устойчивости процессов. Для команды разработки это значит, что для безопасности приложений теперь важно думать о том, как устроены доступ, аутентификация, обработка ошибок, зависимости, CI/CD и наблюдаемость.
Эта статья ориентирована на веб-разработчиков на Python, PHP, JavaScript и Java, AppSec-инженеров, тимлидов и CISO. Ниже разбираем все десять категорий OWASP Top 10:2025, показываем уязвимый и безопасный код там, где это уместно, привязываем каждую категорию к типовым сценариям атак, а в конце собираем практический чек-лист и рекомендации по WAF.

Станислав Погоржельский, технологический евангелист VK Cloud&Data
OWASP (Open Worldwide Application Security Project) — некоммерческое сообщество, которое с 2001 года выпускает открытые стандарты, инструменты и обучающие материалы по безопасности приложений.
Именно они регулярно собирают OWASP Top 10 — открытый список десяти самых критичных рисков веб-приложений. OWASP Foundation публикует его раз в несколько лет на основе больших массивов данных об уязвимостях, экспертных оценок и обратной связи от сообщества. В 2025 вышла новая редакция этого списка, и на данный момент именно она — самая актуальная.
Top 10 — его самый известный проект: на него ссылаются регуляторы и аудиторы, его закладывают в корпоративные security baseline, на него ориентируются разработчики, AppSec и архитекторы.
Подход OWASP строится на трёх вещах: открытость данных, воспроизводимая методика и участие индустрии. Источников списка обычно два: агрегированные данные компаний-партнёров и мнение профессионального сообщества по тем классам проблем, которые ещё не всегда хорошо видны массовыми сканерами. Для каждой категории учитывают частоту встречаемости, эксплуатационную сложность, потенциальный ущерб и число связанных классов уязвимостей.
В этой статье разбираем редакцию OWASP Top 10:2025. Предыдущая была в 2021 году, и изменения заметные — просто механически переносить старую структуру нельзя. Часть категорий переименована и переставлена, SSRF как самостоятельный пункт исчез и теперь рассматривается в контексте архитектуры, доступа и обработки недоверенных входных данных. Появилась новая десятая категория про обработку исключительных состояний.
Broken Access Control остаётся на первом месте и в версии 2025 года. Категория объединяет ошибки, при которых пользователь получает доступ к данным или операциям за пределами своих прав.
Инъекции команды уже научились искать автоматически, а ошибки контроля доступа чаще всего завязаны на бизнес-логику, роли, tenancy и нестандартные переходы между объектами. Именно поэтому они проходят и сканеры, и поверхностное ревью кода.
Самый частый сценарий — IDOR (Insecure Direct Object Reference): пользователь меняет ID в URL и получает чужие данные. Другая типичная ветка — privilege escalation, когда обычный пользователь вызывает административный endpoint, потому что проверку роли сделали только на фронтенде или только в одном из слоёв приложения.
Уязвимый код на Flask: python
@app.route('/order/<int:id>') def get_order(id): def get_order(id): return Order.query.get(id) # нет проверки владельца
python
@app.route('/order/<uuid:id>') @login_required def get_order(id): order = Order.query.get_or_404(id) if order.user_id != current_user.id and not current_user.is_admin: abort(403) return order.to_json()
Подробности — OWASP Top 10:2025 A01.
Security Misconfiguration поднялась на второе место. Сюда попадают ошибки настройки серверов, фреймворков, контейнеров, облачных сервисов и самого приложения, которые открывают атакующему лишние возможности.
Это одна из самых неприятных категорий, потому что здесь редко бывает одна большая уязвимость. Проблема обычно складывается из цепочки мелочей: включённый debug, дефолтный пароль, лишний HTTP-метод, открытая админка, слабые заголовки безопасности, публичный бакет, слишком широкие права сервисного аккаунта.
Типичный набор:
Нужен hardening по baseline (например, CIS Benchmarks), IaC с автоматическими проверками, отдельные конфигурации для dev и prod и принцип минимальной поверхности атаки. Конфигурацию нужно проверять в CI/CD так же регулярно, как код и зависимости.
Подробности — OWASP Top 10:2025 A02.
Software Supply Chain Failures — одна из самых заметных тем в версии 2025 года. Категория описывает риски, которые приходят не из вашего исходного кода напрямую, а через зависимости, сборочные пайплайны, репозитории пакетов, плагины и механизмы доставки.
Современное веб-приложение почти никогда не существует само по себе: оно собирается из npm-, pip-, Maven-, Composer-зависимостей, контейнерных образов, GitHub Actions, внешних registries и промежуточных артефактов. Поэтому атака на supply chain нередко оказывается эффективнее, чем прямой взлом самого приложения.
Что сюда входит:
Ключевые меры:
Регулярные обновления библиотек по-прежнему обязательны, но уже не закрывают категорию целиком.
Подробности — OWASP Top 10:2025 A03.
Cryptographic Failures сместилась на четвёртое место, но сама проблема никуда не делась. Сюда входят ошибки шифрования и хранения чувствительных данных, из-за которых пароли, токены, ключи и персональные данные оказываются недостаточно защищены.
Типичные ошибки хорошо известны, но встречаются регулярно: plaintext-пароли в базе, MD5 или SHA-1 без соли, самописная криптография, хардкод секретов, HTTP вместо HTTPS, отключённая проверка сертификата, слабые cipher suites, устаревший TLS на legacy-эндпоинтах.
python
import bcrypt hashed = bcrypt.hashpw(password.encode(), bcrypt.gensalt(rounds=12)) if bcrypt.checkpw(input_password.encode(), hashed): login_user(user)
Подробности — OWASP Top 10:2025 A04.
Injection сохраняется в топе и в версии 2025 года. Атака возникает, когда приложение подставляет пользовательский ввод в SQL, команды ОС, шаблоны, LDAP или NoSQL-запросы без корректной изоляции данных от кода.
Картина привычная: SQL Injection, command injection, template injection, XSS как следствие небезопасной работы с недоверенным вводом. Масштаб последствий не меняется — одна непараметризованная строка в неправильном месте может дать утечку данных, обход аутентификации или полный RCE.
Пример уязвимого кода: python
query = f"SELECT * FROM users WHERE email = '{email}'" cursor.execute(query) php $query = "SELECT * FROM users WHERE email = '" . $_GET['email'] . "'"; $result = mysqli_query($conn, $query);
Параметризованные запросы — единственный надёжный способ. Дополнительно: ORM с типобезопасными запросами, валидация по схеме, минимальные права учётной записи БД и WAF как второй эшелон, а не замена параметризации.
Исправленный код: python
cursor.execute( "SELECT * FROM users WHERE email = %s", (email,) ) php $stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?"); $stmt->execute([$_GET['email']]); $user = $stmt->fetch();
Подробности — OWASP Top 10:2025 A05.
Insecure Design в 2025 году остаётся отдельной категорией, и это один из самых важных сигналов от OWASP. Проблема здесь не в баге реализации, а в устройстве самой фичи или системы.
Если восстановление пароля можно брутфорсить без rate limiting, если деньги переводятся без дополнительного подтверждения, если внутренние API доверяют всему трафику из своей сети, если модель доступа не учитывает multi-tenant-сценарий — это не «недосмотр разработчика в одном endpoint'е». Это архитектурный дефект, и локальными правками его не починить.
Подробности — OWASP Top 10:2025 A06.
Authentication Failures в версии 2025 сформулирована точнее, чем предыдущая категория про identification and authentication. Здесь фокус на том, как приложение подтверждает личность пользователя и насколько этот процесс устойчив к краже учётных данных, подбору, фиксации сессии и обходу дополнительных факторов. Типичные симптомы: слабые пароли без нормальной политики, отсутствие MFA, предсказуемые токены восстановления, слишком долгоживущие сессии, отсутствие защиты от credential stuffing, слабая логика password reset.
Подробности — OWASP Top 10:2025 A07.
Здесь речь не обо всей цепочке поставки, а о доверии к коду, обновлениям, плагинам, сериализации и данным, которые система принимает как безопасные без должной проверки.
Типичные сценарии здесь: десериализация недоверенных объектов, загрузка кода без проверки целостности, автоматическое применение обновлений без проверки подписи, доверие к внешним вебхукам и артефактам без верификации.
Подробности — OWASP Top 10:2025 A08.
В версии 2025 по сравнению с 2021 формулировка уточнилась: теперь это не просто logging and monitoring, а logging and alerting. Если команда не видит атаку вовремя, даже сравнительно локальный инцидент быстро перерастает в полноценный breach.
Нужно логировать попытки аутентификации, изменения прав, доступ к чувствительным данным, ошибки валидации и административные операции. При этом пароли, секреты, номера карт и персональные данные в открытом виде логировать нельзя.
На практике это означает централизованное хранилище логов с защитой от подмены, интеграцию с SIEM и минимальный набор алертов: серия неудачных логинов, неожиданный доступ к admin-endpoint, всплеск ошибок 5xx, нетипичная активность от одного IP или учётной записи.
Подробности — OWASP Top 10:2025 A09.
Это совсем новая категория, которая говорит о том, что система делает в нестандартной ситуации: при таймауте, частичном отказе, неожиданном формате данных, ошибке внешнего сервиса, переполнении, падении кэша, сетевой деградации.
Она выглядит менее хакерски, чем SQL Injection, но именно такие состояния нередко дают путь к обходу проверок, утечке внутренних деталей, отказу в обслуживании или неконсистентному состоянию данных. Если приложение в ошибке возвращает stack trace, пропускает проверку, повторяет операцию бесконечно или сохраняет объект наполовину — это уже вопрос безопасности, а не только надёжности.
Нужны fail-safe defaults, аккуратная обработка исключений, таймауты и circuit breaker'ы, защита от бесконечных ретраев, идемпотентность критичных операций, маскирование внутренних ошибок во внешних ответах. Abuse-сценарии на деградацию зависимостей стоит закладывать при проектировании, а не проверять только на продакшен-инцидентах.
Подробности — OWASP Top 10:2025 A10.
WAF (Web Application Firewall) фильтрует HTTP-трафик до приложения и закрывает часть категорий на сетевом уровне. Он не заменяет безопасный код и зрелые процессы, работает там, где угрозы хорошо распознаются по сигнатурам и аномалиям запросов.
| Категория OWASP Top 10 | Покрытие WAF | Что нужно дополнительно |
| A01 Broken Access Control | Частично (детект паттернов, rate limiting) | Проверки прав в коде, RBAC, policy-as-code |
| A02 Security Misconfiguration | Частично (заголовки, методы, базовые политики) | Hardening, baseline, IaC-проверки |
| A03 Software Supply Chain Failures | Почти не покрывает | SCA, SBOM, подписи артефактов, защищённый CI/CD |
| A04 Cryptographic Failures | Частично (TLS-политики) | Корректная криптография, secret manager, ротация |
| A05 Injection | Хорошо покрывает сигнатурные атаки | Parameterized queries, ORM, валидация |
| A06 Insecure Design | Не покрывает | Threat modeling, secure design |
| A07 Authentication Failures | Частично (anti-bot, rate limiting, credential stuffing) | MFA, passkeys, безопасные сессии |
| A08 Software and Data Integrity Failures | Частично в отдельных сценариях | Подписи, контроль целостности, политика доверия |
| A09 Security Logging and Alerting Failures | Не покрывает напрямую | Централизованные логи, SIEM, алерты |
| A10 Mishandling of Exceptional Conditions | Почти не покрывает | Fail-safe design, таймауты, circuit breaker'ы |
WAF хорошо работает там, где атаку можно распознать по сигнатуре или поведению запроса, но не решает архитектурные проблемы, ошибки процессов и дефекты обработки исключительных состояний.
WAF VK Cloud поставляется с набором правил OWASP Core Rule Set 4.0 — стандартный базовый слой фильтрации для SQLi, XSS, RCE, LFI и других типовых веб-атак. Из коробки доступны кастомные политики, rate limiting, защита от ботов и credential stuffing, geo-фильтрация и интеграция с системой логирования. Подключение — из панели VK Cloud за несколько минут.
OWASP Top 10:2025 — это не исчерпывающий стандарт безопасности, а минимальный и практичный набор тем, без которых нельзя всерьёз говорить о защите веб-приложений. В новой редакции хорошо видно, что реальная безопасность складывается не только из безопасного кода, но и из архитектуры, конфигурации, цепочки поставки, логирования и устойчивости системы в нештатных режимах.
Если ресурсов мало, разумно начать с A01, A04 и A05: контроль доступа, криптография и инъекции по-прежнему дают самую прямую связь с реальными инцидентами. После этого стоит подтянуть A02 и A03, потому что misconfiguration и supply chain сегодня ломают прод не хуже классических багов. Дальше — выстраивать полноценный DevSecOps-контур: security review, SCA, WAF, SIEM, secret manager и нормальную работу с исключительными состояниями.
Наши специалисты свяжутся с вами в ближайшее время и ответят на все вопросы.

Будем держать в курсе новостей и облачных трендов




