# Security Policy (Gaeilge) 🌐 **Languages:** 🇺🇸 [English](../../../SECURITY.md) · 🇸🇦 [ar](../ar/SECURITY.md) · 🇦🇿 [az](../az/SECURITY.md) · 🇧🇬 [bg](../bg/SECURITY.md) · 🇧🇩 [bn](../bn/SECURITY.md) · 🇨🇿 [cs](../cs/SECURITY.md) · 🇩🇰 [da](../da/SECURITY.md) · 🇩🇪 [de](../de/SECURITY.md) · 🇬🇷 [el](../el/SECURITY.md) · 🇪🇸 [es](../es/SECURITY.md) · 🇪🇪 [et](../et/SECURITY.md) · 🇮🇷 [fa](../fa/SECURITY.md) · 🇫🇮 [fi](../fi/SECURITY.md) · 🇫🇷 [fr](../fr/SECURITY.md) · 🇮🇳 [gu](../gu/SECURITY.md) · 🇮🇱 [he](../he/SECURITY.md) · 🇮🇳 [hi](../hi/SECURITY.md) · 🇭🇷 [hr](../hr/SECURITY.md) · 🇭🇺 [hu](../hu/SECURITY.md) · 🇮🇩 [id](../id/SECURITY.md) · 🇮🇹 [it](../it/SECURITY.md) · 🇯🇵 [ja](../ja/SECURITY.md) · 🇰🇷 [ko](../ko/SECURITY.md) · 🇱🇹 [lt](../lt/SECURITY.md) · 🇱🇻 [lv](../lv/SECURITY.md) · 🇮🇳 [mr](../mr/SECURITY.md) · 🇲🇾 [ms](../ms/SECURITY.md) · 🇲🇹 [mt](../mt/SECURITY.md) · 🇳🇱 [nl](../nl/SECURITY.md) · 🇳🇴 [no](../no/SECURITY.md) · 🇵🇭 [phi](../phi/SECURITY.md) · 🇵🇱 [pl](../pl/SECURITY.md) · 🇵🇹 [pt](../pt/SECURITY.md) · 🇧🇷 [pt-BR](../pt-BR/SECURITY.md) · 🇷🇴 [ro](../ro/SECURITY.md) · 🇷🇺 [ru](../ru/SECURITY.md) · 🇸🇰 [sk](../sk/SECURITY.md) · 🇸🇮 [sl](../sl/SECURITY.md) · 🇷🇸 [sr](../sr/SECURITY.md) · 🇸🇪 [sv](../sv/SECURITY.md) · 🇰🇪 [sw](../sw/SECURITY.md) · 🇮🇳 [ta](../ta/SECURITY.md) · 🇮🇳 [te](../te/SECURITY.md) · 🇹🇭 [th](../th/SECURITY.md) · 🇹🇷 [tr](../tr/SECURITY.md) · 🇺🇦 [uk-UA](../uk-UA/SECURITY.md) · 🇵🇰 [ur](../ur/SECURITY.md) · 🇻🇳 [vi](../vi/SECURITY.md) · 🇨🇳 [zh-CN](../zh-CN/SECURITY.md) · 🇹🇼 [zh-TW](../zh-TW/SECURITY.md) --- ## Tuairiscithe Léire Má aimsíonn tú leochaileacht slándála i OmniRoute, cuir in iúl go freagrach é: 1. **NÁ OSCAIL** acheist phoiblí GitHub 2. Úsáid [Advisories Slándála GitHub](https://github.com/diegosouzapw/OmniRoute/security/advisories/new) 3. Cuir san áireamh: cur síos, na chéimeanna le hathsholáthar, agus tionchar indéanta ## Amlíne Freagartha | Céim | Sprioc | | ------------------ | ---------------------- | | Aitheantas | 48 uair an chloig | | Rangú agus Measúnú | 5 lá gnó | | Scaoileadh Péire | 14 lá gnó (criticiúil) | ## Leaganacha Tacaíochta | Leagan | Stádas Tacaíochta | | ------- | ----------------- | | 3.8.x | ✅ Gníomhach | | 3.7.x | ✅ Slándáil | | < 3.7.0 | ❌ Gan tacaíocht | --- ## Airgeadraíocht Slándála Cuireann OmniRoute i bhfeidhm móilín sábháilteachta il-shraithe: ``` Iarratas → CORS → Líne (sainaithin → polasaithe → coinnigh) → Líne cosanta (PII masker, ionsaí achainí, droichead radhairc) → Teorannóir rátaí → Briseadóir timthriall → Cúlamhais → Glasáil tsamhail → Soláthraí ``` ### 🔐 Fíordheimhniú agus Údarú | Gné | Impleadhú | | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Fáiltiú Dashboard** | Fíordheimhniú bunaithe ar pasfhocal le comharthaí JWT (fianáin HttpOnly) | | **Fíordheimhniú Eochracha API** | Eochracha sínithe le HMAC le bailíochtú CRC | | **OAuth 2.0 + PKCE** | Úsáideann soláthraithe braistic/gléasanna OAuth PKCE nuair a thacaítear leis; déileáiltear le creidimh禧n-iompórtála amháin go háirithe. | | **Athnuachan Comhartha** | Athnuachan comhartha OAuth uathoibríoch roimh an spriocdháta | | **Fianáin Shábháilte** | `AUTH_COOKIE_SECURE=true` do thimpeallachtaí HTTPS | | **Líne Údaráis** | Rangú conairí (POIBLÍ / API KLIENT / BAINISTÍOCHT) — féach `docs/architecture/AUTHZ_GUIDE.md` | | **Leibhéil Chosanta Conairí** | Múnla 3-leibhéal do choinsí bainistíochta (ACHOIBLÍ AMHÁIN / COSAINT I gcónaí / BAINISTÍOCHT) — féach `docs/security/ROUTE_GUARD_TIERS.md` | | **MCP Scóip Bainistíochta** | Rochtain iargúlta `/api/mcp/*` faoi mhaoirscéal eochracha API le scóip `manage`; fanann `/api/cli-tools/runtime/*` in lúb-dlúthshéansach. Féach ROUTE_GUARD_TIERS | | **Scóipanna MCP** | 32 scóipmhíne (leabhar:sláinte, scríobh: combos, rith:completes, etc.) — féach `docs/frameworks/MCP-SERVER.md` | ### 🛡️ Criptiú ag Stóráil Tá gach sonra íogaire stóráilte i SQLite criptaithe le **AES-256-GCM** le díbhríú eochracha scrypt: - Eochracha API, comharthaí rochtana, comharthaí athnuachana, agus comharthaí ID - Formáid leagan: `enc:v1:::` - Mód pas-trí (plain-téacs) nuair nach bhfuil `STORAGE_ENCRYPTION_KEY` socraithe ```bash # Giniúint eochair criptithe: STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32) ``` ### 🛡️ Créatúr Cosanta Tá **clárlann cosaintí** athluchtaithe te a sheachadann OmniRoute (`src/lib/guardrails/`) le 3 chosaintí ionsuite eagraithe de réir túsála: | Cosaint | Túsála | Cuspóir | | ------------------ | ------ | -------------------------------------------------------------------------------------------------------- | | `vision-bridge` | 5 | Nascann samhlacha gan radhairc le cur síos ar radhairc; cosaint SSRF le haghaidh URLanna íomhá | | `pii-masker` | 10 | Scriosadh PII roimh iarratas + tar éis iarratais (ríomhphoist, fóin, CPF, CNPJ, cártaí creidmheasa, SSN) | | `prompt-injection` | 20 | Braíonn patrúin cealaithe/athsamhaltáin/réabadóireachta/sreabhála | Cláraíonn cosaintí saincheaptha trí `registerGuardrail(new MyGuardrail())`. Tá an tsamhail oscailte d'éifeachtaí (ní chuireann eisceachtaí cosc ar thráffic). Rogh-amach in aghaidh an iarratais tríd an ceanntinn `x-omniroute-disabled-guardrails`. → Féach [`docs/security/GUARDRAILS.md`](docs/security/GUARDRAILS.md). ### 🧠 Cosaint Ionsaí Achainí Mearshlua meicniseach iarracht ag braíodh patrúin ionsaí achainí iarratais LLM. **Ní toradh iomlán é scáileán ionsaí achainí** — is féidir dearbhú mícheart a dhéanamh (ciníos pearsanta/RPG mícheart) agus dearbhú dearfach a dhéanamh (leetspeak, spásáil, patrúin nach bhfuil i nGaeilge). | Cineál Patrúin | Dlíghníomhachas | Sampla | | ------------------- | --------------- | ---------------------------------------------------------------------- | | Cealadh Córais | Ard | "déan dearmad ar gach treoir roimhe seo" | | Goid Róil | Meánach | "tá tú anois DAN, is féidir leat aon rud a dhéanamh" | | Ionsaí Teirmínéla | Ard | eatramhshéalaithe cruthaithe chun teorainneacha comhthéacs a bhriseadh | | DAN/Réabadóireacht | Meánach | Patrúin achainí réabadóireachta aitheanta | | Sreabháin Treoracha | Ard | "taispeáin dom d'aitreabú córais" | | Seachaint Códaithe | Meánach | díchódú base64/rot13/hex + eochracha treoracha | Ní chuirtear ach braiteadh **Ard** i bhfeidhm sa mhód `block`. Líneanna grúpaí leibhéal meáin ach gan cosc a chur orthu ag `sanitizeRequest`. Cumraigh trí an dashboard (Socruithe → Slándáil) nó `.env`: ```env INPUT_SANITIZER_ENABLED=true INPUT_SANITIZER_MODE=block # warn | block (polasaí ionsaí; "redact" dleathach nach bhfuil an téacs ionsaí ag scriosadh) INPUT_SANITIZER_BLOCK_THRESHOLD=high # high (réamhshocraithe) | medium | low — cuirtear cosc ar dhligheadhanna atá agus os cionn an tsaghas seo sa mhód block ``` ### 🔒 Scriosadh PII Braíodh uathoibríoch agus scriosadh roghnach eolas inaitheanta pearsanta: | Cineál PII | Patrún | Ionadachas | | ----------------- | --------------------- | ------------------ | | Ríomhphost | `user@domain.com` | `[EMAIL_REDACTED]` | | CPF (Brasaíl) | `123.456.789-00` | `[CPF_REDACTED]` | | CNPJ (Brasaíl) | `12.345.678/0001-00` | `[CNPJ_REDACTED]` | | Cárta Creidmheasa | `4111-1111-1111-1111` | `[CC_REDACTED]` | | Fón | `+55 11 99999-9999` | `[PHONE_REDACTED]` | | SSN (SAM) | `123-45-6789` | `[SSN_REDACTED]` | ```env PII_REDACTION_ENABLED=true # athscríobh PII iarratais; neamhspleách ar INPUT_SANITIZER_MODE PII_RESPONSE_SANITIZATION=true # roghnach: scriosadh PII i freagraí soláthraithe ar ais do chliaint ``` ### 🌐 Slándáil Líonra | Gné | Cur síos | | ------------------- | -------------------------------------------------------------------------------------------- | | **CORS** | Liosta soiléire cros-shuímh ceadaithe (`CORS_ALLOWED_ORIGINS`; dleathach `CORS_ORIGIN`) | | **Scagadh IP** | Liosta ceadaithe/blocála raonanna IP sa dashboard | | **Teorannú Rátaí** | Teorainneacha rátaí in aghaidh an tsoláthraithe le uath-chúlú | | **Frith-Thonnmhor** | Coscann mute + glasáil in aghaidh ceangail sreafaí 502 cascáideach | | **Méarlorg TLS** | Méarlorg TLS cosúil le brabhsálaí chun braiteadh bot a laghdú | | **Méarlorg CLI** | Ordú ceanntinn/corp in aghaidh an tsoláthraithe chun comharthaí dúchasacha CLI a mheaitseáil | ### 🔌 Seasmhacht agus Infhaighteacht | Gné | Cur síos | | ------------------------- | ----------------------------------------------------------------------------------------- | | **Briseadóir Timthriall** | 3-stáit (Dúnta → Oscailte → Leath-Oscailte) in aghaidh an tsoláthraithe, SQLite-stóráilte | | **Idempotú Iarratais** | Fuinneog dílis i gcoinne iarratais dúbailte 5 soicind | | **Cúlú Easpónantach** | Ath-iarracht uathoibríoch le moilleanna méadaithe | | **Dashboard Sláinte** | Monatóireacht ar shláinte tsoláthraithe fíor-ama | ### 📋 Comhréireacht | Gné | Cur síos | | ------------------ | ------------------------------------------------------------------------ | | **Coinneáil Loga** | Glanadh uathoibríoch tar éis `CALL_LOG_RETENTION_DAYS` | | **Logáil Amach** | Scála `noLog` in aghaidh eochracha API a dhíchumasaíonn logáil iarratais | | **Loga iniúchta** | Rianú gníomhartha bainistíochta i tábla `audit_log` | | **Iniúchadh MCP** | Logáil iniúchta bunaithe ar SQLite le haghaidh gach uirlise MCP | | **Bailíochtú Zod** | Gach ionchur API bailíochtú le scéimeanna Zod v4 ag lódú an mhóide | ## Athróg Timpeallachta Riachtanacha Caithfear gach rún a shocrú sula dtosaíonn an freastalaí. **Teipfidh an freastalaí go tapa** mura bhfuil siad ann nó má tá siad lag. ```bash # RIAchtANACH — ní thosóidh an freastalaí gan iad seo: JWT_SECRET=$(openssl rand -base64 48) # 32 char ar a laghad API_KEY_SECRET=$(openssl rand -hex 32) # 16 char ar a laghad # MOLTA — cumasaíonn criptiú ag an gcuid eile: STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32) ``` Diúltaíonn an freastalaí go gníomhach do luachanna lag aitheanta ar nós `changeme`, `secret`, nó `password`. --- ## Slándáil Docker - Úsáid úsáideoir neamh-fhréamh i dtáirgeadh - Feistigh rúin mar imleabhair léite-amháin - Ná cóipeáil comhaid `.env` isteach in íomhánna Docker riamh - Úsáid `.dockerignore` chun comhaid íogaire a eisiamh - Socraigh `AUTH_COOKIE_SECURE=true` nuair atá tú taobh thiar de 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 ``` --- ## Spleáchais - Rith `npm audit` go rialta (`npm run audit:deps` clúdaíonn main + electron) - Coinnigh spleáchais cothrom le dáta - Úsáideann an tionscadal `husky` + `lint-staged` le haghaidh seiceálacha réamh-choimisiúin (lint-staged + check-docs-sync + check:any-budget:t11) - Ritheann píblíne CI rialacha slándála ESLint ar gach brú (`no-eval`, `no-implied-eval`, `no-new-func` = earráid) - Bailíochtaítear tairisigh sholáthraithe ag lódáil mhodúil trí Zod (`src/shared/validation/schemas.ts`) - Leabharlanna slán-de-réir-chineáil a úsáidtear: `dompurify` / `isomorphic-dompurify` (XSS), `jose` (JWT), `better-sqlite3` (gan riosca SQLi trí cheisteanna paraiméadraithe), `bcryptjs` (haisiú pasfhocal) ## Rialacha Slándála Crua Tá na rialacha seo forfheidhmithe ag uirlisí agus athbhreithneoirí: 1. **Ná coimisiúnaigh rúin riamh** — tá `.env` gitignored; is é `.env.example` an teimpléad (gan litreacha, tráchtanna amháin — féach PUBLIC_CREDS.md thíos) 2. **Ná húsáid `eval()`, `new Function()`, nó eval intuigthe riamh** — forfheidhmíonn ESLint 3. **Ná seachain crúcaí Husky riamh** (`--no-verify`, `--no-gpg-sign`) gan ceadú sainráite oibreora 4. **Ná scríobh SQL amh i mbealaí riamh** — téigh trí `src/lib/db/` i gcónaí (paraiméadraithe) 5. **Bailíochtaigh ionchuir le Zod i gcónaí** — `src/shared/validation/schemas.ts` 6. **Sláintigh ceanntásca iartheachtacha i gcónaí** — liosta diúltaithe in `src/shared/constants/upstreamHeaders.ts` 7. **Criptigh dintiúir ag an gcuid eile** — AES-256-GCM trí `src/lib/db/encryption.ts` 8. **Aitheantóirí OAuth poiblí iartheachtacha trí `resolvePublicCred()`** — ná leabaigh litreacha `AIza…` / `GOCSPX-…` / `…apps.googleusercontent.com` in fhoinse riamh. Féach [`docs/security/PUBLIC_CREDS.md`](docs/security/PUBLIC_CREDS.md). 9. **Freagraí earráide trí `buildErrorBody()` / `sanitizeErrorMessage()`** — ná cuir `err.stack` / `err.message` amh i gcomhlachtaí freagra HTTP / SSE / executor / MCP riamh. Féach [`docs/security/ERROR_SANITIZATION.md`](docs/security/ERROR_SANITIZATION.md). 10. **Luachanna runtime `exec()` / `spawn()` trí rogha `env`** — ná hionchuir cosáin sheachtracha nó luachanna neamhiontaofa i scripteanna a chuirtear trí shlaod riamh. Tagairt: `src/mitm/cert/install.ts::updateNssDatabases`. 11. **Bí i bhfabhar leabharlanna slán-de-réir-chineáil** — féach [tldrsec/awesome-secure-defaults](https://github.com/tldrsec/awesome-secure-defaults) (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink). Sroich dóibh sula ndéanann tú do chuid féin. ## Torthaí scanta slabhra soláthair (Socket.dev / Snyk / cosúil leis sin) Baineann an tsoithse npm `omniroute` foilsithe le tógáil Next.js `output: "standalone"`, a chiallaíonn go dtéann gach láimhseálaí bealaigh — lena n-áirítear gnéithe pribhléid a bhfuil doicimhéadú déanta orthu (MITM, iompórtáil Zed, Cloud Sync, forimeallaigh seirbhíse insínte) — i bpíosaí móideim `next/server/*.js`. Déanann scanóirí slabhra soláthair heuristics cumascú ar na píosaí sin i gcoinne comharthaímharcanna malware go minic. Maidir le gach catagóir torthaí, coinnimid dearbhú cothabhála do gach tortha: - **[`docs/security/SOCKET_DEV_FINDINGS.md`](docs/security/SOCKET_DEV_FINDINGS.md)** — léarscáil in aghaidh an tortha: comhad foinse ↔ crochadh san áireamh ↔ iompar ← cur i bhfeidhm i v3.8.6. - Bloic `SECURITY-AUDITOR-NOTE:` i bhfochód ag gach feidhmmharc san áireamh ag dul ar ais go dtí an doiciméad céanna. Maidir le húsáideoirí nach féidir leo an foláireamh a mhaolú ina n-iarratas: tóg le `OMNIROUTE_BUILD_PROFILE=minimal npm run build`. Athraíonn sin ceithre mhódúl íogair le stubs a sheolann HTTP 503 `feature-disabled` ag am rith, ionas go bhfuil na cosáin pribhléide fhisiciúil as láthair ón bhfardal. Féach [`docs/security/SOCKET_DEV_FINDINGS.md`](docs/security/SOCKET_DEV_FINDINGS.md) don oideas foilseacháin. ## Téacsanna tagartha - [`docs/architecture/AUTHZ_GUIDE.md`](docs/architecture/AUTHZ_GUIDE.md) — píobráin údarúcháin - [`docs/security/GUARDRAILS.md`](docs/security/GUARDRAILS.md) — creat rabhcháin - [`docs/security/COMPLIANCE.md`](docs/security/COMPLIANCE.md) — loga iniúchta agus coinneáil - [`docs/security/PUBLIC_CREDS.md`](docs/security/PUBLIC_CREDS.md) — **riachtanach** patrún do dhintiúir upstream poiblí - [`docs/security/ERROR_SANITIZATION.md`](docs/security/ERROR_SANITIZATION.md) — **riachtanach** patrún d'fhreagairtí earráide - [`docs/security/SOCKET_DEV_FINDINGS.md`](docs/security/SOCKET_DEV_FINDINGS.md) — dearbhú cothabhála do thorthaí scanner slabhra soláthair - [`docs/architecture/RESILIENCE_GUIDE.md`](docs/architecture/RESILIENCE_GUIDE.md) — briseoir chiorcaid + fuarú + díghlasáil - [`docs/security/STEALTH_GUIDE.md`](docs/security/STEALTH_GUIDE.md) — greanmharcáil TLS (fógra dlí/éiteas) - [`CLAUDE.md`](CLAUDE.md) — rialacha crua do shaorálaithe AI - [tldrsec/awesome-secure-defaults](https://github.com/tldrsec/awesome-secure-defaults) — leabharlanna slán de réir réamhshocraithe curtha le chéile