fix(security): make trustProxy safe so per-IP throttle can't be XFF-spoofed (RT-6.2) #61
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Источник: red-team-аудит, RT-6.2 (
docs/red-team-report.md).Модель угроз: анонимный ассистент снаружи; per-IP throttle — первая стена против флуда.
Что происходит
apps/server/src/main.ts:22—FastifyAdapter({ trustProxy: true }), поэтомуreq.ipберётся изX-Forwarded-For, который клиент подделывает. per-IP throttle5/minнаPOST /api/shares/ai/stream(public-share-chat.controller.ts:71) обходится ротацией заголовка. Тот жеreq.ipвлияет на brute-лимитер/mcpи логи.Фикс
Раз сервис выставляется наружу — он всё равно за reverse-proxy. Достаточно настроить прокси так, чтобы он перезаписывал (а не дописывал)
X-Forwarded-Forреальным IP клиента (см..env.example:5-13). Тогда per-IP throttle оживает без правок кода.Опционально (defense-in-depth) — сделать
trustProxyenv-настраиваемым с безопасным дефолтом:Цена / приоритет
В основном конфиг прокси (код не обязателен). Глобальная правка — нужна регресс-проверка, что за прокси
req.ip= реальный клиентский IP.