Пассивные находки безопасности

Автоматические проверки: HSTS/CSP, флаги cookie, CORS, открытые пароли, раскрытие версий.

Traffic Jam прогоняет каждую перехваченную пару запрос/ответ через фиксированный набор пассивных правил HTTP-безопасности. Проверки выполняются исключительно над тем трафиком, который вы уже перехватили, — из этого представления не отправляется никаких активных проб, а значения учётных данных остаются замаскированными. На этой странице описаны типы находок, модель уровней серьёзности, способ агрегации результатов, а также предупреждения о перехвате WebSocket/QUIC.

Открытие представления находок

Находки находятся в рабочем пространстве API, на вкладке Security, в подвкладке HTTP findings.

  1. Откройте рабочее пространство API для одного или нескольких импортированных перехватов.
  2. Выберите вкладку Security.
  3. Панель индикаторов вверху суммирует находки уровня High severity, раскрытые секреты, сигналы PII, рискованные cookie и проблемы TLS.
  4. Выберите подвкладку HTTP findings (первая из четырёх: HTTP findings, Secrets & PII, Identity flows, TLS intelligence).

В каждой строке показаны заголовок находки, хост, пояснительный текст и количество срабатываний. Щёлкните по строке, чтобы перейти к образцу запроса в инспекторе. В списке отображается не более 250 строк.

Типы находок

Правила делятся на шесть групп. Правила на присутствие заголовка срабатывают только для HTTPS-ответов; остальные применяются к любой схеме.

ID правилаСерьёзностьУсловие срабатывания
missing-hstsmediumВ HTTPS-ответе нет заголовка Strict-Transport-Security
missing-csplowВ HTML-ответе (text/html) нет Content-Security-Policy
missing-nosniffinfoВ ответе HTML/JSON/JS/CSS нет X-Content-Type-Options: nosniff
cookie-missing-securemediumВ Set-Cookie поверх HTTPS отсутствует атрибут Secure
cookie-missing-httponlylowВ Set-Cookie отсутствует HttpOnly (читается из JavaScript)
cookie-missing-samesitelowВ Set-Cookie нет атрибута SameSite
cookie-samesite-none-insecuremediumSameSite=None без Secure
cacheable-authenticated-responsemedium2xx-ответ JSON/HTML на аутентифицированный запрос без Cache-Control: no-store/private
token-in-urlhighИмя query-параметра похоже на учётные данные
redirect-secret-leakhighЦель редиректа Location содержит чувствительный query-параметр
plaintext-credentialshighplain-HTTP-запрос содержит заголовок Authorization/Cookie или чувствительный query-параметр
cors-wildcardinfoAccess-Control-Allow-Origin: *
cors-wildcard-with-credentialshighAccess-Control-Allow-Origin: * вместе с Allow-Credentials: true
cors-reflected-originlowOrigin запроса отражается в Access-Control-Allow-Origin
cors-reflected-origin-with-credentialshighОтражённый origin при включённых credentials
server-version-disclosureinfoЗаголовок Server содержит цифру
x-powered-by-disclosureinfoПрисутствует заголовок X-Powered-By

Аутентифицированным считается запрос, содержащий заголовок запроса Authorization или Cookie. Правило кэшируемого ответа игнорирует ответы, в которых уже задано no-store или private.

Модель уровней серьёзности

Каждая находка имеет один из четырёх уровней серьёзности с рангом для сортировки:

СерьёзностьРангБейдж
high3danger
medium2warning
low1outline
info0metadata

Список находок сортируется по серьёзности (сначала наиболее серьёзные), затем по количеству срабатываний, затем по заголовку. Плашка 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-обмены по-прежнему питают находки, описанные выше.

Документация Traffic Jam. Собрано с помощью Hugo.