OWASP

Категория: Сигурност

Какво е OWASP?

OWASP (Open Web Application Security Project) е световна нестопанска организация, която се занимава с подобряване на сигурността на софтуера. OWASP предоставя безплатни материали, инструменти и документация за разработчици, архитекти и специалисти по сигурност.

Организацията е известна най-вече с публикуването на “OWASP Top 10” - списък с най-критичните рискове за сигурността на уеб приложенията, който се актуализира редовно.

OWASP Top 10 - 2021

Това са 10-те най-критични рискове за сигурността на уеб приложенията според последното издание:

1 Неправилен Контрол на Достъпа (Broken Access Control) Висок

Потребителите могат да извършват действия, които не са им разрешени. Включва нарушаване на принципа на най-малките привилегии.

  • Неограничен достъп до API endpoints
  • Манипулация на ID параметри
  • Нарушаване на контрола на достъпа

2 Криптографски Неуспехи (Cryptographic Failures) Висок

Неуспехи в криптирането, които водят до изтичане на чувствителни данни.

  • Несигурно съхранение на пароли
  • Липса на криптиране на данни
  • Използване на слаби алгоритми

3 Вмъкване (Injection) Висок

Вмъкване на злонамерен код, който се интерпретира от системата.

  • SQL Injection
  • Command Injection
  • NoSQL Injection

4 Несигурен Дизайн (Insecure Design) Висок

Несигурен дизайн, фокусиран върху недостатъци в контролите на сигурността.

  • Липса на threat modeling
  • Несигурни бизнес логики
  • Недостатъчна валидация

5 Неправилна Конфигурация на Сигурността (Security Misconfiguration) Среден

Неправилна конфигурация на сигурността в приложението или инфраструктурата.

  • Необновени компоненти
  • Ненужни услуги
  • Несигурни настройки по подразбиране

6 Уязвими Компоненти (Vulnerable Components) Висок

Използване на компоненти с известни уязвимости.

  • Необновени библиотеки
  • Използване на deprecated компоненти
  • Липса на monitoring за уязвимости

7 Неуспехи в Удостоверяването (Authentication Failures) Среден

Неуспехи в системите за удостоверяване на идентичността.

  • Слаби пароли
  • Липса на multi-factor authentication
  • Несигурно управление на сесии

8 Целост на Софтуера и Данните (Software and Data Integrity) Среден

Нарушаване на целостта на софтуера и данните.

  • Несигурни CI/CD процеси
  • Deserialization of untrusted data
  • Липса на кодова сигнатура

9 Неуспехи в Регистрирането на Сигурността (Security Logging Failures) Среден

Неадекватно регистриране и наблюдение на сигурността.

  • Липса на аудит следи
  • Недостатъчно логиране
  • Невъзможност за откриване на атаки

10 Server-Side Request Forgery (SSRF) Среден

Атаки, при които сървърът е принуден да извърши заявки към вътрешни ресурси.

  • Манипулация на URL параметри
  • Достъп до вътрешни системи
  • Обхождане на вътрешна мрежа

Предотвратяване на атаки - Най-добри практики

Валидация на Входните Данни (Input Validation)

Валидирайте всички потребителски входни данни. Използвайте white-listing подход вместо black-listing.

Параметризирани Заявки (Parameterized Queries)

Използвайте параметризирани заявки за предотвратяване на SQL injection.

Контроли за Удостоверяване (Authentication Controls)

Имплементирайте силни механизми за удостоверяване и multi-factor authentication.

Контрол на Достъпа (Access Control)

Прилагайте принципа на най-малките привилегии и проверявайте разрешенията на сървъра.

Криптиране (Encryption)

Криптирайте чувствителни данни както по време на предаване, така и при съхранение.

Сигурни HTTP headers (Security Headers)

Използвайте сигурни HTTP headers като Content Security Policy, HSTS, X-Frame-Options.

Обработка на Грешки (Error Handling)

Не разкривайте детайли за грешки на потребителите. Използвайте общи съобщения.

Управление на Зависимости (Dependency Management)

Регулярно обновявайте библиотеки и компоненти. Мониторьте за известни уязвимости.

Инструменти на OWASP

  • OWASP ZAP (Zed Attack Proxy): Безплатен инструмент за тестване на сигурността на уеб приложения
  • OWASP Dependency-Check: Инструмент за сканиране на зависимости за известни уязвимости
  • OWASP WebGoat: Умишлено несигурно уеб приложение за обучение
  • OWASP Juice Shop: Модерно несигурно уеб приложение за обучение
  • OWASP ASVS (Application Security Verification Standard): Стандарт за проверка на сигурността
  • OWASP Cheat Sheet Series: Наръчници с най-добри практики за различни теми

Интеграция в SDLC

  • Фаза на изисквания: Дефиниране на security requirements и threat modeling
  • Фаза на дизайн: Security architecture review и дизайн на контроли
  • Фаза на разработка: Secure coding practices и code review
  • Фаза на тестване: Security testing (SAST, DAST, penetration testing)
  • Фаза на внедряване: Secure configuration и deployment checks
  • Фаза на поддръжка: Monitoring, patch management и incident response

Методи за тестване на сигурността

  • SAST (Static Application Security Testing): Анализ на source code за потенциални уязвимости
  • DAST (Dynamic Application Security Testing): Тестване на работещо приложение за уязвимости
  • SCA (Software Composition Analysis): Анализ на third-party компоненти за уязвимости
  • Penetration Testing: Симулиране на реални атаки срещу приложението
  • Code Review: Ръчен преглед на кода за security issues
  • Threat Modeling: Идентифициране на потенциални заплахи и уязвимости

Често срещани грешки и решения

ГрешкаРискРешение
Пряко изпълнение на потребителски входSQL Injection, Command InjectionПараметризирани заявки, input validation
Несигурно съхранение на паролиИзтичане на credentialsBCrypt, Argon2, PBKDF2
Липса на rate limitingBrute force атакиИмплементиране на ограничения на заявките
Невалидирани redirectsPhishing атакиВалидация на URL адреси за пренасочване
Несигурни deserializationRemote code executionВалидация на сериализирани данни

OWASP практики - Сигурност на уеб приложенията

Отворени стандарти и най-добри практики за защита на уеб приложения