Охоплення
Що yof охоплює, а що ні
Клас за класом: що yof шукає у вашому коді, що на працюючому застосунку перевіряє «Автоматизоване тестування» і чого не робить ні те, ні інше.
Як читати таблицю
- У коді: шаблони, які правила шукають у файлах пов'язаного репозиторію. Правило знаходить шаблон і не запускає код, тому більшість таких знахідок потребує підтвердження.
- Наживо: тести на працюючому застосунку. «Автоматизоване тестування» у розробці й не продається, тож нічого з такою позначкою клієнтам поки не доступне.
- Не охоплено: те, чого не робить ні те, ні інше. Звіт ніколи не звучить так, ніби це перевірено.
| Клас | У коді | Наживо | Не охоплено |
|---|---|---|---|
| SQL-ін'єкція |
|
| Введення, що проходить через іншу функцію чи файл, збережена ін'єкція (другого порядку) і помилки всередині ORM. |
| NoSQL-ін'єкція |
|
| Мови запитів інших документних баз і мови, крім JavaScript і TypeScript. |
| Впровадження команд |
|
| Аргументи, впроваджені в програму, викликану без оболонки, та інші мови. |
| Впровадження в шаблон |
|
| Шаблони, прочитані з бази даних, і рушії шаблонів, що працюють у браузері. |
| Виконання коду з даних |
| Тесту наживо немає | Виконання через об'єкт пісочниці та інші мови. |
| Міжсайтовий скриптинг (XSS) |
|
| Обходи довіри в Angular і Vue, налаштування autoescape серверних шаблонів, збережені скрипти й підтвердження у справжньому браузері. |
| Відкрите перенаправлення |
|
| Списки дозволених адрес, які існують і які можна обійти. |
| Підробка запитів з боку сервера (SSRF) |
|
| DNS rebinding, перенаправлення, що ведуть усередину, і доступність хмарних метаданих. |
| Міжсайтова підробка запитів (CSRF) |
|
| Фреймворки, крім застосунків у стилі Express, перевірка на боці проксі й те, чи захищають маршрут налаштування самого браузера. |
| Небезпечне завантаження об'єктів |
|
| Java ObjectInputStream, .NET BinaryFormatter і зовнішні сутності XML. |
| Слабка криптографія |
|
| Довжини ключів, версії протоколів і сертифікати працюючого сервісу, власна криптографія та побічні канали. |
| Паролі в коді та конфігурації |
| Тесту наживо немає | Історія git видалених файлів, чи працює ще знайдений пароль, і одне просте слово без цифри й символу. |
| Завантаження файлів |
|
| Що робить із файлом сховище чи CDN, шкідливий код у завантаженому файлі та обмеження розміру. |
| Dockerfile |
| Тесту наживо немає | Зібрані образи й пакети операційної системи в них не скануються. Кінець підтримки відомий лише для шести офіційних базових образів. |
| docker-compose |
| Тесту наживо немає | Працюючі контейнери та файли env, яких немає в репозиторії. |
| Маніфести Kubernetes |
| Тесту наживо немає | Працюючий кластер, невідрендерені шаблони Helm, RBAC, мережеві та admission-політики й файли з якорями YAML. |
| Terraform |
| Тесту наживо немає | Сам хмарний обліковий запис: розгорнуте може відрізнятися від файлів. Значення зі змінних, модулів чи функцій, інші провайдери та інші типи ресурсів. |
Поза кожним рядком
- Зібрані образи контейнерів і системні пакети всередині них не скануються.
- Ці правила читають файли. Вони не дивляться на робочу систему: кластер, хмарний акаунт і поведінку запущеного застосунку.
- Дані запиту відстежуються лише всередині однієї функції або обробника. Значення, яке спершу проходить через іншу функцію чи файл, не відстежується.
- Мови: синтаксичні правила читають JavaScript і TypeScript. Для Python є прості, точні форми. Для PHP, Ruby, Go, Java, Kotlin і C# є кілька однорядкових форм. Інших мов ці правила не читають.
Ніколи не охоплюється автоматичними перевірками
- Помилки в бізнес-логіці, наприклад ціна чи крок, який можна обійти.
- Вразливості, про які ще ніхто не знає (zero-day).
- Люди й процеси: фішинг, паролі, передані вручну, хто має доступ.
- Усе за межами охоплення, названого в цьому звіті, і будь-які зміни після його дати.
Це не тест на проникнення.