docs(security): чек-лист безопасности игрового контура (аудит живого стенда)

15 пунктов, отмечаются [ ]/[x]. Критичное найдено воспроизведением на
testfront.binom.pw, не чтением кода:
- close_bet проверяет только нижнюю границу окна (now >= expire_time) —
  верхней нет, ставка висит open бесконечно, момент расчёта выбирает
  вызывающий /close;
- в шлюзе нет авто-закрытия (единственный setInterval — WS-heartbeat);
- /bet, /close, /faucet открыты наружу без авторизации; faucet выдал
  5 SOL + 10000 фантиков при SMART_ALLOW_AIRDROP=1 в боевом поде;
- эксплойт воспроизведён: ставка DOWN (entry=9998000000) висела open >2 мин
  после экспирации 15с и закрыта при exitPrice=9997000000 -> payout_done.
Плюс: множитель 1.3x требует 77% винрейта, запертые средства в ваулте,
равные цены не финализируют ставку, NATS без auth, релейер — точка доверия.
This commit is contained in:
2026-09-13 12:40:51 +03:00
parent 30f851fb87
commit 18ecbb42b3
3 changed files with 55 additions and 0 deletions
+7
View File
@@ -65,6 +65,13 @@ binance-market — это **не часть игры**, а **общий инфр
- [ ] Фаза 5 — фронт (баланс/пополнение/вывод) — **не начато**
- [ ] Интеграция с `binance-market` (NATS/WS-клиент `PriceSource`) — **см. ADR-007**
## Безопасность
**Открытый чек-лист — `docs/SECURITY.md`** (15 пунктов: 6 критичных, 3 по экономике, 3 по инфраструктуре, 3 отложенных; аудит живого стенда 2026-09-13).
Критично на сегодня: у контракта нет верхней границы окна закрытия ставки и нет серверного
авто-закрытия — момент расчёта выбирает клиент, что даёт безрисковый арбитраж. Плюс открытые
наружу `/bet`, `/close`, `/faucet` без авторизации.
## Прочее
- Ночная экономика и mint-адреса: `docs/ECONOMY.md` (создаётся в Фазе 0).
- Разделы задач общего характера (например, мок/деплой/стабильность) — в `TASKS.md`.