Охват
Что 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).
- Люди и процессы: фишинг, пароли, передаваемые вручную, у кого есть доступ.
- Всё за пределами охвата, указанного в этом отчёте, и любые изменения после его даты.
Это не тест на проникновение.