OmniRoute/docs/i18n/phi/SECURITY.md

9.2 KiB

Security Policy (Filipino)

🌐 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

Kung matuklasan mo ang isang kahinaan sa seguridad sa OmniRoute, mangyaring iulat ito nang responsable:

1.HUWAGmagbukas ng pampublikong isyu sa GitHub 2. Gamitin ang GitHub Security Advisories 3. Isama ang: paglalarawan, mga hakbang sa pagpaparami, at potensyal na epekto## Response Timeline

Yugto Target
Pagkilala 48 oras
Triage at Pagsusuri 5 araw ng negosyo
Paglabas ng Patch 14 na araw ng negosyo (kritikal) ## Supported Versions
Bersyon Katayuan ng Suporta
3.4.x Aktibo
3.0.x Seguridad
< 3.0.0 Hindi suportado ---

Security Architecture

Ang OmniRoute ay nagpapatupad ng isang multi-layered na modelo ng seguridad:``` Request → CORS → API Key Auth → Prompt Injection Guard → Input Sanitizer → Rate Limiter → Circuit Breaker → Provider


### 🔐 Authentication & Authorization

| Tampok | Pagpapatupad |
| -------------------- | -------------------------------------------------------- |
|**Pag-login sa Dashboard**| Nakabatay sa password ang auth na may mga JWT token (HttpOnly cookies) |
|**API Key Auth**| Mga susi na nilagdaan ng HMAC na may pagpapatunay ng CRC |
|**OAuth 2.0 + PKCE**| Secure na provider ng auth (Claude, Codex, Gemini, Cursor, atbp.) |
|**Token Refresh**| Awtomatikong pag-refresh ng token ng OAuth bago mag-expire |
|**Secure Cookies**| `AUTH_COOKIE_SECURE=true` para sa mga kapaligiran ng HTTPS |
|**Mga Saklaw ng MCP**| 10 butil na saklaw para sa MCP tool access control |### 🛡️ Encryption at Rest

Ang lahat ng sensitibong data na nakaimbak sa SQLite ay naka-encrypt gamit ang**AES-256-GCM**na may scrypt key derivation:

- Mga API key, access token, refresh token, at ID token
- Bersyon na format: `enc:v1:<iv>:<ciphertext>:<authTag>`
- Passthrough mode (plaintext) kapag hindi nakatakda ang `STORAGE_ENCRYPTION_KEY````bash
# Generate encryption key:
STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32)

🧠 Prompt Injection Guard

Middleware na nakakakita at nagba-block ng mga agarang pag-atake ng injection sa mga kahilingan sa LLM:

Uri ng Pattern Kalubhaan Halimbawa
Override ng System Mataas "balewala ang lahat ng naunang tagubilin"
Pag-hijack ng Tungkulin Mataas "ikaw na DAN, kaya mong gawin ang lahat"
Delimiter Injection Katamtaman Mga naka-encode na separator upang masira ang mga hangganan ng konteksto
DAN/Jailbreak Mataas Mga kilalang pattern ng prompt ng jailbreak
Pagtuturo Leak Katamtaman "ipakita sa akin ang iyong system prompt"

I-configure sa pamamagitan ng dashboard (Mga Setting → Seguridad) o .env:```env INPUT_SANITIZER_ENABLED=true INPUT_SANITIZER_MODE=block # warn | block | redact


### 🔒 PII Redaction

Awtomatikong pagtuklas at opsyonal na redaction ng personal na makikilalang impormasyon:

| Uri ng PII | Pattern | Pagpapalit |
| ------------- | ---------------------- | ------------------- |
| Email | `user@domain.com` | `[EMAIL_REDACTED]` |
| CPF (Brazil) | `123.456.789-00` | `[CPF_REDACTED]` |
| CNPJ (Brazil) | `12.345.678/0001-00` | `[CNPJ_REDACTED]` |
| Credit Card | `4111-1111-1111-1111` | `[CC_REDACTED]` |
| Telepono | `+55 11 99999-9999` | `[PHONE_REDACTED]` |
| SSN (US) | `123-45-6789` | `[SSN_REDACTED]` |```env
PII_REDACTION_ENABLED=true

🌐 Network Security

Tampok Paglalarawan
CORS Configurable origin control (CORS_ORIGIN env var, default *)
Pag-filter ng IP Allowlist/blocklist na mga saklaw ng IP sa dashboard
Paglilimita sa Rate Mga limitasyon sa rate ng bawat provider na may awtomatikong pag-urong
Anti-Thundering Herd Pinipigilan ng Mutex + per-connection locking ang cascading 502s
TLS Fingerprint Panggagaya ng fingerprint ng TLS na tulad ng browser upang bawasan ang pag-detect ng bot
CLI Fingerprint Pag-order ng header/katawan ng bawat provider upang tumugma sa mga native na lagda ng CLI ### 🔌 Resilience & Availability
Tampok Paglalarawan
Circuit Breaker 3-estado (Sarado → Buksan → Half-Open) bawat provider, nanatili ang SQLite
Humiling ng Idempotency 5-segundong de-dup window para sa mga duplicate na kahilingan
Exponential Backoff Awtomatikong muling subukan na may dumaraming pagkaantala
Dashboard ng Kalusugan Real-time na pagsubaybay sa kalusugan ng provider ### 📋 Compliance
Tampok Paglalarawan
Pagpapanatili ng Log Awtomatikong paglilinis pagkatapos ng CALL_LOG_RETENTION_DAYS
No-Log Opt-out Bawat API key na flag na noLog ay hindi pinapagana ang pag-log ng kahilingan
Audit Log Mga administratibong pagkilos na sinusubaybayan sa talahanayan ng audit_log
MCP Audit SQLite-backed audit logging para sa lahat ng MCP tool call
Pagpapatunay ng Zod Na-validate ang lahat ng API input gamit ang Zod v4 schemas sa module load ---

Required Environment Variables

Ang lahat ng mga lihim ay dapat itakda bago simulan ang server. Ang server aymabibigo nang mabiliskung sila ay nawawala o mahina.```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)


Aktibong tinatanggihan ng server ang mga kilalang-mahina na halaga tulad ng `changeme`, `secret`, o `password`.---

## Docker Security

- Gumamit ng non-root user sa produksyon
- I-mount ang mga lihim bilang read-only na volume
- Huwag kailanman kopyahin ang mga `.env` na file sa mga larawan ng Docker
- Gamitin ang `.dockerignore` upang ibukod ang mga sensitibong file
- Itakda ang `AUTH_COOKIE_SECURE=true` kapag nasa likod ng 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

  • Patakbuhin ang npm audit nang regular
  • Panatilihing na-update ang mga dependency
  • Gumagamit ang proyekto ng husky + lint-staged para sa mga pre-commit na pagsusuri
  • Ang CI pipeline ay nagpapatakbo ng mga panuntunan sa seguridad ng ESLint sa bawat push
  • Na-validate ang mga constant ng provider sa pag-load ng module sa pamamagitan ng Zod (src/shared/validation/providerSchema.ts)