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 |
| Несигурно съхранение на пароли | Изтичане на credentials | BCrypt, Argon2, PBKDF2 |
| Липса на rate limiting | Brute force атаки | Имплементиране на ограничения на заявките |
| Невалидирани redirects | Phishing атаки | Валидация на URL адреси за пренасочване |
| Несигурни deserialization | Remote code execution | Валидация на сериализирани данни |