montana/Android/Внешний-аудит/00-Сводка-для-аудитора.md
2026-05-18 22:11:45 +03:00

129 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 00. Сводка для аудитора — Montana Android v6.5.0
## За одну страницу
**Что это:** Android-приложение Montana — клиент VPN-сети с встроенным BIP39-кошельком. Пользователь получает 0.001 Ɉ за каждую секунду online через VPN-каскад из трёх узлов (Helsinki / Frankfurt / NewYork).
**Размер пакета:** ~3000 строк документации, 11 файлов.
**APK:** `montana-6.6.0.apk` (Phase 2 integration закрыта), 32 MB, подписан Genesis-keystore (fingerprint `305bc99b…3ce4d`).
---
## Что аудитор должен проверить в первую очередь
### Критические (P0, блокеры mainnet)
1. **`07-Известные-ограничения.md` F-2** — Heartbeat без cryptographic auth. Backend принимает heartbeat от любого 40-hex адреса если IP source ∈ MONTANA_NODES. Sybil-атака открыта. Closure: Falcon-512 подпись (Phase 3, ~2 недели).
2. **`07-Известные-ограничения.md` F-4** — `balances.json` живёт только на Moscow. SPOF. Closure: TimeChain validator state (Phase 3, ~2 недели).
3. **`03-Криптография.md` §5** — Address derivation `SHA-256("montana-v1:" || seed)[0..20]` несовместима с BIP32/BIP44. Cross-wallet import показывает пустые балансы. Phase 4 → SLIP-44 registration.
### Высокие
4. **`07` F-6** — Seed в plain text localStorage. Уязвимо на rooted устройствах и forensic. Closure: Android Keystore wrap.
5. **`07` F-7** — Нет backup confirmation flow при создании кошелька. UX risk потери денег.
6. **`07` CF-recovery-tests** — Нет automated tests recovery determinism между устройствами.
7. **`10-Покрытие-тестами.md`** — Ноль automated tests. Manual verification только.
### Средние
8. **`07` CF-4** — Reality keys + UUID в 19 местах ([C-1] SSOT violation).
9. **`07` F-3.1** — Покажется automated cron purge inactive балансов.
---
## Что работает корректно (verified)
✓ BIP39 derivation byte-exact совместимо со стандартом (cross-verified Python ↔ JS WebCrypto — см. `приложения/вектора-тестов-bip39.md`)
✓ haproxy stick-on-src закрепляет клиент за одним exit-узлом на 24h (verified 10/10 запросов)
✓ Atomic LOCK_EX на balances.json (закрыл CF-5 race)
✓ BIP39 wordlist SHA-256 integrity check fail-closed
✓ JSON parsing через `org.json.JSONObject` (закрыл CF-2 regex fragility)
✓ Catch logging в 10/13 try-блоках (закрыл CF-1)
✓ Reality Active probing resistance через SNI Echo decoy
✓ TUN-петля закрыта через `addDisallowedApplication(packageName)`
✓ ALPN pin = `http/1.1` для парсера
---
## Структура аудиторского пакета
| Файл | Содержание | Размер |
|------|-----------|--------|
| `README.md` | Точка входа | 74 строк |
| `00-Сводка-для-аудитора.md` | Этот файл | ~150 строк |
| `01-Архитектура.md` | Компоненты, потоки, границы доверия | 264 строк |
| `02-Угрозы-и-модель.md` | Threat model (атакующие A-H) | 166 строк |
| `03-Криптография.md` | Все примитивы с derivation констант | 249 строк |
| `04-Сетевой-слой.md` | VPN-каскад, haproxy sticky, Reality | 407 строк |
| `05-Состояние-и-хранилище.md` | Где живёт state, защита | 254 строк |
| `06-Восстановление.md` | BIP39 procedures, recovery, тест-векторы | 240 строк |
| `07-Известные-ограничения.md` | Findings tracker со severity и closure path | 244 строк |
| `08-Воспроизводимая-сборка.md` | Точные инструкции получить APK | 173 строк |
| `09-Инвентаризация-кода.md` | Файл-за-файлом разбор | 295 строк |
| `10-Покрытие-тестами.md` | Что тестируется, что нет | 209 строк |
| `приложения/вектора-тестов-bip39.md` | Реальные test vectors + cross-verification | 147 строк |
| `приложения/ключи-узлов.md` | Reality public keys, APK signing key | 70 строк |
| `приложения/api-эндпоинты.md` | Backend REST + heartbeat trace | 252 строк |
**Total:** ~3000 строк.
---
## Рекомендуемая последовательность чтения
1. `00-Сводка-для-аудитора.md` (этот) — overview
2. `01-Архитектура.md` — понять компоненты
3. `02-Угрозы-и-модель.md` — понять что защищаем
4. `07-Известные-ограничения.md` — что **не** работает + roadmap
5. `03-Криптография.md` — детальный crypto audit
6. `04-Сетевой-слой.md` — VPN-каскад
7. `05-Состояние-и-хранилище.md` — persistence layer
8. `06-Восстановление.md` + `приложения/вектора-тестов-bip39.md` — recovery verification
9. `08-Воспроизводимая-сборка.md` — собрать APK с нуля
10. `09-Инвентаризация-кода.md` — code reading reference
11. `10-Покрытие-тестами.md` — test gap
---
## Заявление о готовности к production-mainnet
**Готовность:** ~60% (после Phase 2 closure). Часть production-fixes применена в v6.5.0 (Phase 1), но **критические findings F-2 и F-4 остаются open**.
Запуск mainnet **запрещён** до закрытия P0 findings:
- F-2 (heartbeat auth) — требует TimeChain integration M-VPN-3
- F-4 (state persistence) — требует TimeChain integration M-VPN-2
- F-6 (seed encryption) — Phase 2 user passcode flow
- F-7 (backup confirmation) — Phase 2 UX
- CF-recovery-tests (test coverage) — Phase 2 obligatory
Phase 2 closure cost: ~1-2 недели.
Phase 3 closure cost: ~3-4 недели (вкл. spec patch Montana Protocol v35.25 → v35.26).
После закрытия Phase 2/3 пакет должен быть **переаудитован** независимым специалистом (формальный engagement, не self-audit).
---
## Контакт и обратная связь
**Спецификация протокола:** `/Users/kh./Python/Ничто/Montana Protocol v35.25.0.md`
**Реализация:** `/Users/kh./Python/Ничто/Montana/Montana-Protocol/Code/`
**Hub:** `https://hub.montana.quest/efir369999/montana`
**Аудитор может ответить через issue в hub либо напрямую автору.**
---
## Ограничения этого аудиторского пакета
1. **Self-audit, не независимый.** Пакет собран автором проекта на основе ролей критика/архитектора из спецификации. Не заменяет внешний security audit от независимой firm (NCC Group, Trail of Bits, Cure53, Quarkslab).
2. **Snapshot 2026-05-18.** Все findings и закрытия зафиксированы на эту дату. После Phase 2/3 пакет должен быть обновлён с новыми статусами.
3. **Не покрывает:**
- Внешнюю криптографию xray-core (отдельный аудит xray)
- Android OS уязвимости (CVE)
- Hosting provider integrity
- Legal compliance (GDPR, лицензирование VPN в странах деятельности)
4. **Не имеет formal proof.** Все утверждения empirical либо математические по стандарту, но без formal verification (TLA+, Coq, F\*).