Обсудить проект

OWASP Top 10 2025: что изменилось и где теперь болит

30.06.2026

«Если твой пентест-чеклист из 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. 💀