OWASP Top 10 2025: что изменилось и где теперь болит
«Если твой пентест-чеклист из 2021 года — ты уже опоздал. Мир поменялся, OWASP тоже.» 💀
OWASP обновил Top 10 в 2025 году, и это не косметика — два новых класса уязвимостей, одна консолидация и жёсткий сдвиг философии. Главный тезис: фокус переехал с симптомов на первопричины. Больше не «Sensitive Data Exposure», теперь — «Cryptographic Failures». Разница огромная: один говорит что случилось, второй — почему.
📊 2021 vs 2025: таблица изменений
| # | OWASP 2021 | OWASP 2025 | Статус |
|---|---|---|---|
| A01 | Broken Access Control | Broken Access Control | 🔴 Остался #1, +SSRF внутри |
| A02 | Cryptographic Failures | Security Misconfiguration | ⬆️ Взлетел с #5 до #2 |
| A03 | Injection | Software Supply Chain Failures | 🆕 Новая категория |
| A04 | Insecure Design | Cryptographic Failures | ⬇️ Упал с #2 до #4 |
| A05 | Security Misconfiguration | Injection | ⬇️ Упал с #3 до #5 |
| A06 | Vulnerable & Outdated Components | Insecure Design | ⬇️ С #4 до #6 |
| A07 | Auth Failures | Authentication Failures | 🟡 Переименован |
| A08 | Software & Data Integrity Failures | Software or Data Integrity Failures | 🟡 Уточнён |
| A09 | Security Logging & Monitoring | Logging & Alerting Failures | 🟡 Уточнён |
| A10 | SSRF | Mishandling of Exceptional Conditions | 🆕 Новая, SSRF ушёл в A01 |
🔴 A01: Broken Access Control — всё ещё #1, теперь жирнее
Остался на вершине и стал ещё шире — SSRF теперь живёт здесь. Логика простая: SSRF позволяет серверу делать запросы от имени атакующего — это нарушение контроля доступа на уровне сервиса, а не отдельная история. В среднем 3.73% протестированных приложений имеют хотя бы одну из 40 CWE этой категории.
Где болит в 2026:
→ IDOR / BOLA в REST и GraphQL API
→ SSRF через URL-параметры (Webhook, avatar upload, PDF-генераторы)
→ Path traversal в облачных сервисах
→ Privilege escalation через JWT claims
# Классический SSRF, теперь под A01
GET /fetch?url=http://169.254.169.254/latest/meta-data/
Host: target.com
# Bypass через редирект
GET /fetch?url=https://attacker.com/redirect → http://internal-service/
⬆️ A02: Security Misconfiguration — взлетел с #5 на #2
Самый показательный сдвиг релиза. Мисконфиги встречаются чаще всего в данных этого цикла — облако, Kubernetes, дефолтные настройки фреймворков, открытые S3-бакеты. В мире микросервисов и IaC каждый новый деплой — потенциальный мискониф.
Топ векторов:
# Дефолтные креды
curl -u admin:admin http://target.com/manager/html # Tomcat
curl http://target.com/phpmyadmin/ # phpMyAdmin
# Открытые debug-интерфейсы
/actuator/env # Spring Boot — дамп всех env vars 💣
/actuator/heapdump # Heap dump с секретами в памяти
/.env # Laravel, Django, Node.js
# CORS мискониф
curl -H "Origin: https://evil.com" -I https://api.target.com/user/me
# Если Access-Control-Allow-Origin: https://evil.com — GG
🔥 Лайфхак: Nuclei template misconfiguration — запускай первым делом. Там 300+ проверок на дефолтные конфиги, и каждый второй энгейджмент что-нибудь выдаёт.
🆕 A03: Software Supply Chain Failures — добро пожаловать в 2025
Это самое крупное концептуальное изменение. Старая «Vulnerable and Outdated Components» смотрела только на известные CVE. Новая категория охватывает весь жизненный цикл зависимостей: пакеты, build-системы, CI/CD, дистрибуция.
У неё наименьшее число инцидентов в данных, но наивысший средний балл exploit+impact из всех CVE — редко, но метко.
Векторы атаки:
→ Typosquatting: colorsjs vs colors (npm/PyPI)
→ Dependency confusion: внутренний пакет vs публичный
→ Compromised build pipeline (SolarWinds-style)
→ Malicious GitHub Actions в workflow
→ Backdoored Docker image на DockerHub
# Аудит зависимостей
npm audit --audit-level=high
pip-audit -r requirements.txt
trivy fs --severity HIGH,CRITICAL .
# Проверяем, нет ли зависимостей с тайпосквоттингом
pip install pip-audit
pip-audit --desc
🔐 A04: Cryptographic Failures — упал, но не умер
Слетел с #2 на #4, потому что мисконфиги и supply chain вырвались вперёд — но крипто-баги никуда не делись. Смена названия с «Sensitive Data Exposure» на «Cryptographic Failures» — это про то самое мышление root cause vs symptom.
# Что до сих пор встречается в 2026
→ MD5/SHA1 для хэширования паролей
→ ECB mode в AES (привет, блочные паттерны)
→ Жёстко зашитые ключи в коде
→ JWT с алгоритмом "none" или weak secret
→ TLS 1.0/1.1 на старых эндпоинтах
# Проверка слабого JWT
import jwt
jwt.decode(token, "", algorithms=["none"]) # Если не падает — ты нашёл баг 💀
💉 A05: Injection — ветеран упал на 5-е место
SQLi, XSS, XXE, SSTI — всё это живо, просто стало реже встречаться из-за зрелости фреймворков. Но это не значит «проверять не надо» — в легаси и самописных решениях инъекции цветут как весной.
# SQLi — быстрая проверка
sqlmap -u "https://target.com/user?id=1" --dbs --batch --level=3
# SSTI — часто забывают
{{7*7}} # Jinja2, Twig
${7*7} # FreeMarker, Thymeleaf
<%= 7*7 %> # ERB (Ruby)
# NoSQLi в MongoDB
{"username": {"$gt": ""}, "password": {"$gt": ""}}
🆕 A10: Mishandling of Exceptional Conditions — новичок списка
Абсолютно новая категория. Смысл: приложения падают непредсказуемо при ошибках, раскрывают стек-трейсы, внутренние пути, версии компонентов, или ломают логику безопасности при исключениях. Любимый вектор пентестера — дёргать приложение в нестандартных сценариях.
Что тестируем:
→ Отправка null/пустых полей → stack trace в ответе?
→ Неверный Content-Type → 500 с деталями?
→ Граничные значения: -1, 0, 9999999, ""
→ Прерывание транзакции на полпути → race condition?
→ Двойная отправка формы оплаты → двойное списание?
POST /api/transfer
{"amount": null, "to": "attacker"}
# Если в ответе:
# {"error": "TypeError at /app/banking/views.py line 47:
# unsupported operand type(s) for -: 'NoneType' and 'int'"}
# — ты нашёл и A10, и раскрытие пути 🎯
🧠 Главные выводы для пентестера
Что изменилось в подходе к тестированию:
- Supply Chain теперь в скоупе — проверяй
package.json,requirements.txt,Dockerfileкак часть энгейджмента - SSRF проверяй через призму A01 — не изолированно, а в контексте всей цепочки доступа
- Мисконфиги — твой быстрый win — #2 в списке, находятся нюклеем за 5 минут
- Error handling — новый вектор — молоти API нестандартными инпутами, читай ошибки
# Минимальный чеклист по OWASP 2025 за один энгейджмент
nuclei -u https://target.com -t misconfiguration/ # A02
nuclei -u https://target.com -t exposures/ # A04, A10
sqlmap + manual injection testing # A05
jwt_tool -t https://target.com/api/auth # A04, A07
trivy fs . + npm audit # A03
manual IDOR testing через Burp # A01
Итог: OWASP 2025 — это взросление индустрии. Меньше «ой, нашли SQLi», больше «твой билд-пайплайн скомпрометирован, и ты об этом узнаешь через полгода». Учись думать экосистемой, а не отдельными CVE. 💀
Похожие статьи

GraphQL: интроспекция включена, безопасность — нет

BOLA/IDOR в REST API: итерируй всё подряд и молчи
