---
name: vakhunter_security_fixes
description: "VakHunter — фиксы безопасности после аудита Platega/бота (session-fixation, реф-кап, вебхук-bind)"
metadata: 
  node_type: memory
  type: project
  originSessionId: b11e39bd-4f6f-47c9-ba7b-680ccf041a5b
---

2026-07-06, аудит по запросу юзера. Platega сверена с докой — ок (fail-closed `verify_callback`, constant-time HMAC, статусы CONFIRMED/CANCELED/CHARGEBACKED). 143 «pending» = дотестовый мусор (пустой invoice_id) → canceled + guard `if not invoice_id: 400`.

6 фиксов бота (`~/Services/VakHunter`, все с реальными прогонами, бэкапы `.bak-secfix-*`):
1. **CRITICAL session-fixation** `/start login_<token>` (`bot/main_ptb.py:222`): бот делал INSERT+безусловный UPDATE → авторизовал любой чужой токен. Фикс: подтверждать только токен, созданный сайтом (must exist + pending + ≤600с). См. [[verstak_rename]] эталон avtero/studio — in-memory `_TOKENS`, безопасны (уязвима была ТОЛЬКО VakHunter).
2. реф-кап 20/сут в `db.add_referral` (единая точка бот+веб).
3. вебхук bind `0.0.0.0`→`127.0.0.1` (env `PAYMENT_WEBHOOK_BIND`), Funnel и так с localhost.
4. гонка бонуса `mark_referral_purchase_rewarded`: условный UPDATE + rowcount guard.
5. `acquisition.py`: мёртвый SQL убран, `html.escape(src)`.

**Политика наград (решение юзера):** денежная реф-награда только в «Земля без риска»; в остальных не деньги (VakHunter = дни Pro). См. [[zemlya_tbr_partner_scope]].
Детали — Obsidian VakHunter Changelog 2026-07-06 + Decisions D18/D19.
