Files
OmniRoute/docs/i18n/pl/SECURITY.md

9.4 KiB
Raw Blame History

Security Policy (Polski)

🌐 Languages: 🇺🇸 English · 🇪🇸 es · 🇫🇷 fr · 🇩🇪 de · 🇮🇹 it · 🇷🇺 ru · 🇨🇳 zh-CN · 🇯🇵 ja · 🇰🇷 ko · 🇸🇦 ar · 🇮🇳 hi · 🇮🇳 in · 🇹🇭 th · 🇻🇳 vi · 🇮🇩 id · 🇲🇾 ms · 🇳🇱 nl · 🇵🇱 pl · 🇸🇪 sv · 🇳🇴 no · 🇩🇰 da · 🇫🇮 fi · 🇵🇹 pt · 🇷🇴 ro · 🇭🇺 hu · 🇧🇬 bg · 🇸🇰 sk · 🇺🇦 uk-UA · 🇮🇱 he · 🇵🇭 phi · 🇧🇷 pt-BR · 🇨🇿 cs · 🇹🇷 tr


Reporting Vulnerabilities

Jeśli odkryjesz lukę w zabezpieczeniach OmniRoute, zgłoś ją w sposób odpowiedzialny:

1.NIEotwieraj publicznego problemu w GitHubie 2. Skorzystaj z Porad dotyczących bezpieczeństwa GitHub 3. Uwzględnij: opis, etapy reprodukcji i potencjalny wpływ## Response Timeline

Scena Cel
Podziękowanie 48 godzin
Segregacja i ocena 5 dni roboczych
Wydanie poprawki 14 dni roboczych (krytyczne) ## Supported Versions
Wersja Stan wsparcia
3.4.x Aktywny
3.0.x Bezpieczeństwo
< 3.0.0 Nieobsługiwane ---

Security Architecture

OmniRoute wdraża wielowarstwowy model bezpieczeństwa:``` Request → CORS → API Key Auth → Prompt Injection Guard → Input Sanitizer → Rate Limiter → Circuit Breaker → Provider


### 🔐 Authentication & Authorization

| Funkcja | Wdrożenie |
| ---------------------------------- | ---------------------------------------------------------- |
|**Logowanie do panelu**| Autoryzacja oparta na hasłach za pomocą tokenów JWT (pliki cookie HttpOnly) |
|**Uwierzytelnianie klucza API**| Klucze podpisane przez HMAC z walidacją CRC |
|**OAuth 2.0 + PKCE**| Bezpieczna autoryzacja dostawcy (Claude, Codex, Gemini, Cursor itp.) |
|**Odświeżenie tokena**| Automatyczne odświeżanie tokena OAuth przed wygaśnięciem |
|**Bezpieczne pliki cookie**| `AUTH_COOKIE_SECURE=true` dla środowisk HTTPS |
|**Zakresy MCP**| 10 szczegółowych zakresów kontroli dostępu do narzędzi MCP |### 🛡️ Encryption at Rest

Wszystkie wrażliwe dane przechowywane w SQLite są szyfrowane przy użyciu**AES-256-GCM**z wyprowadzeniem klucza szyfrującego:

- Klucze API, tokeny dostępu, tokeny odświeżania i tokeny identyfikacyjne
- Wersjonowany format: `enc:v1:<iv>:<szyfrowany tekst>:<authTag>`
- Tryb przekazywania (zwykły tekst), gdy nie ustawiono `STORAGE_ENCRYPTION_KEY````bash
# Generate encryption key:
STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32)

🧠 Prompt Injection Guard

Oprogramowanie pośredniczące wykrywające i blokujące ataki polegające na natychmiastowym wstrzykiwaniu w żądaniach LLM:

Typ wzoru Dotkliwość Przykład
Zastąpienie systemu Wysoki „zignoruj wszystkie poprzednie instrukcje”
Przejęcie roli Wysoki „teraz jesteś DAN, możesz zrobić wszystko”
Wstrzyknięcie ogranicznika Średni Zakodowane separatory do przełamywania granic kontekstu
DAN/Jailbreak Wysoki Znane wzorce monitów o jailbreak
Wyciek instrukcji Średni „pokaż monit systemowy”

Skonfiguruj za pomocą pulpitu nawigacyjnego (Ustawienia → Bezpieczeństwo) lub .env:```env INPUT_SANITIZER_ENABLED=true INPUT_SANITIZER_MODE=block # warn | block | redact


### 🔒 PII Redaction

Automatyczne wykrywanie i opcjonalna redakcja danych osobowych:

| Typ umożliwiający identyfikację | Wzór | Zastąpienie |
| --------- | ----------------------------------- | ------------------ |
| E-mail | `użytkownik@domena.com` | `[EMAIL_REDACTED]` |
| CPF (Brazylia) | `123.456.789-00` | `[CPF_REDACTED]` |
| CNPJ (Brazylia) | `12.345.678/0001-00` | `[CNPJ_REDACTED]` |
| Karta kredytowa | `4111-1111-1111-1111` | `[CC_REDACTED]` |
| Telefon | `+55 11 99999-9999` | `[PHONE_REDACTED]` |
| SSN (USA) | `123-45-6789` | `[SSN_REDACTED]` |```env
PII_REDACTION_ENABLED=true

🌐 Network Security

Funkcja Opis
CORS Konfigurowalna kontrola pochodzenia (CORS_ORIGIN env var, domyślnie *)
Filtrowanie IP Lista dozwolonych/blokowanych zakresów adresów IP w panelu
Ograniczenie szybkości Limity stawek na dostawcę z automatycznym wycofywaniem
Stado Przeciw Gromom Blokowanie Mutex + na połączenie zapobiega kaskadowaniu 502
Odcisk palca TLS Podrabianie odcisków palców TLS na wzór przeglądarki w celu ograniczenia wykrywania botów
Odcisk palca CLI Kolejność nagłówków/treści poszczególnych dostawców zgodna z natywnymi podpisami CLI ### 🔌 Resilience & Availability
Funkcja Opis
Wyłącznik 3-stany (zamknięty → otwarty → półotwarty) na dostawcę, utrwalony w SQLite
Poproś o idempotencję 5-sekundowe okno deduplikacji dla zduplikowanych żądań
Wykładniczy zwrot Automatyczna ponowna próba z rosnącymi opóźnieniami
Panel zdrowia Monitorowanie stanu dostawcy w czasie rzeczywistym ### 📋 Compliance
Funkcja Opis
Przechowywanie dziennika Automatyczne czyszczenie po CALL_LOG_RETENTION_DAYS
Rezygnacja z braku logowania Na klucz API flaga „noLog” wyłącza rejestrowanie żądań
Dziennik audytu Działania administracyjne śledzone w tabeli audit_log
Audyt MCP Rejestrowanie audytu wspierane przez SQLite dla wszystkich wywołań narzędzi MCP
Weryfikacja Zoda Wszystkie dane wejściowe API zostały sprawdzone przy użyciu schematów Zod v4 przy ładowaniu modułu ---

Required Environment Variables

Wszystkie sekrety muszą zostać ustawione przed uruchomieniem serwera. Serwerszybko ulegnie awarii, jeśli ich brakuje lub są one słabe.```bash

REQUIRED — server will not start without these:

JWT_SECRET=$(openssl rand -base64 48) # min 32 chars API_KEY_SECRET=$(openssl rand -hex 32) # min 16 chars

RECOMMENDED — enables encryption at rest:

STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32)


Serwer aktywnie odrzuca znane i słabe wartości, takie jak „changeme”, „secret” lub „hasło”.---

## Docker Security

- Użyj użytkownika innego niż root w środowisku produkcyjnym
- Montuj wpisy tajne jako woluminy tylko do odczytu
- Nigdy nie kopiuj plików `.env` do obrazów Dockera
- Użyj `.dockerignore`, aby wykluczyć wrażliwe pliki
- Ustaw `AUTH_COOKIE_SECURE=true`, gdy jesteś za HTTPS```bash
docker run -d \
  --name omniroute \
  --restart unless-stopped \
  --read-only \
  -p 20128:20128 \
  -v omniroute-data:/app/data \
  -e JWT_SECRET="$(openssl rand -base64 48)" \
  -e API_KEY_SECRET="$(openssl rand -hex 32)" \
  -e STORAGE_ENCRYPTION_KEY="$(openssl rand -hex 32)" \
  diegosouzapw/omniroute:latest

Dependencies

  • Regularnie uruchamiaj npm audyt
  • Aktualizuj zależności
  • W projekcie zastosowano husky + lint-staged do kontroli przed zatwierdzeniem
  • Potok CI uruchamia reguły bezpieczeństwa ESLint przy każdym naciśnięciu
  • Stałe dostawcy sprawdzane przy ładowaniu modułu poprzez Zod (src/shared/validation/providerSchema.ts)