# Security Policy (മലയാളം) 🌐 **Languages:** 🇺🇸 [English](../../../SECURITY.md) · 🇪🇹 [am](../am/SECURITY.md) · 🇸🇦 [ar](../ar/SECURITY.md) · 🇦🇿 [az](../az/SECURITY.md) · 🇧🇬 [bg](../bg/SECURITY.md) · 🇧🇩 [bn](../bn/SECURITY.md) · 🇧🇦 [bs](../bs/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) · 🇮🇪 [ga](../ga/SECURITY.md) · 🇮🇳 [gu](../gu/SECURITY.md) · 🇳🇬 [ha](../ha/SECURITY.md) · 🇮🇱 [he](../he/SECURITY.md) · 🇮🇳 [hi](../hi/SECURITY.md) · 🇭🇷 [hr](../hr/SECURITY.md) · 🇭🇺 [hu](../hu/SECURITY.md) · 🇦🇲 [hy](../hy/SECURITY.md) · 🇮🇩 [id](../id/SECURITY.md) · 🇳🇬 [ig](../ig/SECURITY.md) · 🇮🇹 [it](../it/SECURITY.md) · 🇯🇵 [ja](../ja/SECURITY.md) · 🇬🇪 [ka](../ka/SECURITY.md) · 🇰🇭 [km](../km/SECURITY.md) · 🇮🇳 [kn](../kn/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) · 🇲🇲 [my](../my/SECURITY.md) · 🇳🇵 [ne](../ne/SECURITY.md) · 🇳🇱 [nl](../nl/SECURITY.md) · 🇳🇴 [no](../no/SECURITY.md) · 🇮🇳 [or](../or/SECURITY.md) · 🇮🇳 [pa](../pa/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) · 🇱🇰 [si](../si/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) · 🇺🇿 [uz](../uz/SECURITY.md) · 🇻🇳 [vi](../vi/SECURITY.md) · 🇳🇬 [yo](../yo/SECURITY.md) · 🇨🇳 [zh-CN](../zh-CN/SECURITY.md) · 🇹🇼 [zh-TW](../zh-TW/SECURITY.md) --- ## ദുർബലതകൾ റിപ്പോർട്ട് ചെയ്യൽ OmniRoute-ൽ ഒരു സുരക്ഷാ ദുർബലത കണ്ടെത്തിയാൽ, അത് ഉത്തരവാദിത്തത്തോടെ റിപ്പോർട്ട് ചെയ്യുക: 1. ഒരു പൊതു GitHub issue **തുറക്കരുത്** 2. [GitHub Security Advisories](https://github.com/diegosouzapw/OmniRoute/security/advisories/new) ഉപയോഗിക്കുക 3. ഇവ ഉൾപ്പെടുത്തുക: വിവരണം, പുനരാവിഷ്കരണ ഘട്ടങ്ങൾ, സാധ്യതയുള്ള ആഘാതം ## പ്രതികരണ സമയക്രമം | ഘട്ടം | ലക്ഷ്യം | | --------------------------------- | ------------------------------- | | സ്ഥിരീകരണം | 48 മണിക്കൂർ | | പ്രാഥമിക പരിശോധനയും വിലയിരുത്തലും | 5 പ്രവൃത്തി ദിവസങ്ങൾ | | പാച്ച് റിലീസ് | 14 പ്രവൃത്തി ദിവസങ്ങൾ (ഗുരുതരം) | ## പിന്തുണയ്ക്കുന്ന പതിപ്പുകൾ | പതിപ്പ് | പിന്തുണാ നില | | ------- | ------------------------------------------------------- | | 3.9.x | 🗓️ ആസൂത്രണം ചെയ്തത് — LTS ലൈൻ (`stable/v3`), താഴെ കാണുക | | 3.8.x | ✅ സജീവം | | 3.7.x | ✅ സുരക്ഷാ പിന്തുണ | | < 3.7.0 | ❌ പിന്തുണയില്ല | ## LTS പിന്തുണാ കാലയളവ് (v3.9.x) 3.8.59-ന് ശേഷമുള്ള അടുത്ത പതിപ്പ് **3.9.0** ആണ്; ഇത് `stable/v3` ബ്രാഞ്ചിൽ ദീർഘകാല പിന്തുണാ ലൈൻ ആരംഭിക്കുന്നു ([`ROADMAP.md`](ROADMAP.md) → "Phase 3 — v3.9.0 LTS" കാണുക). - **`stable/v3`-ന് ലഭിക്കുന്നവ:** ബഗ് പരിഹാരങ്ങൾ, സുരക്ഷാ പാച്ചുകൾ, പ്രൊവൈഡർ അപ്ഡേറ്റുകൾ. പുതിയ സവിശേഷതകൾ v4 ചാനലിലേക്കാണ് പോകുന്നത്; LTS ലൈനിൽ സ്ഥിരതയ്ക്കാണ് പ്രഥമ പരിഗണന. `npm install omniroute` (`latest` dist-tag) മുഴുവൻ v4 സൈക്കിളിലും v3-ൽ തുടരും. - **കാലയളവിന്റെ ദൈർഘ്യം:** ``. v4.0 GA-യ്ക്ക് ശേഷം (`latest` v4-ലേക്ക് മാറുമ്പോൾ) കാലയളവ് എത്രനാൾ നീളുമെന്നത് **ഇതുവരെ തീരുമാനിച്ചിട്ടില്ല**; പരിപാലകൻ അത് പ്രഖ്യാപിക്കുമ്പോൾ ഈ വിഭാഗം അപ്ഡേറ്റ് ചെയ്യും. അതുവരെ അവസാന തീയതി അനുമാനിക്കരുത്. - **LTS ലൈനിലെ ഒരു ദുർബലത റിപ്പോർട്ട് ചെയ്യൽ:** മറ്റേതൊരു പതിപ്പിനും ഉപയോഗിക്കുന്ന അതേ ചാനൽ — ഒരു സ്വകാര്യ [GitHub Security Advisory](https://github.com/diegosouzapw/OmniRoute/security/advisories/new); ഒരിക്കലും പൊതു issue ഉപയോഗിക്കരുത്. നിങ്ങൾ പരിശോധിച്ച പതിപ്പ് വ്യക്തമാക്കുക (ഉദാഹരണത്തിന് `3.9.2`); പരിഹാരങ്ങൾ `stable/v3`-ൽ ഉൾപ്പെടുത്തുകയും v4-ലേക്ക് ഫോർവേഡ്-പോർട്ട് ചെയ്യുകയും ചെയ്യും. - **LTS വേർതിരിക്കുന്ന സമയത്തെ സുരക്ഷാ അടിസ്ഥാനനില:** അളന്ന സ്കാനർ നില, റൂട്ട്-ഗാർഡ്, പൊതു ക്രെഡൻഷ്യൽ തെളിവുകൾ എന്നിവ [`docs/security/LTS_SECURITY_BASELINE.md`](docs/security/LTS_SECURITY_BASELINE.md)-ൽ രേഖപ്പെടുത്തിയിട്ടുണ്ട്. --- ## സുരക്ഷാ ആർക്കിടെക്ചർ OmniRoute ഒരു ബഹു-തല സുരക്ഷാ മാതൃക നടപ്പിലാക്കുന്നു: ``` അഭ്യർത്ഥന → CORS → Authz പൈപ്പ്ലൈൻ (വർഗ്ഗീകരിക്കുക → നയങ്ങൾ → നടപ്പിലാക്കുക) → ഗാർഡ്റെയിലുകൾ (PII മാസ്കർ, പ്രോംപ്റ്റ് ഇൻജക്ഷൻ, വിഷൻ ബ്രിഡ്ജ്) → നിരക്ക് നിയന്ത്രകൻ → സർക്യൂട്ട് ബ്രേക്കർ → കൂൾഡൗൺ → മോഡൽ ലോക്കൗട്ട് → പ്രൊവൈഡർ ``` ### 🔐 പ്രാമാണീകരണവും അംഗീകാരവും | സവിശേഷത | നടപ്പിലാക്കൽ | | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **ഡാഷ്ബോർഡ് ലോഗിൻ** | JWT ടോക്കണുകളോടുകൂടിയ പാസ്വേഡ് അധിഷ്ഠിത പ്രാമാണീകരണം (HttpOnly കുക്കികൾ) | | **API കീ പ്രാമാണീകരണം** | CRC സാധൂകരണത്തോടുകൂടിയ HMAC-സൈൻ ചെയ്ത കീകൾ | | **OAuth 2.0 + PKCE** | പ്രൊവൈഡർ-നിർദ്ദിഷ്ട ബ്രൗസർ/ഉപകരണ OAuth പിന്തുണയ്ക്കുന്നിടത്ത് PKCE ഉപയോഗിക്കുന്നു; ഇറക്കുമതി ചെയ്യാൻ മാത്രമുള്ള Devin ക്രെഡൻഷ്യലുകൾ പ്രത്യേകം കൈകാര്യം ചെയ്യുന്നു. | | **ടോക്കൺ പുതുക്കൽ** | കാലാവധി തീരുന്നതിന് മുമ്പ് സ്വയമേവയുള്ള OAuth ടോക്കൺ പുതുക്കൽ | | **സുരക്ഷിത കുക്കികൾ** | HTTPS പരിതസ്ഥിതികൾക്കായി `AUTH_COOKIE_SECURE=true` | | **Authz പൈപ്പ്ലൈൻ** | റൂട്ട് വർഗ്ഗീകരണം (PUBLIC / CLIENT_API / MANAGEMENT) — `docs/architecture/AUTHZ_GUIDE.md` കാണുക | | **റൂട്ട് ഗാർഡ് തലങ്ങൾ** | മാനേജ്മെന്റ് റൂട്ടുകൾക്കായുള്ള 3-തല മാതൃക (LOCAL_ONLY / ALWAYS_PROTECTED / MANAGEMENT) — `docs/security/ROUTE_GUARD_TIERS.md` കാണുക | | **മാനേജ്-സ്കോപ്പ് MCP** | `manage` സ്കോപ്പുള്ള API കീകളാൽ നിയന്ത്രിക്കുന്ന വിദൂര `/api/mcp/*` ആക്സസ്; `/api/cli-tools/runtime/*` കർശനമായ ലൂപ്പ്ബാക്കായി തുടരും. ROUTE_GUARD_TIERS കാണുക | | **MCP സ്കോപ്പുകൾ** | സൂക്ഷ്മമായി വിഭജിച്ച 32 സ്കോപ്പുകൾ (read:health, write:combos, execute:completions മുതലായവ) — `docs/frameworks/MCP-SERVER.md` കാണുക | ### 🛡️ സംഭരണത്തിലുള്ള എൻക്രിപ്ഷൻ SQLite-ൽ സംഭരിക്കുന്ന എല്ലാ സെൻസിറ്റീവ് ഡാറ്റയും scrypt കീ ഡെറിവേഷനോടുകൂടിയ **AES-256-GCM** ഉപയോഗിച്ച് എൻക്രിപ്റ്റ് ചെയ്യുന്നു: - API കീകൾ, ആക്സസ് ടോക്കണുകൾ, റിഫ്രഷ് ടോക്കണുകൾ, ID ടോക്കണുകൾ - പതിപ്പിട്ട ഫോർമാറ്റ്: `enc:v1:::` - `STORAGE_ENCRYPTION_KEY` സജ്ജമാക്കിയിട്ടില്ലെങ്കിൽ പാസ്ത്രൂ മോഡ് (പ്ലെയിൻടെക്സ്റ്റ്) ```bash # എൻക്രിപ്ഷൻ കീ സൃഷ്ടിക്കുക: STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32) ``` ### 🛡️ ഗാർഡ്റെയിൽസ് ഫ്രെയിംവർക്ക് മുൻഗണനാ ക്രമത്തിൽ ക്രമീകരിച്ച 3 ബിൽറ്റ്-ഇൻ ഗാർഡ്റെയിലുകളുള്ള, ഹോട്ട്-റീലോഡ് ചെയ്യാവുന്ന ഒരു **ഗാർഡ്റെയിൽസ് രജിസ്ട്രി** (`src/lib/guardrails/`) OmniRoute-ൽ ഉൾപ്പെടുന്നു: | ഗാർഡ്റെയിൽ | മുൻഗണന | ഉദ്ദേശ്യം | | ------------------ | ------ | -------------------------------------------------------------------------------------------------------------------- | | `vision-bridge` | 5 | വിഷൻ പിന്തുണയില്ലാത്ത മോഡലുകളെ ചിത്ര-അവബോധമുള്ള വിവരണങ്ങളുമായി ബന്ധിപ്പിക്കുന്നു; ചിത്ര URL-ുകൾക്കുള്ള SSRF സംരക്ഷണം | | `pii-masker` | 10 | കോളിന് മുമ്പും ശേഷവുമുള്ള PII മറയ്ക്കൽ (ഇമെയിലുകൾ, ഫോൺ, CPF, CNPJ, ക്രെഡിറ്റ് കാർഡുകൾ, SSN) | | `prompt-injection` | 20 | ഓവർറൈഡ്/റോൾ-ഹൈജാക്ക്/ജയിൽബ്രേക്ക്/ചോർച്ചാ പാറ്റേണുകൾ കണ്ടെത്തുന്നു | ഇഷ്ടാനുസൃത ഗാർഡ്റെയിലുകൾ `registerGuardrail(new MyGuardrail())` വഴി രജിസ്റ്റർ ചെയ്യുന്നു. ഈ മാതൃക ഫെയിൽ-ഓപ്പൺ ആണ് (എക്സെപ്ഷനുകൾ ഒരിക്കലും ട്രാഫിക് തടയില്ല). ഓരോ അഭ്യർത്ഥനയ്ക്കും `x-omniroute-disabled-guardrails` ഹെഡർ വഴി ഒഴിവാകാം. → [`docs/security/GUARDRAILS.md`](docs/security/GUARDRAILS.md) കാണുക. ### 🧠 പ്രോംപ്റ്റ് ഇൻജക്ഷൻ ഗാർഡ് LLM അഭ്യർത്ഥനകളിലെ പ്രോംപ്റ്റ് ഇൻജക്ഷൻ പാറ്റേണുകൾ കണ്ടെത്തുന്ന ബെസ്റ്റ്-എഫർട്ട് ഹ്യൂറിസ്റ്റിക് മിഡിൽവെയർ. **ഇതൊരു സമ്പൂർണ്ണ പ്രോംപ്റ്റ്-ഇൻജക്ഷൻ ഫയർവാൾ അല്ല** — തെറ്റായ പോസിറ്റീവുകളും (ദോഷരഹിതമായ പേഴ്സോണ/RPG പ്രോംപ്റ്റുകൾ) തെറ്റായ നെഗറ്റീവുകളും (ലീറ്റ്സ്പീക്ക്, സ്പേസിംഗ്, ഇംഗ്ലീഷ് ഇതര പാറ്റേണുകൾ) ഉണ്ടാകാം. | പാറ്റേൺ തരം | തീവ്രത | ഉദാഹരണം | | ------------------- | -------- | -------------------------------------------------------------- | | സിസ്റ്റം ഓവർറൈഡ് | ഉയർന്നത് | "മുമ്പത്തെ എല്ലാ നിർദ്ദേശങ്ങളും അവഗണിക്കുക" | | റോൾ ഹൈജാക്ക് | ഇടത്തരം | "നിങ്ങൾ ഇപ്പോൾ DAN ആണ്, നിങ്ങൾക്ക് എന്തും ചെയ്യാം" | | ഡിലിമിറ്റർ ഇൻജക്ഷൻ | ഉയർന്നത് | കോൺടെക്സ്റ്റ് അതിരുകൾ തകർക്കാനുള്ള എൻകോഡ് ചെയ്ത സെപ്പറേറ്ററുകൾ | | DAN/ജെയിൽബ്രേക്ക് | ഇടത്തരം | അറിയപ്പെടുന്ന ജെയിൽബ്രേക്ക് പ്രോംപ്റ്റ് പാറ്റേണുകൾ | | നിർദ്ദേശ ചോർച്ച | ഉയർന്നത് | "നിങ്ങളുടെ സിസ്റ്റം പ്രോംപ്റ്റ് എന്നെ കാണിക്കുക" | | എൻകോഡിംഗ് ഒഴിവാക്കൽ | ഇടത്തരം | base64/rot13/hex ഡീകോഡ് + നിർദ്ദേശ കീവേഡുകൾ | `block` മോഡിൽ **ഉയർന്ന** തീവ്രതയുള്ള കണ്ടെത്തലുകൾ മാത്രമാണ് ബ്ലോക്ക് ചെയ്യപ്പെടുന്നത്. ഇടത്തരം തീവ്രതയുള്ള വിഭാഗങ്ങൾ ലോഗ് ചെയ്യപ്പെടുമെങ്കിലും `sanitizeRequest` ഒരിക്കലും അവയെ ബ്ലോക്ക് ചെയ്യില്ല. ഡാഷ്ബോർഡ് (Settings → Security) അല്ലെങ്കിൽ `.env` വഴി കോൺഫിഗർ ചെയ്യുക: ```env INPUT_SANITIZER_ENABLED=true INPUT_SANITIZER_MODE=block # warn | block (ഇൻജക്ഷൻ നയം; പഴയ "redact" ഇൻജക്ഷൻ ടെക്സ്റ്റ് നീക്കം ചെയ്യുന്നില്ല) INPUT_SANITIZER_BLOCK_THRESHOLD=high # high (ഡിഫോൾട്ട്) | medium | low — ഈ തീവ്രതയിലോ അതിന് മുകളിലോ ഉള്ളവ block മോഡിൽ ബ്ലോക്ക് ചെയ്യപ്പെടും ``` ### 🔒 PII തിരുത്തിമറയ്ക്കൽ വ്യക്തിയെ തിരിച്ചറിയാൻ കഴിയുന്ന വിവരങ്ങളുടെ സ്വയമേവയുള്ള കണ്ടെത്തലും ഐച്ഛികമായ തിരുത്തിമറയ്ക്കലും: | PII തരം | പാറ്റേൺ | പകരം വയ്ക്കുന്നത് | | ---------------- | --------------------- | ------------------ | | ഇമെയിൽ | `user@domain.com` | `[EMAIL_REDACTED]` | | CPF (ബ്രസീൽ) | `123.456.789-00` | `[CPF_REDACTED]` | | CNPJ (ബ്രസീൽ) | `12.345.678/0001-00` | `[CNPJ_REDACTED]` | | ക്രെഡിറ്റ് കാർഡ് | `4111-1111-1111-1111` | `[CC_REDACTED]` | | ഫോൺ | `+55 11 99999-9999` | `[PHONE_REDACTED]` | | SSN (US) | `123-45-6789` | `[SSN_REDACTED]` | ```env PII_REDACTION_ENABLED=true # അഭ്യർത്ഥനയിലെ PII തിരുത്തിയെഴുതുക; INPUT_SANITIZER_MODE-ൽ നിന്ന് സ്വതന്ത്രം PII_RESPONSE_SANITIZATION=true # ഐച്ഛികം: ക്ലയന്റുകൾക്ക് തിരികെ നൽകുന്ന പ്രൊവൈഡർ പ്രതികരണങ്ങളിലെ PII തിരുത്തിമറയ്ക്കുക ``` ### 🌐 നെറ്റ്വർക്ക് സുരക്ഷ | സവിശേഷത | വിവരണം | | ---------------------------- | ------------------------------------------------------------------------------------------------ | | **CORS** | വ്യക്തമായി നിർവചിച്ച ക്രോസ്-ഒറിജിൻ അലൗലിസ്റ്റ് (`CORS_ALLOWED_ORIGINS`; പഴയ `CORS_ORIGIN`) | | **IP ഫിൽട്ടറിംഗ്** | ഡാഷ്ബോർഡിലെ അലൗലിസ്റ്റ്/ബ്ലോക്ക്ലിസ്റ്റ് IP പരിധികൾ | | **നിരക്ക് പരിമിതപ്പെടുത്തൽ** | സ്വയമേവയുള്ള ബാക്ക്ഓഫോടുകൂടിയ ഓരോ പ്രൊവൈഡറിനുമുള്ള നിരക്ക് പരിധികൾ | | **ആന്റി-തണ്ടറിംഗ് ഹെർഡ്** | മ്യൂട്ടെക്സ് + ഓരോ കണക്ഷനുമുള്ള ലോക്കിംഗ്, തുടർച്ചയായി ഉണ്ടാകുന്ന 502 പിശകുകൾ തടയുന്നു | | **TLS ഫിംഗർപ്രിന്റ്** | ബോട്ട് കണ്ടെത്തൽ കുറയ്ക്കുന്നതിനുള്ള ബ്രൗസർ പോലുള്ള TLS ഫിംഗർപ്രിന്റ് സ്പൂഫിംഗ് | | **CLI ഫിംഗർപ്രിന്റ്** | നേറ്റീവ് CLI സിഗ്നേച്ചറുകളുമായി പൊരുത്തപ്പെടുന്നതിനുള്ള ഓരോ പ്രൊവൈഡറിനുമുള്ള ഹെഡർ/ബോഡി ക്രമീകരണം | ### 🔌 പ്രതിരോധക്ഷമതയും ലഭ്യതയും | സവിശേഷത | വിവരണം | | --------------------------- | ----------------------------------------------------------------------------------- | | **സർക്യൂട്ട് ബ്രേക്കർ** | ഓരോ പ്രൊവൈഡറിനും 3-സ്റ്റേറ്റ് (Closed → Open → Half-Open), SQLite-ൽ നിലനിർത്തുന്നത് | | **അഭ്യർത്ഥന ഐഡംപൊട്ടൻസി** | ഡ്യൂപ്ലിക്കേറ്റ് അഭ്യർത്ഥനകൾക്കുള്ള 5-സെക്കൻഡ് ഡീഡ്യൂപ്പ് വിൻഡോ | | **എക്സ്പൊണൻഷ്യൽ ബാക്ക്ഓഫ്** | വർധിച്ചുവരുന്ന കാലതാമസങ്ങളോടുകൂടിയ സ്വയമേവയുള്ള പുനഃശ്രമം | | **ഹെൽത്ത് ഡാഷ്ബോർഡ്** | തത്സമയ പ്രൊവൈഡർ ആരോഗ്യ നിരീക്ഷണം | ### 📋 പാലനം | സവിശേഷത | വിവരണം | | ------------------------------------------ | ----------------------------------------------------------------------------------------- | | **ലോഗ് നിലനിർത്തൽ** | `CALL_LOG_RETENTION_DAYS` കഴിഞ്ഞാൽ സ്വയമേവയുള്ള വൃത്തിയാക്കൽ | | **ലോഗ് ചെയ്യാതിരിക്കാനുള്ള ഓപ്റ്റ്-ഔട്ട്** | ഓരോ API കീയിലുമുള്ള `noLog` ഫ്ലാഗ് അഭ്യർത്ഥന ലോഗിംഗ് പ്രവർത്തനരഹിതമാക്കുന്നു | | **ഓഡിറ്റ് ലോഗ്** | അഡ്മിനിസ്ട്രേറ്റീവ് പ്രവർത്തനങ്ങൾ `audit_log` പട്ടികയിൽ ട്രാക്ക് ചെയ്യപ്പെടുന്നു | | **MCP ഓഡിറ്റ്** | എല്ലാ MCP ടൂൾ കോളുകൾക്കുമുള്ള SQLite-പിന്തുണയുള്ള ഓഡിറ്റ് ലോഗിംഗ് | | **Zod വാലിഡേഷൻ** | എല്ലാ API ഇൻപുട്ടുകളും മൊഡ്യൂൾ ലോഡ് ചെയ്യുമ്പോൾ Zod v4 സ്കീമകൾ ഉപയോഗിച്ച് സാധൂകരിക്കുന്നു | --- ## ആവശ്യമായ എൻവയോൺമെന്റ് വേരിയബിളുകൾ സെർവർ ആരംഭിക്കുന്നതിന് മുമ്പ് എല്ലാ രഹസ്യങ്ങളും സജ്ജീകരിച്ചിരിക്കണം. അവ ഇല്ലെങ്കിലോ ദുർബലമാണെങ്കിലോ സെർവർ **ഉടൻ പരാജയപ്പെടും**. ```bash # ആവശ്യമാണ് — ഇവയില്ലാതെ സെർവർ ആരംഭിക്കില്ല: JWT_SECRET=$(openssl rand -base64 48) # കുറഞ്ഞത് 32 പ്രതീകങ്ങൾ API_KEY_SECRET=$(openssl rand -hex 32) # കുറഞ്ഞത് 16 പ്രതീകങ്ങൾ # ശുപാർശ ചെയ്യുന്നു — സംഭരണത്തിലുള്ള എൻക്രിപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നു: STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32) ``` `changeme`, `secret`, അല്ലെങ്കിൽ `password` പോലുള്ള ദുർബലമെന്ന് അറിയപ്പെടുന്ന മൂല്യങ്ങൾ സെർവർ സജീവമായി നിരസിക്കുന്നു. --- ## Docker സുരക്ഷ - പ്രൊഡക്ഷനിൽ non-root ഉപയോക്താവിനെ ഉപയോഗിക്കുക - രഹസ്യങ്ങൾ read-only വോള്യങ്ങളായി മൗണ്ട് ചെയ്യുക - `.env` ഫയലുകൾ ഒരിക്കലും Docker ഇമേജുകളിലേക്ക് പകർത്തരുത് - സെൻസിറ്റീവ് ഫയലുകൾ ഒഴിവാക്കാൻ `.dockerignore` ഉപയോഗിക്കുക - HTTPS-ന് പിന്നിലാണെങ്കിൽ `AUTH_COOKIE_SECURE=true` സജ്ജീകരിക്കുക ```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 ``` --- ## ഡിപെൻഡൻസികൾ - `npm audit` പതിവായി പ്രവർത്തിപ്പിക്കുക (`npm run audit:deps` പ്രധാന ഭാഗവും electron-ഉം ഉൾക്കൊള്ളുന്നു) - ഡിപെൻഡൻസികൾ അപ്ഡേറ്റായി നിലനിർത്തുക - pre-commit പരിശോധനകൾക്കായി പ്രോജക്റ്റ് `husky` + `lint-staged` ഉപയോഗിക്കുന്നു (lint-staged + check-docs-sync + check:any-budget:t11) - ഓരോ push-ലും CI പൈപ്പ്ലൈൻ ESLint സുരക്ഷാ നിയമങ്ങൾ പ്രവർത്തിപ്പിക്കുന്നു (`no-eval`, `no-implied-eval`, `no-new-func` = പിശക്) - മൊഡ്യൂൾ ലോഡ് ചെയ്യുമ്പോൾ Zod വഴി പ്രൊവൈഡർ കോൺസ്റ്റന്റുകൾ സാധൂകരിക്കുന്നു (`src/shared/validation/schemas.ts`) - സുരക്ഷിതമായ ഡിഫോൾട്ടുകളുള്ള ലൈബ്രറികൾ ഉപയോഗിക്കുന്നു: `dompurify` / `isomorphic-dompurify` (XSS), `jose` (JWT), `better-sqlite3` (പാരാമീറ്ററൈസ്ഡ് ക്വറികൾ കാരണം SQLi അപകടസാധ്യതയില്ല), `bcryptjs` (പാസ്വേഡ് ഹാഷിംഗ്) ## കർശനമായ സുരക്ഷാ നിയമങ്ങൾ ടൂളുകളും റിവ്യൂ ചെയ്യുന്നവരും ഈ നിയമങ്ങൾ നിർബന്ധിതമാക്കുന്നു: 1. **രഹസ്യങ്ങൾ ഒരിക്കലും commit ചെയ്യരുത്** — `.env` gitignore ചെയ്തിരിക്കുന്നു; `.env.example` ആണ് ടെംപ്ലേറ്റ് (ലിറ്ററലുകൾ ഇല്ല, കമന്റുകൾ മാത്രം — താഴെയുള്ള PUBLIC_CREDS.md കാണുക) 2. **`eval()`, `new Function()`, അല്ലെങ്കിൽ implied eval ഒരിക്കലും ഉപയോഗിക്കരുത്** — ESLint ഇത് നിർബന്ധിതമാക്കുന്നു 3. **വ്യക്തമായ ഓപ്പറേറ്റർ അനുമതിയില്ലാതെ Husky hooks ഒരിക്കലും മറികടക്കരുത്** (`--no-verify`, `--no-gpg-sign`) 4. **റൂട്ടുകളിൽ raw SQL ഒരിക്കലും എഴുതരുത്** — എല്ലായ്പ്പോഴും `src/lib/db/` വഴി പോകുക (പാരാമീറ്ററൈസ്ഡ്) 5. **ഇൻപുട്ടുകൾ എല്ലായ്പ്പോഴും Zod ഉപയോഗിച്ച് സാധൂകരിക്കുക** — `src/shared/validation/schemas.ts` 6. **upstream ഹെഡറുകൾ എല്ലായ്പ്പോഴും സാനിറ്റൈസ് ചെയ്യുക** — `src/shared/constants/upstreamHeaders.ts`-ലെ denylist 7. **സംഭരണത്തിലുള്ള ക്രെഡൻഷ്യലുകൾ എൻക്രിപ്റ്റ് ചെയ്യുക** — `src/lib/db/encryption.ts` വഴിയുള്ള AES-256-GCM 8. **പൊതുവായ upstream OAuth ഐഡന്റിഫയറുകൾക്ക് `resolvePublicCred()` ഉപയോഗിക്കുക** — `AIza…` / `GOCSPX-…` / `…apps.googleusercontent.com` ലിറ്ററലുകൾ സോഴ്സിൽ ഒരിക്കലും ഉൾപ്പെടുത്തരുത്. [`docs/security/PUBLIC_CREDS.md`](docs/security/PUBLIC_CREDS.md) കാണുക. 9. **പിശക് പ്രതികരണങ്ങൾ `buildErrorBody()` / `sanitizeErrorMessage()` വഴി നൽകുക** — HTTP / SSE / executor / MCP പ്രതികരണ ബോഡികളിൽ raw `err.stack` / `err.message` ഒരിക്കലും ഉൾപ്പെടുത്തരുത്. [`docs/security/ERROR_SANITIZATION.md`](docs/security/ERROR_SANITIZATION.md) കാണുക. 10. **`exec()` / `spawn()` റൺടൈം മൂല്യങ്ങൾ `env` ഓപ്ഷൻ വഴി നൽകുക** — ബാഹ്യ പാത്തുകളോ വിശ്വസനീയമല്ലാത്ത മൂല്യങ്ങളോ shell-ലേക്ക് കൈമാറുന്ന സ്ക്രിപ്റ്റുകളിൽ ഒരിക്കലും string-interpolate ചെയ്യരുത്. റഫറൻസ്: `src/mitm/cert/install.ts::updateNssDatabases`. 11. **സുരക്ഷിതമായ ഡിഫോൾട്ടുകളുള്ള ലൈബ്രറികൾക്ക് മുൻഗണന നൽകുക** — [tldrsec/awesome-secure-defaults](https://github.com/tldrsec/awesome-secure-defaults) കാണുക (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink). സ്വന്തമായി നിർമ്മിക്കുന്നതിന് മുമ്പ് അവ ഉപയോഗിക്കാൻ ശ്രമിക്കുക. ## സപ്ലൈ-ചെയിൻ സ്കാനർ കണ്ടെത്തലുകൾ (Socket.dev / Snyk / സമാനമായവ) > **വ്യാപ്തി കുറിപ്പ്:** റിപ്പോസിറ്ററിയുടെ റൂട്ടിലുള്ള `socket.yml`, പ്രസിദ്ധീകരിച്ച npm ആർട്ടിഫാക്റ്റിൽ Socket.dev നടത്തുന്ന രജിസ്ട്രി-വശത്തെ പ്രസിദ്ധീകരണാനന്തര സ്കാനിനായി `projectIgnorePaths` മാത്രമാണ് ക്രമീകരിക്കുന്നത് — ഇത് നിർബന്ധിത CI/PR ലയന ഗേറ്റ് അല്ല. `.github/workflows`-ലെ ഒരു workflow-യും, `package.json` script-ഉം, `Makefile` target-ഉം Socket.dev-നെ പ്രവർത്തിപ്പിക്കുന്നില്ല. പ്രസിദ്ധീകരിച്ച `omniroute` npm ആർട്ടിഫാക്റ്റിൽ Next.js `output: "standalone"` build ഉൾപ്പെടുത്തിയിരിക്കുന്നു. അതിനാൽ, രേഖപ്പെടുത്തിയിട്ടുള്ള പ്രത്യേകാവകാശമുള്ള സവിശേഷതകൾ (MITM, Zed import, Cloud Sync, ഉൾച്ചേർത്ത service supervisor) ഉൾപ്പെടെ എല്ലാ route handler-കളും `.next/server/*.js` minified chunk-കളിൽ ഉൾപ്പെടുന്നു. ഹ്യൂറിസ്റ്റിക് സപ്ലൈ-ചെയിൻ സ്കാനറുകൾ ഈ chunk-കളെ malware signature-കളുമായി താരതമ്യം ചെയ്ത് പതിവായി pattern-match ചെയ്യുന്നു. ഞങ്ങൾ ഉപയോഗിക്കുന്ന സ്കാനർ configuration റിപ്പോ റൂട്ടിലുള്ള [`socket.yml`](socket.yml)-ലാണ് (Socket.dev GitHub App format v2 — കാണുക ). പ്രസിദ്ധീകരിക്കാത്ത directory-കളെ (`tests/`, `_tasks/`, `_references/`, `_ideia/`, `_mono_repo/`, `docs/` തുടങ്ങിയവ) ഇത് വ്യക്തമായി ഒഴിവാക്കുന്നു. അതിനാൽ യഥാർത്ഥത്തിൽ പ്രസിദ്ധീകരിച്ച ഉപയോക്താക്കളിലേക്ക് എത്തുന്ന code path-ുകളെക്കുറിച്ച് മാത്രമേ സ്കാനർ റിപ്പോർട്ട് ചെയ്യൂ — ഈ റിപ്പോസിറ്ററിയിലെ workflow അല്ല, ആ ഫയൽ വായിക്കുന്ന Socket GitHub App തന്നെയാണ് സ്കാൻ പ്രവർത്തിപ്പിക്കുന്നത്. ഓരോ കണ്ടെത്തൽ വിഭാഗത്തിനും, ഓരോ കണ്ടെത്തലിനുമുള്ള maintainer attestation ഞങ്ങൾ പരിപാലിക്കുന്നു: - **[`docs/security/SOCKET_DEV_FINDINGS.md`](docs/security/SOCKET_DEV_FINDINGS.md)** — ഓരോ കണ്ടെത്തലിന്റെയും മാപ്പ്: source file ↔ flag ചെയ്ത chunk ↔ പെരുമാറ്റം ↔ v3.8.6-ൽ പ്രയോഗിച്ച mitigation. - flag ചെയ്ത ഓരോ function-ലുമുള്ള in-source `SECURITY-AUDITOR-NOTE:` block-ുകൾ അതേ document-ലേക്ക് തിരികെ ചൂണ്ടുന്നു. alert ഇളവ് ചെയ്യാൻ കഴിയാത്ത pipeline-ുകളുള്ള ഉപയോക്താക്കൾ: `OMNIROUTE_BUILD_PROFILE=minimal npm run build` ഉപയോഗിച്ച് build ചെയ്യുക. ഇത് നാല് സെൻസിറ്റീവ് module-ുകൾക്കു പകരം runtime-ൽ HTTP 503 `feature-disabled` മടക്കിനൽകുന്ന stub-ുകൾ സ്ഥാപിക്കുന്നു. അതിനാൽ പ്രത്യേകാവകാശമുള്ള code path-ുകൾ bundle-ൽ ഭൗതികമായി ഉണ്ടാകില്ല. പ്രസിദ്ധീകരണ നടപടിക്രമത്തിനായി [`docs/security/SOCKET_DEV_FINDINGS.md`](docs/security/SOCKET_DEV_FINDINGS.md) കാണുക. ## അവലംബങ്ങൾ - [`docs/architecture/AUTHZ_GUIDE.md`](docs/architecture/AUTHZ_GUIDE.md) — authorization pipeline - [`docs/security/GUARDRAILS.md`](docs/security/GUARDRAILS.md) — guardrails framework - [`docs/security/COMPLIANCE.md`](docs/security/COMPLIANCE.md) — audit log-ഉം retention-ഉം - [`docs/security/PUBLIC_CREDS.md`](docs/security/PUBLIC_CREDS.md) — പൊതു upstream credential-ുകൾക്കുള്ള **നിർബന്ധിത** pattern - [`docs/security/ERROR_SANITIZATION.md`](docs/security/ERROR_SANITIZATION.md) — error response-ുകൾക്കുള്ള **നിർബന്ധിത** pattern - [`docs/security/SOCKET_DEV_FINDINGS.md`](docs/security/SOCKET_DEV_FINDINGS.md) — സപ്ലൈ-ചെയിൻ സ്കാനർ കണ്ടെത്തലുകൾക്കുള്ള maintainer attestation - [`docs/architecture/RESILIENCE_GUIDE.md`](docs/architecture/RESILIENCE_GUIDE.md) — circuit breaker + cooldown + lockout - [`docs/security/STEALTH_GUIDE.md`](docs/security/STEALTH_GUIDE.md) — TLS fingerprinting (നിയമപരമായ/നൈതികമായ അറിയിപ്പ്) - [`CLAUDE.md`](CLAUDE.md) — AI agent-ുകൾക്കുള്ള കർശന നിയമങ്ങൾ - [tldrsec/awesome-secure-defaults](https://github.com/tldrsec/awesome-secure-defaults) — സുരക്ഷിതമായ default-ുകളുള്ള, തിരഞ്ഞെടുത്ത library-കൾ