Commit Graph

4 Commits

Author SHA1 Message Date
subochev 5b47de0870 docs(security): SEC-6 — назначение ручки vs гарантия её отсутствия на проде
Зафиксировано разделение: ручка тестовая по назначению (faucet-TASK.md) и на
проде не нужна, однако проверка сети в коде отсутствует, а дефолт
SMART_ALLOW_AIRDROP='1' (config.ts) — открыт. Значит 'не нужна' держится
памятью деплойщика, а не кодом. Фикс: дефолт '0' + getGenesisHash() в handleFaucet.
2026-09-13 12:54:08 +03:00
subochev 08ea780f7d docs(security): SEC-6 — уточнено, что фантиковая часть не localnet-only
Разделены два механизма ручки /faucet:
(а) SOL-налив (requestAirdrop) — технически только localnet, mainnet-RPC
    отдаёт 410 (проверено вживую);
(б) налив фантиков (mintTo) — НЕ привязан к сети, гейт только конфиг-флаг
    SMART_ALLOW_AIRDROP, проверки кластера в коде нет;
    SOL-барьер обходится: при балансе >=2 SOL airdrop не зовётся (ops.ts:204)
    и выполнение доходит прямо до mintTo.
Отмечено, что на боевом мемкойне pump.fun (revoked mint authority) часть (б)
исчезает сама.
2026-09-13 12:46:11 +03:00
subochev 1d49468920 docs(security): нумерация пунктов чек-листа SEC-1..SEC-15
Сквозные номера не сбиваются при добавлении/закрытии пунктов внутри
разделов. В SEC-4 фикс ссылается на SEC-1/SEC-2. В сводке — раскладка
по важности.
2026-09-13 12:42:27 +03:00
subochev 18ecbb42b3 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, релейер — точка доверия.
2026-09-13 12:40:51 +03:00