Files
OmniRoute/docs/i18n/ne/SECURITY.md
Diego Rodrigues de Sa e Souza 58f88a83e4 feat(i18n): 7 new locales — Hausa, Yoruba, Igbo, Amharic, Uzbek, Georgian, Armenian (66 locales) (#13727)
Batch 3 (last) of the locale-expansion plan: ha, yo, ig, am, uz, ka, hy on every surface — dashboard catalog, docs mirror (22-file core + llm.txt + CHANGELOG), CLI catalog, README flag block, locale tables and 🌐 language bars. Also closes the key gap the batch-1 (43 keys) and batch-2 (10 keys) catalogs carried since their base merges, fixes the Igbo "Model" copy and allowlists the Uzbek cognate. Translation-ratio baseline covers 65 locales.

⚠️ base-red inherited: #12732
2026-09-15 09:50:01 -03:00

31 KiB

Security Policy (नेपाली)

🌐 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 · 🇲🇹 mt · 🇲🇲 my · 🇳🇱 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


सुरक्षा कमजोरीहरूको रिपोर्टिङ

यदि तपाईंले OmniRoute मा कुनै सुरक्षा कमजोरी पत्ता लगाउनुभयो भने, कृपया जिम्मेवार रूपमा रिपोर्ट गर्नुहोस्:

  1. सार्वजनिक GitHub issue नखोल्नुहोस्
  2. GitHub Security Advisories प्रयोग गर्नुहोस्
  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 मा भण्डारण गरिएका सबै संवेदनशील डेटा AES-256-GCM प्रयोग गरी scrypt कुञ्जी व्युत्पत्तिसहित इन्क्रिप्ट गरिन्छ:

  • API कुञ्जीहरू, पहुँच टोकनहरू, रिफ्रेस टोकनहरू, र ID टोकनहरू
  • संस्करणयुक्त ढाँचा: enc:v1:<iv>:<ciphertext>:<authTag>
  • STORAGE_ENCRYPTION_KEY सेट नगरिएको अवस्थामा पासथ्रु मोड (प्लेनटेक्स्ट)
# इन्क्रिप्सन कुञ्जी उत्पन्न गर्नुहोस्:
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 हेर्नुहोस्।

🧠 प्रम्प्ट इन्जेक्सन गार्ड

LLM अनुरोधहरूमा प्रम्प्ट इन्जेक्सनका ढाँचाहरू पत्ता लगाउने सर्वोत्तम-प्रयास ह्युरिस्टिक मिडलवेयर। यो पूर्ण प्रम्प्ट-इन्जेक्सन फायरवाल होइन — यसले गलत सकारात्मक (हानिरहित पर्सोना/RPG प्रम्प्टहरू) र गलत नकारात्मक (leetspeak, स्पेसिङ, गैर-अङ्ग्रेजी ढाँचाहरू) परिणाम दिन सक्छ।

ढाँचाको प्रकार गम्भीरता उदाहरण
प्रणाली ओभरराइड उच्च "पहिलेका सबै निर्देशनहरू बेवास्ता गर्नुहोस्"
भूमिका अपहरण मध्यम "अब तपाईं DAN हुनुहुन्छ, तपाईं जे पनि गर्न सक्नुहुन्छ"
डेलिमिटर इन्जेक्सन उच्च सन्दर्भ सीमाहरू तोड्न इन्कोड गरिएका विभाजकहरू
DAN/जेलब्रेक मध्यम ज्ञात जेलब्रेक प्रम्प्ट ढाँचाहरू
निर्देशन चुहावट उच्च "मलाई तपाईंको प्रणाली प्रम्प्ट देखाउनुहोस्"
इन्कोडिङ छल मध्यम base64/rot13/hex डिकोड + निर्देशन कुञ्जीशब्दहरू

block मोडमा केवल उच्च गम्भीरताका पहिचानहरू अवरुद्ध गरिन्छन्। मध्यम-गम्भीरताका समूहहरू लग गरिन्छन् तर sanitizeRequest द्वारा कहिल्यै अवरुद्ध गरिँदैनन्।

ड्यासबोर्ड (Settings → Security) वा .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]
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-अवस्था (बन्द → खुला → आधा-खुला), SQLite मा सुरक्षित
अनुरोध आइडेम्पोटेन्सी दोहोरिएका अनुरोधहरूका लागि 5-सेकेन्डको डिडुप विन्डो
एक्सपोनेन्सियल ब्याकअफ बढ्दो ढिलाइसहित स्वचालित पुनःप्रयास
स्वास्थ्य ड्यासबोर्ड प्रदायकको स्वास्थ्यको वास्तविक-समय अनुगमन

📋 अनुपालन

सुविधा विवरण
लग अवधारण CALL_LOG_RETENTION_DAYS पछि स्वचालित सफाइ
लग नराख्ने विकल्प प्रति API कुञ्जी noLog फ्ल्यागले अनुरोध लगिङ निष्क्रिय गर्छ
अडिट लग प्रशासनिक कार्यहरू audit_log तालिकामा ट्र्याक गरिन्छन्
MCP अडिट सबै MCP उपकरण कलहरूका लागि SQLite-समर्थित अडिट लगिङ
Zod प्रमाणीकरण सबै API इनपुटहरू मोड्युल लोड हुँदा Zod v4 स्किमाहरूद्वारा प्रमाणित

आवश्यक वातावरण चरहरू

सर्भर सुरु गर्नुअघि सबै गोप्य मानहरू सेट गरिनुपर्छ। तिनीहरू नभएमा वा कमजोर भएमा सर्भर तुरुन्तै विफल हुनेछ

# आवश्यक — यीबिना सर्भर सुरु हुनेछैन:
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 सुरक्षा

  • उत्पादनमा गैर-root प्रयोगकर्ता प्रयोग गर्नुहोस्
  • गोप्य मानहरूलाई पढ्न-मात्र मिल्ने भोल्युमका रूपमा माउन्ट गर्नुहोस्
  • .env फाइलहरू कहिल्यै Docker इमेजहरूमा प्रतिलिपि नगर्नुहोस्
  • संवेदनशील फाइलहरू हटाउन .dockerignore प्रयोग गर्नुहोस्
  • HTTPS पछाडि हुँदा AUTH_COOKIE_SECURE=true सेट गर्नुहोस्
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)
  • CI पाइपलाइनले प्रत्येक push मा 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. routes मा raw SQL कहिल्यै नलेख्नुहोस् — सधैं src/lib/db/ मार्फत जानुहोस् (प्यारामिटरयुक्त)
  5. इनपुटहरूलाई सधैं Zod मार्फत प्रमाणीकरण गर्नुहोस्src/shared/validation/schemas.ts
  6. upstream headers लाई सधैं सफा गर्नुहोस्src/shared/constants/upstreamHeaders.ts मा denylist छ
  7. भण्डारण अवस्थामा प्रमाणपत्रहरू इन्क्रिप्ट गर्नुहोस्src/lib/db/encryption.ts मार्फत AES-256-GCM
  8. resolvePublicCred() मार्फत सार्वजनिक upstream OAuth पहिचानकर्ताहरू प्रयोग गर्नुहोस् — स्रोतमा AIza… / GOCSPX-… / …apps.googleusercontent.com स्थिर मानहरू कहिल्यै नराख्नुहोस्। docs/security/PUBLIC_CREDS.md हेर्नुहोस्।
  9. त्रुटि प्रतिक्रियाहरू buildErrorBody() / sanitizeErrorMessage() मार्फत पठाउनुहोस् — raw err.stack / err.message लाई HTTP / SSE / executor / MCP प्रतिक्रिया body हरूमा कहिल्यै नराख्नुहोस्। docs/security/ERROR_SANITIZATION.md हेर्नुहोस्।
  10. exec() / spawn() का runtime मानहरू env विकल्पमार्फत दिनुहोस् — बाह्य path वा अविश्वसनीय मानहरूलाई shell मार्फत पठाइएका script हरूमा कहिल्यै string-interpolate नगर्नुहोस्। सन्दर्भ: src/mitm/cert/install.ts::updateNssDatabases
  11. पूर्वनिर्धारित रूपमै सुरक्षित पुस्तकालयहरूलाई प्राथमिकता दिनुहोस्tldrsec/awesome-secure-defaults हेर्नुहोस् (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink)। आफ्नै समाधान बनाउनुअघि तिनीहरू प्रयोग गर्ने प्रयास गर्नुहोस्।

आपूर्ति-शृङ्खला स्क्यानरका निष्कर्षहरू (Socket.dev / Snyk / समान)

प्रकाशित omniroute npm आर्टिफ्याक्टले Next.js को output: "standalone" बिल्ड बन्डल गर्छ, जसको अर्थ दस्तावेजीकरण गरिएका विशेषाधिकारयुक्त सुविधाहरू (MITM, Zed आयात, Cloud Sync, इम्बेडेड सेवा सुपरभाइजर) सहित प्रत्येक रुट ह्यान्डलर .next/server/*.js का मिनिफाइड चङ्कहरूमा समावेश हुन्छ। ह्युरिस्टिक आपूर्ति-शृङ्खला स्क्यानरहरूले ती चङ्कहरूलाई प्रायः मालवेयर सिग्नेचरसँग ढाँचा-मिलान गर्छन्।

हामीले प्रयोग गर्ने स्क्यानर कन्फिगरेसन रिपोजिटरीको मूलमा रहेको socket.yml मा छ (Socket.dev GitHub App ढाँचा v2 — हेर्नुहोस् https://docs.socket.dev/docs/socket-yml)। यसले वितरण नगरिने डाइरेक्टरीहरू (tests/, _tasks/, _references/, _ideia/, _mono_repo/, docs/, आदि) स्पष्ट रूपमा बहिष्कृत गर्छ, ताकि स्क्यानरले वास्तवमै प्रकाशित प्रयोगकर्ताहरूसम्म पुग्ने कोड पथहरूबारे मात्र रिपोर्ट गरोस् — स्क्यान स्वयं यस रिपोजिटरीको कुनै कार्यप्रवाहद्वारा होइन, उक्त फाइल पढ्ने Socket GitHub App द्वारा सञ्चालन हुन्छ।

प्रत्येक निष्कर्ष श्रेणीका लागि हामी प्रति-निष्कर्ष मर्मतकर्ता प्रमाणीकरण कायम राख्छौँ:

  • 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 हेर्नुहोस्।

सन्दर्भहरू