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:
@@ -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`.
|
||||
Reference in New Issue
Block a user