Небезпечний дизайн – це проблеми в архітектурі та дизайні додатка, які можуть призвести до вразливостей безпеки.

Опис: Поганий дизайн або архітектурні рішення, які не враховують питання безпеки.
Приклад: Архітектура, що допускає небезпечні або неконтрольовані дані у внутрішні процеси, що може призвести до витоків інформації або атак.
Опис: Неврахування безпеки на етапі проектування або розробки додатка.
Приклад: Необхідні заходи безпеки не включені в планування та реалізацію додатка, що призводить до вразливостей.
Опис: Неналежне управління доступом до функцій та даних.
Приклад: Відсутність сегментації доступу або захисту чутливих даних, що дозволяє неавторизованим користувачам отримати доступ до критичних функцій.
Single Entry Point, або Front Controller, є архітектурним шаблоном, де всі запити до веб-додатку спрямовуються через одну точку доступу. Це забезпечує централізовану обробку запитів, що спрощує контроль за безпекою та маршрутизацією.
У фреймворках, таких як Symfony, Laravel та Yii2, цей патерн реалізується через єдиний файл, наприклад index.php, який обробляє всі запити до програми.
Якщо Front Controller налаштований неправильно або містить вразливості, зловмисники можуть спробувати обійти його або використати для атак. Це може призвести до того, що вони отримають доступ до файлів або директорій, оминаючи основний механізм контролю. Такі ситуації виникають через некоректну конфігурацію сервера, коли дозволяється прямий доступ до файлів, які повинні бути захищені.
curl http://target-site.com/config.php
Якщо в маршрутизації є помилки, зловмисники можуть спробувати маніпулювати маршрутами для доступу до небажаних частин додатку.
curl http://target-site.com/index.php?controller=Admin&action=editUser&id=1
Можливе використання параметрів запиту для маніпуляцій або виконання небажаних дій.
curl http://target-site.com/index.php?module=User&action=delete&id=1
Зловмисники можуть шукати уразливості в коді, який обробляє запити через Front Controller, такі як SQL ін’єкції або інші атаки на основі вхідних даних.
curl http://target-site.com/index.php?search=’ OR ‘1’=’1
Основні принципи:
Мінімізація відкритих портів: Тільки необхідні порти повинні бути доступні для користувачів. Наприклад, порти для веб-сервера (80/443 для HTTP/HTTPS) або порт для бази даних (якщо він необхідний).
Обмеження доступу до критичних портів: Деякі порти, наприклад, порт 22 для SSH, повинні бути відкриті тільки за вимогою або доступні лише з ізольованого середовища, наприклад, через VPN або з певних IP-адрес.
Моніторинг та аудит: Постійний моніторинг відкритих портів і аудит налаштувань допомагають вчасно виявити та закрити непотрібні порти.
Застосування брандмауера (firewall): Використовуйте правила брандмауера для обмеження доступу до портів, дозволяючи доступ тільки для певних служб та з певних IP-адрес.
Використання інструментів, таких як Nmap, для сканування мережі і виявлення відкритих портів. Це перший крок в атаках на відкриті порти.
nmap -p- target-ip
Після виявлення відкритих портів зловмисники можуть спробувати використовувати уразливості у відповідних службах.
hydra -l username -P password_list.txt ssh://target-ip
Відкриті порти можуть бути використані для проведення атак типу Denial of Service (DDoS), спрямованих на перевантаження ресурсу.
Зловмисник може скористатися відкритим портом для створення тунелю і доступу до внутрішніх ресурсів, які зазвичай не доступні ззовні.
ssh -L 8080:localhost:80 user@target-ip
Deny by Default і Fail Early — це принципи розробки та безпеки додатків, які передбачають, що система автоматично блокує доступ або виконання дій, якщо не виконуються необхідні умови, а також зупиняє роботу коду на ранніх етапах при виявленні помилок або проблем. Це допомагає мінімізувати ризики і підвищує надійність системи.
Deny by Default:
Усі дії та доступи повинні бути заборонені за замовчуванням, і лише після успішного проходження необхідних перевірок дозволяється виконання дій або доступ. Такий підхід мінімізує ризик випадкового або несанкціонованого доступу. Принцип Fail Early:
При виявленні помилки або неправильного стану система повинна негайно припинити подальше виконання, щоб уникнути поглиблення проблем або можливих атак.
Атаки на системи з неправильним впровадженням цих принципів
Якщо в системі є приховані маршрути або функції, які не мають явних перевірок доступу, зловмисник може отримати доступ до них, використовуючи прямий запит.
curl -X POST https://target-app.com/hidden-route
Якщо перевірка автентифікації не виконується належним чином на всіх етапах процесу, зловмисник може залишити сесію відкритою та використовувати її для атаки.
Зловмисник може спробувати виконати адміністративні дії через стандартний інтерфейс користувача, якщо система не перевіряє ролі та дозволи належним чином.
Whitelist та Blacklist є важливими методами для управління доступом і обмеженням дій у системах.
Whitelist (список дозволених): Включає лише ті елементи, які дозволені. Все інше автоматично заборонено. Це підхід, який забезпечує більший рівень безпеки, оскільки він чітко визначає, що можна робити.
Blacklist (список заборонених): Включає лише ті елементи, які заборонені. Все інше автоматично дозволено. Це менш надійний підхід, оскільки він не охоплює всі можливі загрози.
Якщо в Blacklist заборонені лише певні розширення (наприклад, .php), зловмисник може завантажити файл з іншими розширеннями, які все одно можуть бути виконані на сервері (наприклад, .phtml, .php5).
curl -X POST https://target-app.com/upload -F “[email protected]”
Якщо система дозволяє завантажувати певні типи файлів (наприклад, зображення), зловмисник може вбудувати шкідливий код у метадані файлу. Вбудовування шкідливого JavaScript у зображення через XSS-атаку.
Зловмисник може спробувати використовувати нестандартні або нові розширення, які не включені в Whitelist, але можуть бути виконані на сервері. Завантаження файлу з розширенням .phar, яке також може бути виконано на деяких серверах.