Пассивные находки безопасности
Автоматические проверки: HSTS/CSP, флаги cookie, CORS, открытые пароли, раскрытие версий.
Traffic Jam прогоняет каждую перехваченную пару запрос/ответ через фиксированный набор пассивных правил HTTP-безопасности. Проверки выполняются исключительно над тем трафиком, который вы уже перехватили, — из этого представления не отправляется никаких активных проб, а значения учётных данных остаются замаскированными. На этой странице описаны типы находок, модель уровней серьёзности, способ агрегации результатов, а также предупреждения о перехвате WebSocket/QUIC.
Открытие представления находок
Находки находятся в рабочем пространстве API, на вкладке Security, в подвкладке HTTP findings.
- Откройте рабочее пространство API для одного или нескольких импортированных перехватов.
- Выберите вкладку Security.
- Панель индикаторов вверху суммирует находки уровня High severity, раскрытые секреты, сигналы PII, рискованные cookie и проблемы TLS.
- Выберите подвкладку HTTP findings (первая из четырёх: HTTP findings, Secrets & PII, Identity flows, TLS intelligence).
В каждой строке показаны заголовок находки, хост, пояснительный текст и количество срабатываний. Щёлкните по строке, чтобы перейти к образцу запроса в инспекторе. В списке отображается не более 250 строк.
Типы находок
Правила делятся на шесть групп. Правила на присутствие заголовка срабатывают только для HTTPS-ответов; остальные применяются к любой схеме.
| ID правила | Серьёзность | Условие срабатывания |
|---|---|---|
missing-hsts | medium | В HTTPS-ответе нет заголовка Strict-Transport-Security |
missing-csp | low | В HTML-ответе (text/html) нет Content-Security-Policy |
missing-nosniff | info | В ответе HTML/JSON/JS/CSS нет X-Content-Type-Options: nosniff |
cookie-missing-secure | medium | В Set-Cookie поверх HTTPS отсутствует атрибут Secure |
cookie-missing-httponly | low | В Set-Cookie отсутствует HttpOnly (читается из JavaScript) |
cookie-missing-samesite | low | В Set-Cookie нет атрибута SameSite |
cookie-samesite-none-insecure | medium | SameSite=None без Secure |
cacheable-authenticated-response | medium | 2xx-ответ JSON/HTML на аутентифицированный запрос без Cache-Control: no-store/private |
token-in-url | high | Имя query-параметра похоже на учётные данные |
redirect-secret-leak | high | Цель редиректа Location содержит чувствительный query-параметр |
plaintext-credentials | high | plain-HTTP-запрос содержит заголовок Authorization/Cookie или чувствительный query-параметр |
cors-wildcard | info | Access-Control-Allow-Origin: * |
cors-wildcard-with-credentials | high | Access-Control-Allow-Origin: * вместе с Allow-Credentials: true |
cors-reflected-origin | low | Origin запроса отражается в Access-Control-Allow-Origin |
cors-reflected-origin-with-credentials | high | Отражённый origin при включённых credentials |
server-version-disclosure | info | Заголовок Server содержит цифру |
x-powered-by-disclosure | info | Присутствует заголовок X-Powered-By |
Аутентифицированным считается запрос, содержащий заголовок запроса Authorization или Cookie. Правило кэшируемого ответа игнорирует ответы, в которых уже задано no-store или private.
Модель уровней серьёзности
Каждая находка имеет один из четырёх уровней серьёзности с рангом для сортировки:
| Серьёзность | Ранг | Бейдж |
|---|---|---|
high | 3 | danger |
medium | 2 | warning |
low | 1 | outline |
info | 0 | metadata |
Список находок сортируется по серьёзности (сначала наиболее серьёзные), затем по количеству срабатываний, затем по заголовку. Плашка High severity на панели индикаторов считает только находки уровня high.
Как агрегируются находки
Находки группируются по ruleId + хост + групповой ключ (имя cookie, имя query-параметра или раскрытое значение Server/X-Powered-By, где применимо). Повторные совпадения на том же хосте увеличивают счётчик срабатываний, а не создают дублирующие строки. Каждая находка хранит до 5 ID образцов запросов; первый из них — цель перехода при щелчке по строке.
Сводка lint также сообщает, сколько обменов было проанализировано, сколько из них имели ответ и сколько различных хостов наблюдалось.
[!NOTE] Поскольку группировка выполняется по хосту, один и тот же отсутствующий заголовок на двух хостах выглядит как две отдельные находки.
Что считается учётными данными в URL
Правила token-in-url, redirect-secret-leak и plaintext-credentials опираются на общий сопоставитель чувствительных имён. Имя query-параметра рассматривается как несущее учётные данные, если оно соответствует похожему на секрет шаблону (api-key, auth/authorization, credentials, jwt, secret, session, sign/signature, token) или в точности равно code, key или sig.
[!WARNING] Эти правила лишь сигнализируют о потенциальном раскрытии. Прежде чем сообщать о находке, сверьте любую обработку учётных данных с предполагаемым дизайном системы и тестируйте только те системы, которые вам разрешено оценивать.
Предупреждения о перехвате WebSocket и QUIC/HTTP3
Это предупреждения этапа перехвата, а не находки lint. Они отображаются в строке состояния рабочего пространства и в библиотеке перехвата в виде тултипа с предупреждениями для затронутой сессии.
- Апгрейды WebSocket. Парсер помечает обмен как апгрейд WebSocket, когда запрос или ответ содержит
Upgrade: websocket, а ответ имеет статус101 Switching Protocolsили токенConnection: upgrade. Сессия получает предупреждение видаDetected 2 WebSocket upgrade handshake(s); upgrade metadata is available, but WebSocket message frames are not decoded yet. Обмены с апгрейдом получают бейдж WebSocket upgrade в каталоге (/docs/ru/api-re/catalog/) и бейдж WebSocket в глобальном поиске (/docs/ru/analysis/search/). Декодирование кадров сообщений не поддерживается. - QUIC/HTTP3. UDP-потоки на порту 443 или 8443 учитываются как кандидаты QUIC. Предупреждение сессии гласит:
Detected N QUIC/HTTP3 flow(s) (M UDP packets on port 443/8443); QUIC traffic cannot be decrypted with TLS keylogs, disable QUIC/HTTP3 in the client to capture it. Расшифровка QUIC не поддерживается, поэтому повторите перехват с отключённым в клиенте QUIC. О том, как предупреждения привязываются к импортированным сессиям, см. /docs/ru/capture/importing/.
[!TIP] Предупреждения привязаны к сессии. Если перехват смешивает HTTP/1, HTTP/2, WebSocket и QUIC, только порции WebSocket и QUIC порождают предупреждения; HTTP-обмены по-прежнему питают находки, описанные выше.