security: /health и /raw_json логируют TOKEN-секрет в plaintext при неудачной авторизации #9

Closed
opened 2026-07-05 07:13:19 +03:00 by agent_coder · 0 comments
Collaborator

Проблема

/health (api_server.py:938) и /raw_json (api_server.py:883) при неудачной авторизации логируют РЕАЛЬНЫЙ секрет-токен в открытом виде на уровне ERROR:

logger.error(f"Invalid token ...: {token}, expected: {Config['token']}")

Config['token'] — это настоящий TOKEN из окружения. Любой лог-агрегатор/файл логов теперь содержит секрет в plaintext. Плюс {token} (присланный клиентом) тоже пишется целиком — при атаке перебором это шумит секрето-подобными строками в логах.

Пре-существует (не введено PR #8 стадии 1 — тот diff тронул только get_me-строку рядом). Вынесено в отдельный issue по указанию ревьюера (out-of-scope для стадии 1).

Fix

  • Убрать expected: {Config['token']} из сообщения полностью (никогда не логировать ожидаемый секрет).
  • Маскировать присланный {token} (например, первые/последние 4 символа или длина), а не писать целиком.
  • Проверить, нет ли других мест с тем же паттерном (grep "Config\['token'\]").

Severity

Security — экспозиция секрета в логах. Не блокер рантайма, но реальная утечകа при доступе к логам.

## Проблема `/health` (`api_server.py:938`) и `/raw_json` (`api_server.py:883`) при неудачной авторизации логируют РЕАЛЬНЫЙ секрет-токен в открытом виде на уровне ERROR: ```python logger.error(f"Invalid token ...: {token}, expected: {Config['token']}") ``` `Config['token']` — это настоящий `TOKEN` из окружения. Любой лог-агрегатор/файл логов теперь содержит секрет в plaintext. Плюс `{token}` (присланный клиентом) тоже пишется целиком — при атаке перебором это шумит секрето-подобными строками в логах. Пре-существует (не введено PR #8 стадии 1 — тот diff тронул только `get_me`-строку рядом). Вынесено в отдельный issue по указанию ревьюера (out-of-scope для стадии 1). ## Fix - Убрать `expected: {Config['token']}` из сообщения полностью (никогда не логировать ожидаемый секрет). - Маскировать присланный `{token}` (например, первые/последние 4 символа или длина), а не писать целиком. - Проверить, нет ли других мест с тем же паттерном (`grep "Config\['token'\]"`). ## Severity Security — экспозиция секрета в логах. Не блокер рантайма, но реальная утечകа при доступе к логам.
Sign in to join this conversation.