6.0 KiB
6.0 KiB
TODO
Zbývající bezpečnostní nálezy
HIGH
- H9: Self-encryption key — statický/deterministický klíč z identity key (by-design pro cross-device čtení, architektonické omezení — žádná forward secrecy pro self-copies)
MEDIUM
- M7: MySQL TLS —
db.get_connection()nepředává SSL parametry. Na vzdáleném serveru jdou DB credentials v plaintextu. Přidatssl_ca,ssl_cert,ssl_key.
LOW (nízké riziko)
- L1: Hex string keys v skipped messages dict — timing side-channel (post-auth)
- L2: RatchetHeader redundantní type konverze
- L3:
notif_label.setText()vssetHtml()křehkost - L4: SQL column interpolation v
update_user_profile(whitelist chrání) - L5: TLS cipher suite hardening (Python defaults rozumné, ne explicitní)
- L6: Temporary pairing key cleanup z paměti
- L7:
_user_cacheindefinite growth
Funkční TODO
High Priority
- Sender Key Redistribution — při
add_memberredistribuovat sender keys všem členům včetně nového. Nový člen skupiny momentálně nedešifruje staré zprávy.
Medium Priority
- iOS: Contact Key Verification — safety numbers, fingerprints, QR kódy, TOFU registr. Spec viz CLAUDE.md (iOS implementation spec).
- Typing indicators (
typing_start/typing_stop+ 3s timeout, debounce) - Delivery receipts (
message_deliverednotifikace — 1 fajfka odesláno, 2 fajfky doručeno, modré přečteno) - Group admin roles (více adminů)
- Edit sent messages
Low Priority
- Desktop notifications (system tray)
- Image gallery view
- Systemd + Docker deployment
Před nasazením do produkce
- TLS certifikáty — Let's Encrypt nebo vlastní CA.
TLS_ENABLED=true,TLS_CERT_FILE,TLS_KEY_FILE. - SMTP — reálný SMTP server pro registrační kódy.
- MySQL TLS — SSL parametry v
db.get_connection()pokud DB na jiném stroji. - UPLOAD_DIR — persistentní disk, dostatečná kapacita, správná práva (0o700).
- Backup — pravidelný backup MySQL + UPLOAD_DIR.
- Packaging — pyinstaller / cx_Freeze pro distribuci klientů.
- Penetrační testy — manuální + automatizované (path traversal, DoS, race conditions, enumeration, TLS downgrade, pairing hijacking).
Budoucí plány
- WebSocket upgrade (nahradit raw TCP pro lepší kompatibilitu)
- Mobilní push notifikace (APNs + FCM)
- Auto-update klientů (po packagingu)
- Monetizace — oddělený platební server (Stripe), premium kódy, free/premium tier. Detaily viz CLAUDE.md.
Phantom Users — Distributed Cap
Pro multi-process deployment:
- DB-backed quota (
system_quotastabulka,SELECT ... FOR UPDATE) - Same-email races přes
UNIQUE(email) - Periodic reconciliation job
- Shared rate-limits (Redis nebo DB atomic counters)
- Concurrency testy
Hotovo
Security (všechny CRITICAL + většina HIGH/MEDIUM opraveny)
- C1: readuntil DoS → LimitOverrunError handling
- C2: SenderKeyState fast-forward DoS → MAX_SENDER_KEY_SKIP=256
- C3: Plaintext message cache → AES-256-GCM šifrování
- C4: OPK file permissions → chmod 0o600
- C5: Upload size validation → received_bytes == file_size check
- C6: Path traversal → UUID validace + is_relative_to
- H1: Session/sender key šifrování → AES-256-GCM via _local_key
- H2+H14: TLS hardening → ENVIRONMENT=dev guard
- H3+H13: Anti-enumeration → generické odpovědi, auth pro get_user_info
- H4: Race conditions → 5 asyncio.Lock guardů
- H5+H6: Protocol error handling → base64/JSON exception handling
- H7: Avatar path traversal → _safe_avatar_path
- H8: Password memory → bytearray + zero-out
- H10: Image validation → size + dimensions check
- H11: Filename sanitization → os.path.basename
- H12: OPK race condition → SELECT FOR UPDATE
- M2: HKDF salt → b"\x00"*32
- M3: PBKDF2 600k iterations (ECP1 formát)
- M4: SPK rotace 7 dní + grace period
- M5: Rate limit cleanup
- M6: TOCTOU → remove_conversation_member_atomic
- M8: UUID validace všech handlerů
- M9: Ratchet state rollback (snapshot/restore)
- M10: message_ids cap (500)
- M11: Pairing poll token (secrets.token_hex)
- M12: Upload end size validation
- M13: chmod 0o700/0o600 na klíčové adresáře/soubory
- L8: Phantom user cleanup (30 dní + email validace)
- SPK/OPK šifrování na disku
- Brute-force lockout (exponenciální backoff)
Features
- X3DH + Double Ratchet (Signal Protocol)
- Sender Keys pro skupiny
- Multi-device support (per-device sessions, pairing)
- Kontaktní verifikace (safety numbers, fingerprints, QR kódy) — Python klienti
- Message padding (bucketed 64B–64KB)
- Metadata privacy (log sanitizace, retention, sender chain minimalizace)
- Secure deletion (overwrite + fsync + unlink)
- Reakce na zprávy (6 emoji typů)
- Přeposílání zpráv (text, obrázky, soubory)
- Připnuté zprávy (pin/unpin + dialog)
- @Mentions s autocomplete
- Hledání zpráv (client-side, Ctrl+F)
- Šifrované obrázky + soubory (chunked upload, až 50 MB)
- Skupinové pozvánky (accept/decline)
- Leave group + přenos creatora
- Rename group (creator only)
- Delete conversation
- Group avatar
- User profily (telefon, lokace, avatar, viditelnost)
- Online/offline status
- Unread count badges (server-side pro offline uživatele)
- Privacy overlay / lock screen
- Dark/light téma (Catppuccin + Signal) s live switching
- Session recovery (reset + auto X3DH)
- Connection indicator + auto-reconnect
- Drag & drop souborů
- Favorites (GUI)
- Phantom users (anti-enumeration)
- DB connection pooling (pool_size=10)
- Version negotiation (0.8.4, MIN_CLIENT_VERSION=0.8.3)
- Graceful server shutdown
- iOS klient (47 Swift souborů, ~5 000 řádků)
- CLI klient (23 menu opcí)
- Pentest harness (4 test kategorií)