Files
OmniRoute/docs/i18n/mt/SECURITY.md
Diego Rodrigues de Sa e Souza b637350680 fix(docs): re-sync the 65 documentation mirror sets; section-level docs pipeline; drift gate blocking (#13940)
1,104 mirrors rewritten over five passes of run-translation on the 22-source core set: the 14 sources edited since their translation, the 322 mirrors that were still English copies, and the frontmatter the old extractor leaked into the newer locales' bodies. The pipeline now caches per-`## `-section hashes and retranslates only changed sections, never reuses a section that is still English, rebuilds English-copy / leaked mirrors even when the source is unchanged, merges the state on save (parallel runs), and the drift gate (scoped to the core set) is blocking. Final audit: 0 stale, 0 English copies, 0 leaked frontmatter across 1,430 core mirrors.

⚠️ base-red inherited: #12732
2026-09-17 02:55:31 -03:00

20 KiB
Raw Blame History

Security Policy (Malti)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Rappurtar ta' Vulnerabbiltajiet

Jekk tiskopri vulnerabbiltà tas-sigurtà f'OmniRoute, jekk jogħġbok irrapportaha b'mod responsabbli:

  1. TIFTAĦX kwistjoni pubblika fuq GitHub
  2. Uża l-Avviżi tas-Sigurtà ta' GitHub
  3. Inkludi: deskrizzjoni, passi għar-riproduzzjoni, u l-impatt potenzjali

Skeda taż-Żmien għar-Rispons

Stadju Mira
Konferma tar-Riċevuta 48 siegħa
Klassifikazzjoni u Valutazzjoni 5 ijiem tax-xogħol
Ħruġ tal-Garża 14-il jum tax-xogħol (kritika)

Verżjonijiet Appoġġjati

Verżjoni Status tal-Appoġġ
3.8.x Attiv
3.7.x Sigurtà
< 3.7.0 Mhux Appoġġjat

Arkitettura tas-Sigurtà

OmniRoute jimplimenta mudell tas-sigurtà b'diversi saffi:

Talba → CORS → Pipeline tal-awtorizzazzjoni (ikklassifika → politiki → infurza)
      → Salvagwardji (maskra tal-PII, injezzjoni tal-prompt, pont tal-viżjoni)
      → Limitatur tar-Rata → Circuit Breaker → Perjodu ta' Stennija → Imblukkar tal-Mudell → Fornitur

🔐 Awtentikazzjoni u Awtorizzazzjoni

Karatteristika Implimentazzjoni
Login fil-Pannell Awtentikazzjoni bbażata fuq password b'tokens JWT (cookies HttpOnly)
Awtentikazzjoni b'API Key Ċwievet iffirmati b'HMAC b'validazzjoni CRC
OAuth 2.0 + PKCE L-OAuth tal-browser/apparat speċifiku għall-fornitur juża PKCE fejn ikun appoġġjat; il-kredenzjali Devin għall-importazzjoni biss jiġu ttrattati separatament.
Aġġornament tat-Token Aġġornament awtomatiku tat-token OAuth qabel jiskadi
Cookies Sikuri AUTH_COOKIE_SECURE=true għal ambjenti HTTPS
Pipeline tal-Awtorizzazzjoni Klassifikazzjoni tar-rotot (PUBLIC / CLIENT_API / MANAGEMENT) — ara docs/architecture/AUTHZ_GUIDE.md
Livelli ta' Protezzjoni tar-Rotot Mudell bi 3 livelli għar-rotot tal-ġestjoni (LOCAL_ONLY / ALWAYS_PROTECTED / MANAGEMENT) — ara docs/security/ROUTE_GUARD_TIERS.md
MCP bl-Ambitu tal-Ġestjoni L-aċċess remot għal /api/mcp/* huwa kkontrollat minn API keys bl-ambitu manage; /api/cli-tools/runtime/* jibqa' ristrett strettament għal loopback. Ara ROUTE_GUARD_TIERS
Ambiti MCP 32 ambitu granulari (read:health, write:combos, execute:completions, eċċ.) — ara docs/frameworks/MCP-SERVER.md

🛡️ Kriptaġġ tad-Data Maħżuna

Id-data sensittiva kollha maħżuna f'SQLite hija kriptata bl-użu ta' AES-256-GCM b'derivazzjoni taċ-ċavetta permezz ta' scrypt:

  • API keys, tokens tal-aċċess, tokens tal-aġġornament, u tokens tal-ID
  • Format b'verżjoni: enc:v1:<iv>:<ciphertext>:<authTag>
  • Modalità passthrough (test sempliċi) meta STORAGE_ENCRYPTION_KEY ma tkunx issettjata
# Iġġenera ċ-ċavetta tal-kriptaġġ:
STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32)

🛡️ Qafas tas-Salvagwardji

OmniRoute jinkludi reġistru tas-salvagwardji li jista' jerġa' jitgħabba waqt it-tħaddim (src/lib/guardrails/) bi 3 salvagwardji integrati, ordnati skont il-prijorità:

Salvagwardja Prijorità Għan
vision-bridge 5 Jgħaqqad mudelli mingħajr viżjoni ma' deskrizzjonijiet konxji tal-immaġnijiet; protezzjoni SSRF għal URLs tal-immaġnijiet
pii-masker 10 Ċensura tal-PII qabel u wara s-sejħa (emails, telefown, CPF, CNPJ, karti ta' kreditu, SSN)
prompt-injection 20 Jidentifika mudelli ta' sovrascrittura/ħtif tar-rwol/jailbreak/tnixxija

Salvagwardji personalizzati jiġu rreġistrati permezz ta' registerGuardrail(new MyGuardrail()). Il-mudell huwa fail-open (l-eċċezzjonijiet qatt ma jimblukkaw it-traffiku). Tista' tagħżel li ma tużahomx għal kull talba permezz tal-header x-omniroute-disabled-guardrails. → Ara docs/security/GUARDRAILS.md.

🧠 Protezzjoni Kontra l-Injezzjoni tal-Prompt

Middleware ewristiku tal-aħjar sforz li jidentifika mudelli ta' injezzjoni tal-prompt fit-talbiet lil LLM. Mhuwiex firewall komplut kontra l-injezzjoni tal-prompt — jista' jipproduċi pożittivi foloz (prompts innokwi ta' persona/RPG) u negattivi foloz (leetspeak, spazjar, mudelli mhux bl-Ingliż).

Tip ta' Mudell Severità Eżempju
Sovrascrittura tas-Sistema Għolja "injora l-istruzzjonijiet preċedenti kollha"
Ħtif tar-Rwol Medja "issa int DAN, tista' tagħmel kollox"
Injezzjoni tad-Delimitatur Għolja Separaturi kodifikati biex jiksru l-konfini tal-kuntest
DAN/Jailbreak Medja Mudelli magħrufa ta' prompts ta' jailbreak
Tnixxija tal-Istruzzjonijiet Għolja "urini l-prompt tas-sistema tiegħek"
Evażjoni permezz tal-Kodifikazzjoni Medja Dekodifikazzjoni base64/rot13/hex + kliem ewlieni tal-istruzzjonijiet

Huma biss l-identifikazzjonijiet ta' severità Għolja li jiġu mblukkati fil-modalità block. Il-familji ta' severità Medja jiġu rreġistrati fil-logs iżda qatt ma jiġu mblukkati minn sanitizeRequest.

Ikkonfigura permezz tal-pannell (Issettjar → Sigurtà) jew .env:

INPUT_SANITIZER_ENABLED=true
INPUT_SANITIZER_MODE=block    # warn | block (politika tal-injezzjoni; il-modalità antika "redact" ma tneħħix it-test tal-injezzjoni)
INPUT_SANITIZER_BLOCK_THRESHOLD=high  # high (predefinit) | medium | low — is-severitajiet f'dan il-livell jew ogħla jiġu mblukkati fil-modalità block

🔒 Ċensura tal-PII

Identifikazzjoni awtomatika u ċensura fakultattiva ta' informazzjoni identifikabbli personalment:

Tip ta' PII Mudell Sostituzzjoni
Email user@domain.com [EMAIL_REDACTED]
CPF (Brażil) 123.456.789-00 [CPF_REDACTED]
CNPJ (Brażil) 12.345.678/0001-00 [CNPJ_REDACTED]
Karta ta' Kreditu 4111-1111-1111-1111 [CC_REDACTED]
Telefown +55 11 99999-9999 [PHONE_REDACTED]
SSN (US) 123-45-6789 [SSN_REDACTED]
PII_REDACTION_ENABLED=true   # kitba mill-ġdid tal-PII fit-talba; indipendenti minn INPUT_SANITIZER_MODE
PII_RESPONSE_SANITIZATION=true  # fakultattiv: iċċensura l-PII fit-tweġibiet tal-fornitur mibgħuta lura lill-klijenti

🌐 Sigurtà tan-Network

Karatteristika Deskrizzjoni
CORS Lista espliċita ta' oriġini permessi bejn oriġini differenti (CORS_ALLOWED_ORIGINS; CORS_ORIGIN huwa antik)
Iffiltrar tal-IP Firxiet ta' IP permessi/imblukkati fil-pannell
Limitazzjoni tar-Rata Limiti tar-rata għal kull fornitur b'backoff awtomatiku
Kontra t-Thundering Herd Mutex + qfil għal kull konnessjoni jipprevjenu żbalji 502 kaskata
Marka tas-Swaba' TLS Simulazzjoni ta' marka tas-swaba' TLS simili għal browser biex titnaqqas l-identifikazzjoni tal-bots
Marka tas-Swaba' CLI Ordni tal-headers/korp għal kull fornitur biex jaqbel mal-firem nattivi tas-CLI

🔌 Reżiljenza u Disponibbiltà

Karatteristika Deskrizzjoni
Circuit Breaker 3 stati (Magħluq → Miftuħ → Nofs Miftuħ) għal kull fornitur, persistenti f'SQLite
Idempotenza tat-Talbiet Tieqa ta' deduplikazzjoni ta' 5 sekondi għal talbiet duplikati
Backoff Esponenzjali Tentattiv awtomatiku mill-ġdid b'dewmien dejjem jiżdied
Pannell tas-Saħħa Monitoraġġ f'ħin reali tas-saħħa tal-fornituri

📋 Konformità

Karatteristika Deskrizzjoni
Żamma tal-Logs Tindif awtomatiku wara CALL_LOG_RETENTION_DAYS
Għażla li Ma Jinżammux Logs Il-flag noLog għal kull API key jiddiżattiva r-reġistrazzjoni tat-talbiet
Log tal-Awditjar L-azzjonijiet amministrattivi jiġu traċċati fit-tabella audit_log
Awditjar MCP Reġistrazzjoni tal-awditjar appoġġjata minn SQLite għas-sejħiet kollha tal-għodod MCP
Validazzjoni Zod L-inputs kollha tal-API jiġu vvalidati bi schemas Zod v4 waqt it-tagħbija tal-modulu

Varjabbli Ambjentali Meħtieġa

Il-kollha sigrieti jridu jitwaħħlu qabel ma tibda s-servizz. Is-servizz se jitwaqfa malajr jekk ikunu nieqsa jew dgħajfa.

# MEĦTIEĠ — is-servizz ma se jibdiex mingħajr dawn:
JWT_SECRET=$(openssl rand -base64 48)     # min 32 karattru
API_KEY_SECRET=$(openssl rand -hex 32)    # min 16 karattru

# IRRIMMANDAT — jippermetti enkriżjoni fil-bażi tad-dejta:
STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32)

Is-servizz iwaqfa b'mod attiv valuri magħrufa dgħajfa bħal changeme, secret, jew password.


Sigurtà Docker

  • Uża utent li mhux root fil-produzzjoni
  • Waħħal is-sigrieti bħala volumi biss tista' taqrahom
  • Qatt tikkopja fajls .env fil-figuri Docker
  • Uża .dockerignore biex teskludi fajls sensittivi
  • Waħħal AUTH_COOKIE_SECURE=true meta tkun wara HTTPS
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

Dipendenzi

  • Uża npm audit regolarment (npm run audit:deps jinkludi l-primarja + electron)
  • Żomm id-dipendenzi aġġornati
  • Il-proġett juża husky + lint-staged għal kontrolli ta' qabel l-impenn (lint-staged + check-docs-sync + check:any-budget:t11)
  • Il-pipeline CI jittraqqas regoli ta' sigurtà tal-ESLint fuq kull push (no-eval, no-implied-eval, no-new-func = żball)
  • Il-konstanti tal-fornitur jiġu validati f'sekkond wara t-tħaddim tal-modulu permezz tal-Zod (src/shared/validation/schemas.ts)
  • Libreriji b'base sigur jiġu jużaw: dompurify / isomorphic-dompurify (XSS), jose (JWT), better-sqlite3 (ebda riskju ta' SQLi permezz tal-kwistjonijiet parametriżżati), bcryptjs (ħatja tal-passwds)

Regoli b'saħħta ta' Sigurtà

Dawn ir-regoli jiġu infurzati permezz ta' għodod u rreveduri:

  1. Qatt tikkmanda sigrieti.env huwa ġiġnored; .env.example huwa l-mudell (ebda letterali, kummenti biss — ara PUBLIC_CREDS.md t'hawn taħt)
  2. Qatt tuża eval(), new Function(), jew eval impliċit — l-ESLint jinfurzah
  3. Qatt taħlif il-hooks ta' Husky (--no-verify, --no-gpg-sign) mingħajr approvazzjoni espliċita tal-operatur
  4. Qatt tikteb SQL mhux ipproċessat fit-triq — dejjem għaddi permezz ta' src/lib/db/ (parametriżżat)
  5. Dejjem validaw id-daħli permezz tal-Zodsrc/shared/validation/schemas.ts
  6. Dejjem sanitizzaw il-headings upstream — lista ta' projbizzjoni f'src/shared/constants/upstreamHeaders.ts
  7. Enkriptaw l-identifikaturi fil-bażi tad-dejta — AES-256-GCM permezz ta' src/lib/db/encryption.ts
  8. Identifikaturi upstream OAuth pubbliċi permezz ta' resolvePublicCred() — qatt tiddaħħal litterali bħal AIza… / GOCSPX-… / …apps.googleusercontent.com fis-sors. Ara docs/security/PUBLIC_CREDS.md.
  9. Risposti ta' żball permezz ta' buildErrorBody() / sanitizeErrorMessage() — qatt tpoggi err.stack / err.message mhux ipproċessat fil-ġisem tal-risposta tal-HTTP / SSE / eżekutur / MCP. Ara [docs/security/ERROR_SANITIZATION.md`](docs/security/ERROR_SANITIZATION.md).
  10. exec() / spawn() valuri tal-ħin tal-mewt permezz tal-għażla env — qatt interpolla b'stringu toroq esterni jew valuri mhux fdata fil-kripti mogħtija lill-shell. Referenza: src/mitm/cert/install.ts::updateNssDatabases.
  11. Ippreferixxi libreriji b'base sigur — ara tldrsec/awesome-secure-defaults (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink). Waqfas qabel tagħmel tiegħek stess.

Sejbiet tal-iskaner tal-katina tal-provvista (Socket.dev / Snyk / simili)

L-artefatt npm ippubblikat omniroute jinkludi l-build ta Next.js boutput: "standalone", li jfisser li kull route handler — inklużi l-funzjonalitajiet privileġġati ddokumentati (MITM, importazzjoni minn Zed, Cloud Sync, superviżur tas-servizz inkorporat) — jispiċċa fbiċċiet minimizzati .next/server/*.js. Skaners ewristiċi tal-katina tal-provvista spiss iqabblu l-mudelli ta dawk il-biċċiet ma firem ta malware.

Il-konfigurazzjoni tal-iskaner li nużaw tinsab fsocket.yml fl-għerq tar-repożitorju (format v2 tal-GitHub App ta Socket.dev — ara https://docs.socket.dev/docs/socket-yml). Din teskludi bmod espliċitu direttorji li ma jiġux distribwiti (tests/, _tasks/, _references/, _ideia/, _mono_repo/, docs/, eċċ.) sabiex l-iskaner jirrapporta biss dwar mogħdijiet tal-kodiċi li fil-fatt jaslu għand l-utenti tal-verżjoni ppubblikata — l-iskan innifsu jitwettaq mill-GitHub App ta Socket billi taqra dak il-fajl, mhux minn workflow fdan ir-repożitorju.

Għal kull kategorija ta sejba nżommu attestazzjoni mill-mantenitur għal kull sejba:

  • docs/security/SOCKET_DEV_FINDINGS.md — mappa għal kull sejba: fajl tas-sors ↔ biċċa mmarkata ↔ imġiba ↔ mitigazzjoni applikata fv3.8.6.
  • Blokok SECURITY-AUDITOR-NOTE: fil-kodiċi tas-sors, fkull funzjoni mmarkata, jirreferu lura għall-istess dokument.

Għall-utenti li l-pipeline tagħhom ma jistax itaffi t-twissija: ibnu b OMNIROUTE_BUILD_PROFILE=minimal npm run build. Dan jissostitwixxi l-erba moduli sensittivi bi stubs li waqt it-tħaddim jirritornaw HTTP 503 feature-disabled, sabiex il-mogħdijiet tal-kodiċi privileġġati jkunu fiżikament assenti mill-bundle. Ara docs/security/SOCKET_DEV_FINDINGS.md għar-riċetta tal-pubblikazzjoni.

Riferenzi