# 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) · 🇮🇳 [ml](../ml/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) · 🇮🇳 [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.8.x | ✅ ସକ୍ରିୟ | | 3.7.x | ✅ ସୁରକ୍ଷା | | < 3.7.0 | ❌ ଅସମର୍ଥିତ | --- ## ସୁରକ୍ଷା ସ୍ଥାପତ୍ୟ 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` ଦେଖନ୍ତୁ | | **Manage-Scope MCP** | ଦୂରସ୍ଥ `/api/mcp/*` ଆକ୍ସେସ୍କୁ `manage` ସ୍କୋପ୍ ଥିବା API କି ଦ୍ୱାରା ନିୟନ୍ତ୍ରଣ କରାଯାଏ; `/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) ``` ### 🛡️ ଗାର୍ଡରେଲ୍ ଫ୍ରେମ୍ୱର୍କ OmniRoute ପ୍ରାଥମିକତା ଅନୁଯାୟୀ କ୍ରମବଦ୍ଧ 3ଟି ବିଲ୍ଟ-ଇନ୍ ଗାର୍ଡରେଲ୍ ସହିତ ଏକ ହଟ୍-ରିଲୋଡ୍ଯୋଗ୍ୟ **ଗାର୍ଡରେଲ୍ ରେଜିଷ୍ଟ୍ରି** (`src/lib/guardrails/`) ପ୍ରଦାନ କରେ: | ଗାର୍ଡରେଲ୍ | ପ୍ରାଥମିକତା | ଉଦ୍ଦେଶ୍ୟ | | ------------------ | ---------- | --------------------------------------------------------------------------------------------- | | `vision-bridge` | 5 | ପ୍ରତିଛବି-ସଚେତନ ବର୍ଣ୍ଣନା ସହିତ ନନ୍-ଭିଜନ୍ ମଡେଲ୍ଗୁଡ଼ିକୁ ସଂଯୋଗ କରେ; ପ୍ରତିଛବି URL ପାଇଁ SSRF ସୁରକ୍ଷା | | `pii-masker` | 10 | କଲ୍ ପୂର୍ବ+ପରବର୍ତ୍ତୀ PII ଗୋପନୀକରଣ (ଇମେଲ୍, ଫୋନ୍, CPF, CNPJ, କ୍ରେଡିଟ୍ କାର୍ଡ, SSN) | | `prompt-injection` | 20 | ଓଭର୍ରାଇଡ୍/ଭୂମିକା-ହାଇଜ୍ୟାକ୍/ଜେଲ୍ବ୍ରେକ୍/ଲିକ୍ ପ୍ୟାଟର୍ନ ଚିହ୍ନଟ କରେ | କଷ୍ଟମ୍ ଗାର୍ଡରେଲ୍ଗୁଡ଼ିକ `registerGuardrail(new MyGuardrail())` ମାଧ୍ୟମରେ ପଞ୍ଜୀକୃତ ହୁଏ। ମଡେଲ୍ଟି fail-open ଅଟେ (ବ୍ୟତିକ୍ରମଗୁଡ଼ିକ କେବେବି ଟ୍ରାଫିକ୍କୁ ଅବରୋଧ କରେ ନାହିଁ)। `x-omniroute-disabled-guardrails` ହେଡର୍ ମାଧ୍ୟମରେ ପ୍ରତି-ଅନୁରୋଧ ଅପ୍ଟ-ଆଉଟ୍। → [`docs/security/GUARDRAILS.md`](docs/security/GUARDRAILS.md) ଦେଖନ୍ତୁ। ### 🧠 ପ୍ରମ୍ପ୍ଟ ଇଞ୍ଜେକ୍ସନ୍ ଗାର୍ଡ LLM ଅନୁରୋଧଗୁଡ଼ିକରେ ପ୍ରମ୍ପ୍ଟ ଇଞ୍ଜେକ୍ସନ୍ ପ୍ୟାଟର୍ନ ଚିହ୍ନଟ କରୁଥିବା ସର୍ବୋତ୍ତମ-ପ୍ରୟାସ ହ୍ୟୁରିଷ୍ଟିକ୍ ମିଡଲ୍ୱେର୍। **ଏହା ଏକ ସମ୍ପୂର୍ଣ୍ଣ ପ୍ରମ୍ପ୍ଟ-ଇଞ୍ଜେକ୍ସନ୍ ଫାୟାରୱାଲ୍ ନୁହେଁ** — ଏହା ମିଥ୍ୟା ସକାରାତ୍ମକ (କ୍ଷତିହୀନ ପର୍ସୋନା/RPG ପ୍ରମ୍ପ୍ଟ) ଏବଂ ମିଥ୍ୟା ନକାରାତ୍ମକ (ଲିଟ୍ସ୍ପିକ୍, ସ୍ପେସିଂ, ଅଣ-ଇଂରାଜୀ ପ୍ୟାଟର୍ନ) ଉତ୍ପନ୍ନ କରିପାରେ। | ପ୍ୟାଟର୍ନ ପ୍ରକାର | ଗୁରୁତ୍ୱ | ଉଦାହରଣ | | -------------------- | ------- | ------------------------------------------------------ | | ସିଷ୍ଟମ୍ ଓଭର୍ରାଇଡ୍ | ଉଚ୍ଚ | "ପୂର୍ବର ସମସ୍ତ ନିର୍ଦ୍ଦେଶକୁ ଅଣଦେଖା କରନ୍ତୁ" | | ଭୂମିକା ହାଇଜ୍ୟାକ୍ | ମଧ୍ୟମ | "ଆପଣ ବର୍ତ୍ତମାନ DAN, ଆପଣ କିଛି ବି କରିପାରିବେ" | | ଡିଲିମିଟର୍ ଇଞ୍ଜେକ୍ସନ୍ | ଉଚ୍ଚ | ପ୍ରସଙ୍ଗ ସୀମାକୁ ଭାଙ୍ଗିବା ପାଇଁ ଏନ୍କୋଡ୍ କରାଯାଇଥିବା ବିଭାଜକ | | DAN/ଜେଲ୍ବ୍ରେକ୍ | ମଧ୍ୟମ | ଜଣାଶୁଣା ଜେଲ୍ବ୍ରେକ୍ ପ୍ରମ୍ପ୍ଟ ପ୍ୟାଟର୍ନ | | ନିର୍ଦ୍ଦେଶ ଲିକ୍ | ଉଚ୍ଚ | "ମୋତେ ଆପଣଙ୍କ ସିଷ୍ଟମ୍ ପ୍ରମ୍ପ୍ଟ ଦେଖାନ୍ତୁ" | | ଏନ୍କୋଡିଂ ଏଡ଼ାଇବା | ମଧ୍ୟମ | base64/rot13/hex ଡିକୋଡ୍ + ନିର୍ଦ୍ଦେଶ କୀୱାର୍ଡ | `block` ମୋଡ୍ରେ କେବଳ **ଉଚ୍ଚ** ଗୁରୁତ୍ୱର ଚିହ୍ନଟଗୁଡ଼ିକୁ ଅବରୋଧ କରାଯାଏ। ମଧ୍ୟମ-ଗୁରୁତ୍ୱ ପରିବାରଗୁଡ଼ିକୁ ଲଗ୍ କରାଯାଏ, କିନ୍ତୁ `sanitizeRequest` ଦ୍ୱାରା କେବେବି ଅବରୋଧ କରାଯାଏ ନାହିଁ। ଡ୍ୟାସ୍ବୋର୍ଡ (ସେଟିଂସ୍ → ସୁରକ୍ଷା) କିମ୍ବା `.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 (ଯୁକ୍ତରାଷ୍ଟ୍ର) | `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 ରେଞ୍ଜ | | **ରେଟ୍ ଲିମିଟିଂ** | ସ୍ୱୟଂଚାଳିତ ବ୍ୟାକ୍ଅଫ୍ ସହିତ ପ୍ରତି-ପ୍ରଦାନକାରୀ ରେଟ୍ ସୀମା | | **ଆଣ୍ଟି-ଥଣ୍ଡରିଂ ହର୍ଡ** | Mutex + ପ୍ରତି-ସଂଯୋଗ ଲକିଂ କ୍ରମିକ 502ଗୁଡ଼ିକୁ ପ୍ରତିରୋଧ କରେ | | **TLS ଫିଙ୍ଗରପ୍ରିଣ୍ଟ** | ବଟ୍ ଚିହ୍ନଟ ହ୍ରାସ କରିବା ପାଇଁ ବ୍ରାଉଜର୍-ସଦୃଶ TLS ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ସ୍ପୁଫିଂ | | **CLI ଫିଙ୍ଗରପ୍ରିଣ୍ଟ** | ନେଟିଭ୍ CLI ସ୍ୱାକ୍ଷର ସହିତ ମେଳ କରିବା ପାଇଁ ପ୍ରତି-ପ୍ରଦାନକାରୀ ହେଡର୍/ବଡି କ୍ରମ | ### 🔌 ସ୍ଥିତିସ୍ଥାପକତା ଏବଂ ଉପଲବ୍ଧତା | ବୈଶିଷ୍ଟ୍ୟ | ବର୍ଣ୍ଣନା | | ----------------------------- | ---------------------------------------------------------------------------------------- | | **ସର୍କିଟ୍ ବ୍ରେକର୍** | ପ୍ରତି ପ୍ରଦାନକାରୀ ପାଇଁ 3-ସ୍ଥିତି (ବନ୍ଦ → ଖୋଲା → ଅର୍ଦ୍ଧ-ଖୋଲା), 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` main + electronକୁ ଅନ୍ତର୍ଭୁକ୍ତ କରେ) - ନିର୍ଭରତାଗୁଡ଼ିକୁ ଅଦ୍ୟତନ ରଖନ୍ତୁ - ପ୍ରକଳ୍ପଟି pre-commit ଯାଞ୍ଚ ପାଇଁ `husky` + `lint-staged` ବ୍ୟବହାର କରେ (lint-staged + check-docs-sync + check:any-budget:t11) - CI ପାଇପ୍ଲାଇନ୍ ପ୍ରତ୍ୟେକ pushରେ ESLint ସୁରକ୍ଷା ନିୟମ ଚଲାଏ (`no-eval`, `no-implied-eval`, `no-new-func` = ତ୍ରୁଟି) - Zod ମାଧ୍ୟମରେ ମଡ୍ୟୁଲ୍ ଲୋଡ୍ ସମୟରେ Provider constants ବୈଧୀକୃତ ହୁଏ (`src/shared/validation/schemas.ts`) - ବ୍ୟବହୃତ secure-by-default ଲାଇବ୍ରେରୀଗୁଡ଼ିକ: `dompurify` / `isomorphic-dompurify` (XSS), `jose` (JWT), `better-sqlite3` (parameterized queries ଯୋଗୁଁ SQLi ବିପଦ ନାହିଁ), `bcryptjs` (ପାସ୍ୱାର୍ଡ ହ୍ୟାସିଂ) ## କଠୋର ସୁରକ୍ଷା ନିୟମ ଏହି ନିୟମଗୁଡ଼ିକ ଟୁଲିଂ ଏବଂ ସମୀକ୍ଷକମାନଙ୍କ ଦ୍ୱାରା ବାଧ୍ୟତାମୂଳକ ଭାବେ ଲାଗୁ କରାଯାଏ: 1. **ଗୋପନୀୟ ମୂଲ୍ୟ କେବେ ମଧ୍ୟ commit କରନ୍ତୁ ନାହିଁ** — `.env`କୁ gitignore କରାଯାଇଛି; `.env.example` ହେଉଛି ଟେମ୍ପଲେଟ୍ (କୌଣସି literal ନାହିଁ, କେବଳ ମନ୍ତବ୍ୟ — ତଳେ PUBLIC_CREDS.md ଦେଖନ୍ତୁ) 2. **`eval()`, `new Function()`, କିମ୍ବା implied eval କେବେ ମଧ୍ୟ ବ୍ୟବହାର କରନ୍ତୁ ନାହିଁ** — ESLint ଏହାକୁ ବାଧ୍ୟତାମୂଳକ କରେ 3. **ସ୍ପଷ୍ଟ ଅପରେଟର୍ ଅନୁମୋଦନ ବିନା Husky hooksକୁ କେବେ ମଧ୍ୟ ବାଇପାସ୍ କରନ୍ତୁ ନାହିଁ** (`--no-verify`, `--no-gpg-sign`) 4. **routesରେ କେବେ ମଧ୍ୟ raw SQL ଲେଖନ୍ତୁ ନାହିଁ** — ସର୍ବଦା `src/lib/db/` ମାଧ୍ୟମରେ ଯାଆନ୍ତୁ (parameterized) 5. **Zod ସହିତ ସର୍ବଦା inputs ବୈଧୀକରଣ କରନ୍ତୁ** — `src/shared/validation/schemas.ts` 6. **upstream headersକୁ ସର୍ବଦା ପରିଷ୍କାର କରନ୍ତୁ** — `src/shared/constants/upstreamHeaders.ts`ରେ denylist 7. **ସଂରକ୍ଷିତ ଅବସ୍ଥାରେ credentials ଏନ୍କ୍ରିପ୍ଟ୍ କରନ୍ତୁ** — `src/lib/db/encryption.ts` ମାଧ୍ୟମରେ AES-256-GCM 8. **`resolvePublicCred()` ମାଧ୍ୟମରେ ସାର୍ବଜନୀନ upstream OAuth identifiers** — sourceରେ କେବେ ମଧ୍ୟ `AIza…` / `GOCSPX-…` / `…apps.googleusercontent.com` literals ଏମ୍ବେଡ୍ କରନ୍ତୁ ନାହିଁ। [`docs/security/PUBLIC_CREDS.md`](docs/security/PUBLIC_CREDS.md) ଦେଖନ୍ତୁ। 9. **`buildErrorBody()` / `sanitizeErrorMessage()` ମାଧ୍ୟମରେ error responses** — HTTP / SSE / executor / MCP response bodiesରେ କେବେ ମଧ୍ୟ raw `err.stack` / `err.message` ରଖନ୍ତୁ ନାହିଁ। [`docs/security/ERROR_SANITIZATION.md`](docs/security/ERROR_SANITIZATION.md) ଦେଖନ୍ତୁ। 10. **`env` ବିକଳ୍ପ ମାଧ୍ୟମରେ `exec()` / `spawn()` runtime values** — shellକୁ ପଠାଯାଉଥିବା scriptsରେ external paths କିମ୍ବା ଅବିଶ୍ୱସ୍ତ ମୂଲ୍ୟଗୁଡ଼ିକୁ କେବେ ମଧ୍ୟ string-interpolate କରନ୍ତୁ ନାହିଁ। ସନ୍ଦର୍ଭ: `src/mitm/cert/install.ts::updateNssDatabases`। 11. **secure-by-default ଲାଇବ୍ରେରୀଗୁଡ଼ିକୁ ପ୍ରାଧାନ୍ୟ ଦିଅନ୍ତୁ** — [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` ରେ କୌଣସି ୱର୍କଫ୍ଲୋ, କୌଣସି `package.json` ସ୍କ୍ରିପ୍ଟ ଏବଂ କୌଣସି `Makefile` ଟାର୍ଗେଟ୍ Socket.dev କୁ ଆହ୍ୱାନ କରେ ନାହିଁ। ପ୍ରକାଶିତ `omniroute` npm ଆର୍ଟିଫ୍ୟାକ୍ଟ Next.js `output: "standalone"` ବିଲ୍ଡକୁ ବଣ୍ଡଲ୍ କରେ, ଯାହାର ଅର୍ଥ ପ୍ରତ୍ୟେକ ରୁଟ୍ ହ୍ୟାଣ୍ଡଲର୍ — ଡକ୍ୟୁମେଣ୍ଟ୍ କରାଯାଇଥିବା ବିଶେଷାଧିକାରପ୍ରାପ୍ତ ବୈଶିଷ୍ଟ୍ୟଗୁଡ଼ିକ (MITM, Zed ଇମ୍ପୋର୍ଟ୍, Cloud Sync, ଏମ୍ବେଡେଡ୍ ସର୍ଭିସ୍ ସୁପରଭାଇଜର୍) ସମେତ — ଶେଷରେ `.next/server/*.js` ମିନିଫାଇଡ୍ ଚଙ୍କ୍ଗୁଡ଼ିକରେ ସାମିଲ ହୁଏ। ହ୍ୟୁରିଷ୍ଟିକ୍ ସପ୍ଲାଇ-ଚେନ୍ ସ୍କାନର୍ଗୁଡ଼ିକ ପ୍ରାୟତଃ ସେହି ଚଙ୍କ୍ଗୁଡ଼ିକୁ ମାଲୱେର୍ ସିଗ୍ନେଚର୍ଗୁଡ଼ିକ ସହିତ ପ୍ୟାଟର୍ନ-ମ୍ୟାଚ୍ କରନ୍ତି। ଆମେ ବ୍ୟବହାର କରୁଥିବା ସ୍କାନର୍ ବିନ୍ୟାସ ରିପୋ ରୁଟ୍ରେ ଥିବା [`socket.yml`](socket.yml) ରେ ରହିଛି (Socket.dev GitHub App ଫର୍ମାଟ୍ v2 — ଦେଖନ୍ତୁ )। ଏହା ସ୍ପଷ୍ଟ ଭାବରେ ବିତରଣ କରାଯାଉ ନଥିବା ଡିରେକ୍ଟୋରିଗୁଡ଼ିକୁ (`tests/`, `_tasks/`, `_references/`, `_ideia/`, `_mono_repo/`, `docs/`, ଇତ୍ୟାଦି) ବାଦ୍ ଦିଏ, ଯାହାଫଳରେ ସ୍କାନର୍ କେବଳ ପ୍ରକାଶିତ ବ୍ୟବହାରକାରୀଙ୍କ ପାଖରେ ପ୍ରକୃତରେ ପହଞ୍ଚୁଥିବା କୋଡ୍ ପଥଗୁଡ଼ିକ ବିଷୟରେ ରିପୋର୍ଟ୍ କରେ — ସ୍କାନ୍ଟି ଏହି ଫାଇଲ୍ ପଢ଼ୁଥିବା Socket GitHub App ଦ୍ୱାରା ଚାଳିତ ହୁଏ, ଏହି ରିପୋଜିଟୋରିର କୌଣସି ୱର୍କଫ୍ଲୋ ଦ୍ୱାରା ନୁହେଁ। ପ୍ରତ୍ୟେକ ଫଳାଫଳ ବର୍ଗ ପାଇଁ ଆମେ ପ୍ରତି-ଫଳାଫଳ ମେଣ୍ଟେନର୍ ପ୍ରମାଣନ ରଖୁ: - **[`docs/security/SOCKET_DEV_FINDINGS.md`](docs/security/SOCKET_DEV_FINDINGS.md)** — ପ୍ରତି-ଫଳାଫଳ ମ୍ୟାପ୍: ଉତ୍ସ ଫାଇଲ୍ ↔ ଚିହ୍ନିତ ଚଙ୍କ୍ ↔ ଆଚରଣ ↔ v3.8.6 ରେ ପ୍ରୟୋଗ କରାଯାଇଥିବା ପ୍ରଶମନ। - ପ୍ରତ୍ୟେକ ଚିହ୍ନିତ ଫଙ୍କସନ୍ରେ ଥିବା ଇନ୍-ସୋର୍ସ `SECURITY-AUDITOR-NOTE:` ବ୍ଲକ୍ଗୁଡ଼ିକ ସେହି ଡକ୍ୟୁମେଣ୍ଟକୁ ହିଁ ସୂଚିତ କରନ୍ତି। ଯେଉଁ ବ୍ୟବହାରକାରୀଙ୍କ ପାଇପଲାଇନ୍ରେ ସତର୍କତାକୁ ଶିଥିଳ କରାଯାଇପାରିବ ନାହିଁ: `OMNIROUTE_BUILD_PROFILE=minimal npm run build` ସହିତ ବିଲ୍ଡ କରନ୍ତୁ। ଏହା ଚାରୋଟି ସମ୍ବେଦନଶୀଳ ମଡ୍ୟୁଲ୍କୁ ଏପରି ଷ୍ଟବ୍ଗୁଡ଼ିକ ସହିତ ବଦଳାଇଦିଏ, ଯେଉଁଗୁଡ଼ିକ ରନ୍ଟାଇମ୍ରେ HTTP 503 `feature-disabled` ଫେରାନ୍ତି, ଫଳରେ ବିଶେଷାଧିକାରପ୍ରାପ୍ତ କୋଡ୍ ପଥଗୁଡ଼ିକ ବଣ୍ଡଲ୍ରେ ଭୌତିକ ଭାବରେ ଅନୁପସ୍ଥିତ ରହେ। ପ୍ରକାଶନ ପ୍ରଣାଳୀ ପାଇଁ [`docs/security/SOCKET_DEV_FINDINGS.md`](docs/security/SOCKET_DEV_FINDINGS.md) ଦେଖନ୍ତୁ। ## ସନ୍ଦର୍ଭଗୁଡ଼ିକ - [`docs/architecture/AUTHZ_GUIDE.md`](docs/architecture/AUTHZ_GUIDE.md) — ପ୍ରାଧିକରଣ ପାଇପ୍ଲାଇନ୍ - [`docs/security/GUARDRAILS.md`](docs/security/GUARDRAILS.md) — ଗାର୍ଡରେଲ୍ ଫ୍ରେମ୍ୱର୍କ୍ - [`docs/security/COMPLIANCE.md`](docs/security/COMPLIANCE.md) — ଅଡିଟ୍ ଲଗ୍ ଏବଂ ସଂରକ୍ଷଣ - [`docs/security/PUBLIC_CREDS.md`](docs/security/PUBLIC_CREDS.md) — ସାର୍ବଜନୀନ ଅପ୍ଷ୍ଟ୍ରିମ୍ ପ୍ରମାଣପତ୍ର ପାଇଁ **ବାଧ୍ୟତାମୂଳକ** ପ୍ୟାଟର୍ନ୍ - [`docs/security/ERROR_SANITIZATION.md`](docs/security/ERROR_SANITIZATION.md) — ତ୍ରୁଟି ପ୍ରତିକ୍ରିୟା ପାଇଁ **ବାଧ୍ୟତାମୂଳକ** ପ୍ୟାଟର୍ନ୍ - [`docs/security/SOCKET_DEV_FINDINGS.md`](docs/security/SOCKET_DEV_FINDINGS.md) — ସପ୍ଲାଇ-ଚେନ୍ ସ୍କାନର୍ ନିଷ୍କର୍ଷଗୁଡ଼ିକ ପାଇଁ ମେଣ୍ଟେନର୍ ପ୍ରମାଣନ - [`docs/architecture/RESILIENCE_GUIDE.md`](docs/architecture/RESILIENCE_GUIDE.md) — ସର୍କିଟ୍ ବ୍ରେକର୍ + କୁଲ୍ଡାଉନ୍ + ଲକ୍ଆଉଟ୍ - [`docs/security/STEALTH_GUIDE.md`](docs/security/STEALTH_GUIDE.md) — TLS ଫିଙ୍ଗରପ୍ରିଣ୍ଟିଂ (ଆଇନଗତ/ନୈତିକ ସୂଚନା) - [`CLAUDE.md`](CLAUDE.md) — AI ଏଜେଣ୍ଟ୍ଗୁଡ଼ିକ ପାଇଁ କଠୋର ନିୟମ - [tldrsec/awesome-secure-defaults](https://github.com/tldrsec/awesome-secure-defaults) — ଚୟନିତ ସୁରକ୍ଷିତ-ବାଇ-ଡିଫଲ୍ଟ୍ ଲାଇବ୍ରେରିଗୁଡ଼ିକ