Обнаружение секретов и ПДн

Поиск секретов по префиксам и энтропии, обнаружение ПДн и карт с проверкой Луна.

Traffic Jam пассивно сканирует каждый импортированный захват на наличие утечек учётных данных и персональных данных, а также отдельно маскирует эти же данные в представлениях анализа и экспортах. Всё обнаружение выполняется локально в браузере над разобранными сессиями; ничего не отправляется на сервер, и из представления обнаружения не исходят никакие активные зонды. Откройте вкладку API lab → Security, чтобы увидеть результаты.

Панель индикаторов безопасности

Вкладка Security открывается панелью индикаторов с пятью счётчиками, вычисляемыми по активным захватам: находки High severity, Exposed secrets, PII signals, Risky cookies и TLS issues. Кнопки JSON IOCs и CSV в заголовке панели скачивают наборы индикаторов (см. Экспорт IOC).

Под панелью доказательства сгруппированы по четырём вкладкам:

ВкладкаСодержимое
HTTP findingsПассивные находки по заголовкам/куки/CORS/кэшу (см. /docs/ru/security/)
Secrets & PIIСписки «Credential material» и «PII exposure»
Identity flows«Cookie posture» и «Credential lifecycles»
TLS intelligenceАудит сертификатов/TLS и кластеры клиентов

Каждая строка с секретом или ПДн показывает маскированное значение, эндпоинт и расположение (например, request header authorization или response body). Клик по строке открывает исходный запрос в инспекторе. Списки отображают до 250 строк.

Обнаружение секретов по известным префиксам и структуре

Сканер проверяет заголовки запросов и ответов, query-строку URL, путь URL, а также тела запросов/ответов на четыре типа находок:

ТипЧто обнаруживается
known-tokenФорматы ключей провайдеров с фиксированными префиксами (ниже)
jwtКомпактные JWS-токены (eyJ…eyJ…)
private-keyPEM-блоки -----BEGIN … PRIVATE KEY-----
high-entropyДлинные строки с высокой энтропией (ниже)

Распознаваемые форматы с известными префиксами: идентификаторы ключей доступа AWS (AKIA/ASIA/ABIA/ACCA + 16), токены GitHub (gh[pousr]_) и fine-grained PAT (github_pat_), GitLab PAT (glpat-), секретные/ограниченные ключи Stripe (sk_/rk_ с live/test), токены Slack (xox[baprs]-), ключи Google API (AIza…) и OAuth-токены (ya29.), токены Square (sq0atp-/sq0csp-), ключи Twilio (SK + 32 hex), токены npm (npm_ + 36), токены Shopify (shpat_), ключи SendGrid (SG.…) и ключи OpenAI (sk-).

Находки дедуплицируются по метке, маскированному значению, расположению и эндпоинту; повторные срабатывания увеличивают счётчик вхождений и сохраняют до пяти идентификаторов запросов-примеров. Результаты сортируются по серьёзности (private-key > known-token > jwt > high-entropy), затем по числу вхождений.

Обнаружение по энтропии

Строки длиной 20–512 символов из набора [A-Za-z0-9_\-+/=.] оцениваются по энтропии Шеннона. Кандидат сообщается как токен с высокой энтропией только если он:

  • не является UUID, датой, semver, MIME-типом или схемой URL (частые ложные срабатывания);
  • не является строкой из повторяющихся символов или повторяющихся групп;
  • содержит хотя бы одну букву и хотя бы два класса символов (строчные, прописные, цифры);
  • достигает порога энтропии 4.2 бит/символ (или 3.3 для чисто hex-строк длиной от 32 символов).

[!NOTE] Обнаружение по энтропии эвристично и настроено так, чтобы подавлять шум естественного языка и идентификаторов. Рассматривайте строки high-entropy как кандидатов на разбор, а не как подтверждённые секреты.

Обнаружение ПДн и платёжных карт

Сканер ПДн читает только тела запросов и ответов (не заголовки) и сообщает о пяти типах:

ТипОбнаружениеМаскированная форма
credit-cardПоследовательности из 13–19 цифр, проходящие контрольную сумму Луна•••• 1234 (последние 4)
ssn\d{3}-\d{2}-\d{4}•••-••-1234
emailСтандартный паттерн адресаj…@e…com
phoneПоследовательности из 7–15 цифр, похожие на телефон•••12 (последние 2)
ip-addressIPv4-адреса, подлежащие отчёту10.20.×.×

Кандидаты в карты сообщаются только при прохождении проверки Луна. Отчёт по IPv4 пропускает 0.x, loopback (127.x), multicast/broadcast (≥224, 255.255.255.255) и диапазоны документации RFC 5737 (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24). Число находок ограничено 500 на тип, сохраняется до пяти идентификаторов запросов-примеров.

Энтропия куки и сигналы фиксации сессии

Список Identity flows → Cookie posture профилирует каждое имя куки для каждого хоста на протяжении таймлайна захвата: количество установок/отправок, число уникальных значений, среднюю энтропию Шеннона (бит/символ), максимальную длину значения и согласованность Secure/HttpOnly/SameSite (always/sometimes/never). Профайлер выдаёт заметки, когда:

  • флаг Secure или HttpOnly непоследователен между ответами Set-Cookie;
  • SameSite различается между ответами;
  • появляется более 8 уникальных значений (похоже на токен на каждый запрос, а не на стабильный идентификатор сессии);
  • средняя энтропия значения установленной куки ниже 2.5 («идентификаторы сессии могут быть предсказуемы»);
  • значение было отправлено клиентом до того, как какой-либо Set-Cookie его определил — помечается как риск фиксации сессии (бейдж fixation risk).

Экспорт IOC

Кнопки панели JSON IOCs и CSV собирают индикаторы из всех загруженных сессий в набор из domains, ips, ja3, ja4, certSha256 и urls (URL ограничены 2000). Источники включают authority запросов, IP клиентов/серверов, JA3/JA4-отпечатки TLS ClientHello и SNI, а также SAN и SHA-256-отпечатки сертификатов.

  • JSON (traffic-jam-iocs.json): метка времени generatedAt, объект counts и шесть отсортированных массивов.
  • CSV (traffic-jam-iocs.csv): заголовок type,value со строками типов domain, ip, ja3, ja4, cert-sha256, url; значения, содержащие запятые или кавычки, берутся в кавычки.

Как маскируются конфиденциальные значения

Независимо от обнаружения, представления анализа и сгенерированные экспорты по умолчанию скрывают учётные данные:

  • Заголовки. authorization, proxy-authorization, cookie, set-cookie, x-api-key, x-auth-token, x-access-token, x-session-token, x-csrf-token, x-xsrf-token, а также любой заголовок, имя которого содержит чувствительный токен (например, token, secret, signature, password). Authorization превращается в Bearer <redacted>; куки превращаются в пары name=<redacted>; остальные становятся <redacted>. Заголовки корреляции/трассировки (traceparent, x-request-id, x-device-id, …) никогда не маскируются.
  • URL. Учётные данные в user-info, сегменты пути с учётными данными (сегменты после контекстных слов вроде token, oauth, reset или совпадающие с известными форматами ключей/JWT), чувствительные имена query (token, api_key, а также code, key, sig) и значения фрагмента заменяются на <redacted>. Заголовки с полным URL (location, referer, …) скрываются на месте.
  • Тела. JSON-поля с чувствительными именами становятся "<redacted>" (ключи, содержащие паттерны учётных данных, становятся "<redacted-key>"); значения form-urlencoded, multipart (по имени части) и разметки HTML/XML скрываются; в свободном тексте выполняется замена по паттернам Bearer/JWT/известных ключей. Непрозрачные тела, которые нельзя безопасно проинспектировать, заменяются на <redacted: opaque body> в экспортах, предназначенных для передачи.

Сгенерированные примеры curl, Python, Postman и OpenAPI применяют то же скрытие; см. /docs/ru/analysis/exports/ и /docs/ru/api-re/catalog/ о манифесте безопасности экспорта, который подсчитывает скрытия и пропущенные непрозрачные тела.

Раскрытие захваченных значений

Маскирование действует на уровне отображения и снимается только явным включением опции. Откройте Settings → Security и включите Reveal sensitive values in the UI. Переключатель по умолчанию выключен, автоматически отключается через 15 минут и влияет только на отображение — для replay и экспорта требуется собственное отдельное включение, прежде чем будут использованы захваченные учётные данные. При включённом раскрытии инспектор запросов копирует полный URL запроса вместо скрытого (см. /docs/ru/analysis/inspector/).

[!WARNING] Раскрытые значения появляются на экране и в буфере обмена. Включайте раскрытие только на доверенной рабочей станции при просмотре захватов, которые вам разрешено обрабатывать.

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