non-functionalchecklists

OWASP Top 10 для тестировщика: что должен знать каждый QA

Security testing — это не только специализированные pentester’ы. Базовые уязвимости из OWASP Top 10 должен уметь проверять каждый QA-инженер. Это не «бонусные навыки» — это базовая профессиональная гигиена в 2026 году.

Top 10 — кратко

A01: Broken Access Control

Юзер A может видеть данные юзера B. Самая часто эксплуатируемая уязвимость.

Как тестировать QA:

  • Залогинься как user1 → получи URL /api/users/1/orders.
  • Замени 1 на 2 → должен быть 403, а не данные user2.
  • Залогинься админом → копируй cookie/token → попробуй с обычным юзером → не должно работать.

A02: Cryptographic Failures

Пароли хранятся в plaintext или со слабым хешем. HTTPS не везде.

Как тестировать:

  • Network tab → все ли запросы HTTPS? Хоть один HTTP — баг.
  • Cookies → Secure и HttpOnly флаги установлены?
  • Если есть доступ к БД (на dev) — пароли хешированы (bcrypt/argon2)?

A03: Injection

SQL, NoSQL, LDAP, command injection.

Как тестировать:

  • В поля ввода: ' OR 1=1--, '; DROP TABLE users--, <script>alert(1)</script>.
  • Если падает 500 или возвращает странное — потенциальная injection.

A04: Insecure Design

Архитектурные проблемы. Например, нет rate limiting на login → brute force возможен.

Как тестировать:

  • 100 раз подряд введи неправильный пароль → есть ли блокировка?
  • Reset password через email → можно ли сделать 1000 запросов?

A05: Security Misconfiguration

Дефолтные пароли, открытые админ-панели, дебаг-режим в проде.

Как тестировать:

  • Известные пути: /admin, /.git, /swagger-ui, /api/docs — доступны без auth?
  • Server header (X-Powered-By) выдаёт версию фреймворка?
  • Stack trace показывается на 500 errors?

A06: Vulnerable Components

Старые библиотеки с CVE.

Как тестировать:

  • npm audit / pip-audit показывает critical vulnerabilities?
  • В team workflow — есть Dependabot / Renovate?

A07: Identification and Authentication Failures

Слабая auth: short passwords accepted, no MFA, session timeout не работает.

Как тестировать:

  • Минимальная длина пароля — какая? «1» проходит?
  • После logout — можно ли с тем же session token зайти снова?
  • MFA: если включена — обходится ли через альтернативный flow?

A08: Software and Data Integrity Failures

Auto-update без проверки подписи, deserialization без validation.

A09: Security Logging and Monitoring Failures

Атаку случилась → но в логах ничего → команда не узнала.

Как тестировать:

  • Попробуй login с неправильным паролем 100 раз → есть ли алерт?
  • Что логируется при успешном login? IP, user-agent, timestamp?

A10: Server-Side Request Forgery (SSRF)

Сервер делает запросы по URL, который контролирует юзер.

Как тестировать:

  • Поле для URL-картинки → введи http://localhost:8080/admin → сервер делает запрос внутрь.

Тулзы для QA

OWASP ZAP — бесплатный, прокси + автоматический сканер. Каждый QA должен попробовать хотя бы раз.

Burp Suite Community — стандарт для security professionals. Free edition достаточна для базовых проверок.

Proxyman / Charles — для перехвата запросов и подмены параметров ('OR 1=1-- вместо нормального значения).

Postman / Bruno — для повторения подозрительных запросов.

Чек-лист QA на security

✅ Авторизация: попробуй доступ чужими ID — должно отказывать. ✅ Все запросы — HTTPS. В Network tab проверь. ✅ Inputs: спецсимволы, SQL фрагменты, XSS-payload — не падает 500, не возвращает странное. ✅ Rate limiting на login и password reset. ✅ Session: после logout старый token не работает. ✅ Error messages: на 500 stack trace не показывается. ✅ Хранение паролей: проверь хеш в БД (на dev). ✅ npm audit / pip-audit — нет critical?

Когда передавать pentester’у

QA не заменяет security-инженера. После твоей базовой проверки — release-критичные фичи (auth, payments, новые API) должны пройти полноценный security audit.

Подробнее: OWASP Top 10, OWASP Testing Guide.