Files
OmniRoute/docs/i18n/fi/SECURITY.md
2026-04-06 18:11:09 -03:00

9.0 KiB

Security Policy (Suomi)

🌐 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

Jos huomaat OmniRoutessa tietoturvahaavoittuvuuden, ilmoita siitä vastuullisesti:

1.ÄLÄavaa julkista GitHub-numeroa 2. Käytä GitHub Security Advisories 3. Sisällytä: kuvaus, kopiointivaiheet ja mahdollinen vaikutus## Response Timeline

Vaihe Kohde
Kuittaus 48 tuntia
Triage & arviointi 5 arkipäivää
Patch Release 14 arkipäivää (kriittinen) ## Supported Versions
Versio Tuen tila
3.4.x Aktiivinen
3.0.x Turvallisuus
< 3.0.0 Ei tuettu ---

Security Architecture

OmniRoute toteuttaa monikerroksisen suojausmallin:``` Request → CORS → API Key Auth → Prompt Injection Guard → Input Sanitizer → Rate Limiter → Circuit Breaker → Provider


### 🔐 Authentication & Authorization

| Ominaisuus | Toteutus |
| --------------------- | ----------------------------------------------------------- |
|**Käyttöpaneeliin kirjautuminen**| Salasanaan perustuva todennus JWT-tunnuksilla (HttpOnly-evästeet) |
|**API-avaimen todennus**| HMAC-allekirjoitetut avaimet CRC-vahvistuksella |
|**OAuth 2.0 + PKCE**| Suojattu palveluntarjoajan todennus (Claude, Codex, Gemini, Cursor jne.) |
|**Token Refresh**| Automaattinen OAuth-tunnuksen päivitys ennen vanhenemista |
|**Suojatut evästeet**| `AUTH_COOKIE_SECURE=true` HTTPS-ympäristöille |
|**MCP-soveltamisalat**| 10 yksityiskohtaista laajuutta MCP-työkalujen kulunvalvontaan |### 🛡️ Encryption at Rest

Kaikki SQLiteen tallennetut arkaluontoiset tiedot on salattu**AES-256-GCM:llä**salausavaimen johdolla:

- API-avaimet, käyttötunnukset, päivitystunnukset ja ID-tunnukset
- Versiomuoto: `enc:v1:<iv>:<salausteksti>:<authTag>`
- Passthrough-tila (selkoteksti), kun `STORAGE_ENCRYPTION_KEY` ei ole asetettu```bash
# Generate encryption key:
STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32)

🧠 Prompt Injection Guard

Väliohjelmisto, joka havaitsee ja estää nopeat injektiohyökkäykset LLM-pyynnöissä:

Kuviotyyppi Vakavuus Esimerkki
Järjestelmän ohitus Korkea "ohita kaikki aikaisemmat ohjeet"
Roolikaappaus Korkea "olet nyt DAN, voit tehdä mitä tahansa"
Erotin-injektio Keskikokoinen Koodatut erottimet kontekstin rajojen rikkomiseksi
DAN/Jailbreak Korkea Tunnetut jailbreak-kehotemallit
Ohje Vuoto Keskikokoinen "näytä järjestelmäkehote"

Määritä hallintapaneelin kautta (Asetukset → Suojaus) tai .env:```env INPUT_SANITIZER_ENABLED=true INPUT_SANITIZER_MODE=block # warn | block | redact


### 🔒 PII Redaction

Henkilökohtaisten tietojen automaattinen tunnistus ja valinnainen poistaminen:

| PII-tyyppi | Kuvio | Korvaus |
| ------------- | ---------------------- | ------------------- |
| Sähköposti | `user@domain.com` | `[EMAIL_REDACTED]` |
| CPF (Brasilia) | "123.456.789-00" | `[CPF_REDACTED]` |
| CNPJ (Brasilia) | "12.345.678/0001-00" | `[CNPJ_REDACTED]` |
| Luottokortti | "4111-1111-1111-1111" | `[CC_REDACTED]` |
| Puhelin | "+55 11 99999-9999" | `[PHONE_REDACTED]` |
| SSN (USA) | "123-45-6789" | `[SSN_REDACTED]` |```env
PII_REDACTION_ENABLED=true

🌐 Network Security

Ominaisuus Kuvaus
KORSI Muokattava alkuperän hallinta (CORS_ORIGIN env var, oletus *)
IP-suodatus Sallittujen/estoluetteloiden IP-alueet kojelaudassa
Rate Limiting Palveluntarjoajakohtaiset hintarajoitukset automaattisella peruutuksella
Ukkosen vastainen lauma Mutex + liitäntäkohtainen lukitus estää 502s
TLS-sormenjälki Selaimen kaltainen TLS-sormenjälkihuijaus robottien havaitsemisen vähentämiseksi
CLI-sormenjälki Palveluntarjoajakohtainen otsikko/tekstijärjestys vastaamaan alkuperäisiä CLI-allekirjoituksia ### 🔌 Resilience & Availability
Ominaisuus Kuvaus
Katkaisija 3-tila (Suljettu → Avoin → Puoliavoin) per toimittaja, SQLite-pysyvä
Pyydä idempotenssia 5 sekunnin dedup-ikkuna päällekkäisille pyynnöille
Eksponentiaalinen takaisku Automaattinen uudelleenyritys kasvavilla viiveillä
Terveyden hallintapaneeli Reaaliaikainen palveluntarjoajan terveydentilan seuranta ### 📋 Compliance
Ominaisuus Kuvaus
Lokin säilyttäminen Automaattinen puhdistus CALL_LOG_RETENTION_DAYS jälkeen
Ei kirjautumista - Opt-out API-avainta kohden "noLog" -lippu estää pyyntöjen kirjaamisen
Tarkastusloki Hallinnolliset toiminnot, joita seurataan audit_log-taulukossa
MCP-tarkastus SQLite-tuettu tarkastusloki kaikille MCP-työkalukutsuille
Zod Validation Kaikki API-syötteet validoitu Zod v4 -skeemoilla moduulin latauksen yhteydessä ---

Required Environment Variables

Kaikki salaisuudet on asetettava ennen palvelimen käynnistämistä. Palvelinepäonnistuu nopeasti, jos ne puuttuvat tai heikot.```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)


Palvelin hylkää aktiivisesti tunnetut heikot arvot, kuten "changeme", "secret" tai "password".---

## Docker Security

- Käytä tuotannossa ei-root-käyttäjää
- Asenna salaisuudet vain luku -asetuksiksi
- Älä koskaan kopioi .env-tiedostoja Docker-kuviin
- Käytä ".dockerignore"-komentoa arkaluonteisten tiedostojen poissulkemiseen
- Aseta 'AUTH_COOKIE_SECURE=true' HTTPS:n takana```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

  • Suorita npm-tarkastus säännöllisesti
  • Pidä riippuvuudet ajan tasalla
  • Projekti käyttää husky + lint-staged -toimintoa ennakkotarkistuksiin
  • CI-putki käyttää ESLint-suojaussääntöjä jokaisella painalluksella
  • Tarjoajan vakiot tarkistettu moduulin latauksen yhteydessä Zodin kautta (src/shared/validation/providerSchema.ts)