# 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) · 🇳🇵 [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` branch တွင် ရေရှည်ပံ့ပိုးမှုလိုင်းကို စတင်ပေးသည် ([`ROADMAP.md`](ROADMAP.md) → "အဆင့် 3 — v3.9.0 LTS" ကို ကြည့်ပါ)။ - **`stable/v3` က လက်ခံရရှိမည့်အရာများ-** bug ပြင်ဆင်ချက်များ၊ လုံခြုံရေး patch များနှင့် provider အပ်ဒိတ်များ။ လုပ်ဆောင်ချက်အသစ်များကို v4 channel သို့ ထည့်သွင်းမည်ဖြစ်ပြီး၊ LTS လိုင်းသည် တည်ငြိမ်မှုကို ဦးစားပေးသည်။ `npm install omniroute` (`latest` dist-tag) သည် v4 cycle တစ်လျှောက်လုံး v3 ပေါ်တွင် ဆက်ရှိနေမည်။ - **ကာလကြာမြင့်ချိန်-** ``။ v4.0 GA ပြီးနောက် (`latest` က v4 သို့ ပြောင်းသည့်အချိန်) ပံ့ပိုးမှုကာလ၏ အရှည်ကို **မဆုံးဖြတ်ရသေးပါ**။ ထိန်းသိမ်းသူက ကြေညာသည့်အခါ ဤကဏ္ဍကို အပ်ဒိတ်လုပ်မည်။ ထိုအချိန်မတိုင်မီ အဆုံးသတ်ရက်ကို မယူဆပါနှင့်။ - **LTS လိုင်းတွင် အားနည်းချက်တစ်ခုကို အစီရင်ခံခြင်း-** အခြားမည်သည့်ဗားရှင်းနှင့်မဆို တူညီသော channel ကို အသုံးပြုပါ — သီးသန့် [GitHub Security Advisory](https://github.com/diegosouzapw/OmniRoute/security/advisories/new) ကို အသုံးပြုပြီး၊ အများမြင်နိုင်သော issue ကို မည်သည့်အခါမျှ မဖွင့်ပါနှင့်။ သင်စမ်းသပ်ခဲ့သည့် ဗားရှင်းကို ဖော်ပြပါ (ဥပမာ `3.9.2`)။ ပြင်ဆင်ချက်များကို `stable/v3` တွင် ထည့်သွင်းပြီး v4 သို့ forward-port လုပ်မည်။ - **LTS ခွဲထုတ်ချိန်ရှိ လုံခြုံရေးအခြေခံစံ-** တိုင်းတာထားသော scanner အခြေအနေ၊ route-guard နှင့် အများသုံး credential အထောက်အထားများကို [`docs/security/LTS_SECURITY_BASELINE.md`](docs/security/LTS_SECURITY_BASELINE.md) တွင် မှတ်တမ်းတင်ထားသည်။ --- ## လုံခြုံရေး ဗိသုကာ OmniRoute သည် အလွှာစုံ လုံခြုံရေးမော်ဒယ်ကို အကောင်အထည်ဖော်ထားသည်- ``` တောင်းဆိုမှု → CORS → Authz pipeline (အမျိုးအစားခွဲခြင်း → မူဝါဒများ → ကျင့်သုံးခြင်း) → ကာကွယ်ရေးစည်းမျဉ်းများ (PII ဖုံးကွယ်စနစ်၊ prompt injection၊ vision bridge) → နှုန်းကန့်သတ်စနစ် → Circuit Breaker → Cooldown → Model Lockout → Provider ``` ### 🔐 စစ်မှန်ကြောင်းအတည်ပြုခြင်းနှင့် ခွင့်ပြုချက်ပေးခြင်း | လုပ်ဆောင်ချက် | အကောင်အထည်ဖော်ပုံ | | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Dashboard အကောင့်ဝင်ခြင်း** | JWT token များ (HttpOnly cookie များ) ပါသော password အခြေပြု စစ်မှန်ကြောင်းအတည်ပြုမှု | | **API Key စစ်မှန်ကြောင်းအတည်ပြုမှု** | CRC စစ်ဆေးမှုပါဝင်သော HMAC ဖြင့် လက်မှတ်ထိုးထားသည့် key များ | | **OAuth 2.0 + PKCE** | Provider အလိုက် browser/device OAuth သည် ပံ့ပိုးသည့်နေရာတွင် PKCE ကို အသုံးပြုသည်။ import-only Devin credential များကို သီးခြားကိုင်တွယ်သည်။ | | **Token ပြန်လည်ဆန်းသစ်ခြင်း** | သက်တမ်းမကုန်မီ OAuth token ကို အလိုအလျောက် ပြန်လည်ဆန်းသစ်ခြင်း | | **လုံခြုံသော Cookie များ** | HTTPS environment များအတွက် `AUTH_COOKIE_SECURE=true` | | **Authz Pipeline** | Route အမျိုးအစားခွဲခြင်း (PUBLIC / CLIENT_API / MANAGEMENT) — `docs/architecture/AUTHZ_GUIDE.md` ကို ကြည့်ပါ | | **Route Guard အဆင့်များ** | စီမံခန့်ခွဲမှု route များအတွက် 3 အဆင့် မော်ဒယ် (LOCAL_ONLY / ALWAYS_PROTECTED / MANAGEMENT) — `docs/security/ROUTE_GUARD_TIERS.md` ကို ကြည့်ပါ | | **Manage-Scope MCP** | Remote `/api/mcp/*` ဝင်ရောက်မှုကို `manage` scope ပါသော API key များဖြင့် ထိန်းချုပ်ထားသည်။ `/api/cli-tools/runtime/*` သည် strict-loopback အဖြစ် ဆက်ရှိနေသည်။ ROUTE_GUARD_TIERS ကို ကြည့်ပါ | | **MCP Scope များ** | အသေးစိတ်ခွဲခြားထားသော scope 32 ခု (read:health, write:combos, execute:completions စသည်) — `docs/frameworks/MCP-SERVER.md` ကို ကြည့်ပါ | ### 🛡️ သိမ်းဆည်းထားစဉ် ကုဒ်ဝှက်ခြင်း SQLite တွင် သိမ်းဆည်းထားသည့် ထိခိုက်လွယ်သော ဒေတာအားလုံးကို scrypt key derivation ပါသော **AES-256-GCM** ဖြင့် ကုဒ်ဝှက်ထားသည်- - API key များ၊ access token များ၊ refresh token များနှင့် ID token များ - ဗားရှင်းသတ်မှတ်ထားသော ဖော်မတ်- `enc:v1:::` - `STORAGE_ENCRYPTION_KEY` ကို မသတ်မှတ်ထားပါက passthrough mode (စာသားအတိုင်း) ```bash # ကုဒ်ဝှက်ခြင်း key ကို ထုတ်လုပ်ရန်- STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32) ``` ### 🛡️ ကာကွယ်ရေးစည်းမျဉ်း Framework OmniRoute တွင် ဦးစားပေးအစီအစဉ်အလိုက် စီထားသော ထည့်သွင်းပြီး ကာကွယ်ရေးစည်းမျဉ်း 3 ခုပါဝင်သည့် hot-reload လုပ်နိုင်သော **guardrails registry** (`src/lib/guardrails/`) ပါရှိသည်- | ကာကွယ်ရေးစည်းမျဉ်း | ဦးစားပေးအဆင့် | ရည်ရွယ်ချက် | | ------------------ | ------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `vision-bridge` | 5 | ပုံများကို သိရှိနားလည်သော ဖော်ပြချက်များဖြင့် vision မပါသည့် model များကို ချိတ်ဆက်ပေးပြီး၊ ပုံ URL များအတွက် SSRF ကာကွယ်မှု ပေးသည် | | `pii-masker` | 10 | ခေါ်ဆိုမှုမတိုင်မီနှင့် ပြီးနောက် PII ဖယ်ရှားဖုံးကွယ်ခြင်း (အီးမေးလ်များ၊ ဖုန်း၊ CPF၊ CNPJ၊ credit card များ၊ SSN) | | `prompt-injection` | 20 | override/role-hijack/jailbreak/leak ပုံစံများကို ရှာဖွေသိရှိသည် | စိတ်ကြိုက် ကာကွယ်ရေးစည်းမျဉ်းများကို `registerGuardrail(new MyGuardrail())` မှတစ်ဆင့် မှတ်ပုံတင်နိုင်သည်။ မော်ဒယ်သည် fail-open ဖြစ်သည် (exception များက traffic ကို မည်သည့်အခါမျှ ပိတ်ဆို့မည်မဟုတ်ပါ)။ Request တစ်ခုချင်းအလိုက် ဖယ်ထုတ်ရန် `x-omniroute-disabled-guardrails` header ကို အသုံးပြုပါ။ → [`docs/security/GUARDRAILS.md`](docs/security/GUARDRAILS.md) ကို ကြည့်ပါ။ ### 🧠 Prompt Injection ကာကွယ်ရေးစနစ် LLM တောင်းဆိုမှုများအတွင်းရှိ prompt injection ပုံစံများကို အကောင်းဆုံးကြိုးပမ်းမှု heuristic နည်းလမ်းဖြင့် ရှာဖွေသည့် middleware ဖြစ်သည်။ **ပြီးပြည့်စုံသော prompt-injection firewall မဟုတ်ပါ** — false positive များ (အန္တရာယ်မရှိသော persona/RPG prompt များ) နှင့် false negative များ (leetspeak၊ spacing နှင့် အင်္ဂလိပ်မဟုတ်သော ပုံစံများ) ဖြစ်ပေါ်နိုင်သည်။ | ပုံစံအမျိုးအစား | ပြင်းထန်မှု | ဥပမာ | | ------------------------------- | ----------- | --------------------------------------------------------------------------- | | စနစ်ညွှန်ကြားချက် အစားထိုးခြင်း | မြင့် | "ယခင်ညွှန်ကြားချက်အားလုံးကို လျစ်လျူရှုပါ" | | အခန်းကဏ္ဍ အပိုင်စီးခြင်း | အလယ်အလတ် | "ယခု သင်သည် DAN ဖြစ်ပြီး မည်သည့်အရာကိုမဆို လုပ်နိုင်သည်" | | အကန့်အသတ်သင်္ကေတ ထိုးသွင်းခြင်း | မြင့် | context နယ်နိမိတ်များကို ချိုးဖောက်ရန် encode လုပ်ထားသော ခွဲခြားသင်္ကေတများ | | DAN/Jailbreak | အလယ်အလတ် | လူသိများသော jailbreak prompt ပုံစံများ | | ညွှန်ကြားချက် ပေါက်ကြားခြင်း | မြင့် | "သင့် system prompt ကို ပြပါ" | | Encoding ဖြင့် ရှောင်လွှဲခြင်း | အလယ်အလတ် | base64/rot13/hex decode + ညွှန်ကြားချက်ဆိုင်ရာ keyword များ | `block` mode တွင် **မြင့်** ပြင်းထန်မှုရှိသော ရှာဖွေတွေ့ရှိချက်များကိုသာ ပိတ်ဆို့သည်။ အလယ်အလတ်ပြင်းထန်မှုရှိသော အုပ်စုများကို မှတ်တမ်းတင်သော်လည်း `sanitizeRequest` က မည်သည့်အခါမျှ ပိတ်ဆို့မည်မဟုတ်ပါ။ dashboard (Settings → Security) သို့မဟုတ် `.env` မှတစ်ဆင့် စီစဉ်သတ်မှတ်ပါ- ```env INPUT_SANITIZER_ENABLED=true INPUT_SANITIZER_MODE=block # warn | block (injection မူဝါဒ၊ ယခင် "redact" သည် injection စာသားကို ဖယ်ရှားခြင်းမပြုပါ) INPUT_SANITIZER_BLOCK_THRESHOLD=high # high (မူလသတ်မှတ်ချက်) | medium | low — ဤအဆင့်နှင့်အထက် ပြင်းထန်မှုများကို block mode တွင် ပိတ်ဆို့သည် ``` ### 🔒 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 # ရွေးချယ်နိုင်သည်- client များထံ ပြန်ပေးသည့် provider တုံ့ပြန်ချက်များရှိ PII ကို ဖုံးကွယ်သည် ``` ### 🌐 ကွန်ရက်လုံခြုံရေး | လုပ်ဆောင်ချက် | ဖော်ပြချက် | | ------------------------- | ------------------------------------------------------------------------------------------ | | **CORS** | တိကျစွာသတ်မှတ်ထားသော cross-origin allowlist (`CORS_ALLOWED_ORIGINS`; ယခင် `CORS_ORIGIN`) | | **IP စစ်ထုတ်ခြင်း** | dashboard ရှိ allowlist/blocklist IP အပိုင်းအခြားများ | | **နှုန်းထားကန့်သတ်ခြင်း** | အလိုအလျောက် backoff ပါဝင်သော provider တစ်ခုချင်းစီအလိုက် နှုန်းထားကန့်သတ်ချက်များ | | **Anti-Thundering Herd** | Mutex + ချိတ်ဆက်မှုတစ်ခုချင်းစီအလိုက် locking က ဆက်တိုက်ဖြစ်ပေါ်သော 502 များကို ကာကွယ်သည် | | **TLS Fingerprint** | bot အဖြစ်ရှာဖွေတွေ့ရှိမှုကို လျှော့ချရန် browser ပုံစံ TLS fingerprint အယောင်ဆောင်ခြင်း | | **CLI Fingerprint** | မူရင်း CLI signature များနှင့် ကိုက်ညီရန် provider တစ်ခုချင်းစီအလိုက် header/body စီစဉ်မှု | ### 🔌 ခံနိုင်ရည်နှင့် ရရှိနိုင်မှု | လုပ်ဆောင်ချက် | ဖော်ပြချက် | | --------------------------------- | --------------------------------------------------------------------------------------------------- | | **Circuit Breaker** | provider တစ်ခုချင်းစီအတွက် 3-state (Closed → Open → Half-Open)၊ SQLite တွင် အမြဲတမ်းသိမ်းဆည်းထားသည် | | **တောင်းဆိုမှု ထပ်တူပြုနိုင်မှု** | ထပ်နေသော တောင်းဆိုမှုများအတွက် 5 စက္ကန့်ကြာ dedup window | | **Exponential Backoff** | နှောင့်နှေးချိန် တဖြည်းဖြည်းတိုးလာသော အလိုအလျောက် ပြန်လည်ကြိုးစားမှု | | **ကျန်းမာရေး Dashboard** | provider များ၏ ကျန်းမာရေးအခြေအနေကို အချိန်နှင့်တစ်ပြေးညီ စောင့်ကြည့်ခြင်း | ### 📋 စည်းမျဉ်းလိုက်နာမှု | လုပ်ဆောင်ချက် | ဖော်ပြချက် | | ------------------------------- | ------------------------------------------------------------------------------------ | | **မှတ်တမ်း ထိန်းသိမ်းကာလ** | `CALL_LOG_RETENTION_DAYS` ပြီးနောက် အလိုအလျောက် ရှင်းလင်းခြင်း | | **မှတ်တမ်းမတင်ရန် ရွေးချယ်မှု** | API key တစ်ခုချင်းစီအလိုက် `noLog` flag က တောင်းဆိုမှုမှတ်တမ်းတင်ခြင်းကို ပိတ်ထားသည် | | **စာရင်းစစ်မှတ်တမ်း** | စီမံခန့်ခွဲရေး လုပ်ဆောင်ချက်များကို `audit_log` table တွင် ခြေရာခံထားသည် | | **MCP စာရင်းစစ်ခြင်း** | MCP tool call အားလုံးအတွက် SQLite အခြေပြု စာရင်းစစ်မှတ်တမ်းတင်ခြင်း | | **Zod အတည်ပြုခြင်း** | API input အားလုံးကို module load လုပ်ချိန်တွင် Zod v4 schema များဖြင့် အတည်ပြုသည် | --- ## လိုအပ်သော ပတ်ဝန်းကျင် Variable များ ဆာဗာကို မစတင်မီ လျှို့ဝှက်တန်ဖိုးအားလုံးကို သတ်မှတ်ထားရမည်။ ၎င်းတို့ မရှိလျှင် သို့မဟုတ် လုံခြုံမှုအားနည်းလျှင် ဆာဗာသည် **ချက်ချင်း ရပ်တန့်မည်**။ ```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 လုံခြုံရေး - Production တွင် root မဟုတ်သော user ကို အသုံးပြုပါ - လျှို့ဝှက်တန်ဖိုးများကို read-only volume များအဖြစ် mount လုပ်ပါ - `.env` ဖိုင်များကို Docker image များထဲသို့ မည်သည့်အခါမျှ copy မလုပ်ပါနှင့် - အရေးကြီးသောဖိုင်များကို ဖယ်ထုတ်ရန် `.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 ``` --- ## Dependency များ - `npm audit` ကို ပုံမှန် run ပါ (`npm run audit:deps` သည် main + electron ကို လွှမ်းခြုံသည်) - Dependency များကို အမြဲ update လုပ်ထားပါ - Project သည် commit မလုပ်မီ စစ်ဆေးမှုများအတွက် `husky` + `lint-staged` ကို အသုံးပြုသည် (lint-staged + check-docs-sync + check:any-budget:t11) - CI pipeline သည် push တိုင်းတွင် ESLint လုံခြုံရေးစည်းမျဉ်းများကို run သည် (`no-eval`, `no-implied-eval`, `no-new-func` = error) - Provider constant များကို module load လုပ်ချိန်၌ Zod မှတစ်ဆင့် စစ်ဆေးအတည်ပြုသည် (`src/shared/validation/schemas.ts`) - ပုံမှန်အခြေအနေကတည်းက လုံခြုံသော library များကို အသုံးပြုထားသည်- `dompurify` / `isomorphic-dompurify` (XSS), `jose` (JWT), `better-sqlite3` (parameterized query များကြောင့် SQLi အန္တရာယ်မရှိ), `bcryptjs` (စကားဝှက် hash ပြုလုပ်ခြင်း) ## တင်းကျပ်သော လုံခြုံရေးစည်းမျဉ်းများ ဤစည်းမျဉ်းများကို tooling နှင့် reviewer များက မဖြစ်မနေ လိုက်နာစေသည်- 1. **လျှို့ဝှက်တန်ဖိုးများကို မည်သည့်အခါမျှ commit မလုပ်ပါနှင့်** — `.env` ကို gitignore လုပ်ထားသည်။ `.env.example` သည် template ဖြစ်သည် (literal များမပါ၊ comment များသာပါသည် — အောက်ပါ PUBLIC_CREDS.md ကို ကြည့်ပါ) 2. **`eval()`, `new Function()` သို့မဟုတ် implied eval ကို မည်သည့်အခါမျှ မသုံးပါနှင့်** — ESLint က မဖြစ်မနေ လိုက်နာစေသည် 3. တာဝန်ရှိ operator ၏ ရှင်းလင်းသော ခွင့်ပြုချက်မရှိဘဲ **Husky hook များကို မည်သည့်အခါမျှ ကျော်မသွားပါနှင့်** (`--no-verify`, `--no-gpg-sign`) 4. **Route များတွင် raw SQL ကို မည်သည့်အခါမျှ မရေးပါနှင့်** — `src/lib/db/` (parameterized) မှတစ်ဆင့်သာ အမြဲလုပ်ဆောင်ပါ 5. **Input များကို Zod ဖြင့် အမြဲစစ်ဆေးအတည်ပြုပါ** — `src/shared/validation/schemas.ts` 6. **Upstream header များကို အမြဲ သန့်စင်ပါ** — denylist ကို `src/shared/constants/upstreamHeaders.ts` တွင် ထားရှိသည် 7. **သိမ်းဆည်းထားသော credential များကို ကုဒ်ဝှက်ပါ** — `src/lib/db/encryption.ts` မှတစ်ဆင့် AES-256-GCM ကို အသုံးပြုပါ 8. **အများသုံး upstream OAuth identifier များအတွက် `resolvePublicCred()` ကို အသုံးပြုပါ** — `AIza…` / `GOCSPX-…` / `…apps.googleusercontent.com` literal များကို source ထဲတွင် မည်သည့်အခါမျှ ထည့်သွင်းမထားပါနှင့်။ [`docs/security/PUBLIC_CREDS.md`](docs/security/PUBLIC_CREDS.md) ကို ကြည့်ပါ။ 9. **Error response များကို `buildErrorBody()` / `sanitizeErrorMessage()` မှတစ်ဆင့် ပေးပို့ပါ** — raw `err.stack` / `err.message` ကို HTTP / SSE / executor / MCP response body များတွင် မည်သည့်အခါမျှ မထည့်ပါနှင့်။ [`docs/security/ERROR_SANITIZATION.md`](docs/security/ERROR_SANITIZATION.md) ကို ကြည့်ပါ။ 10. **`exec()` / `spawn()` runtime တန်ဖိုးများကို `env` option မှတစ်ဆင့် ပေးပါ** — ပြင်ပ path များ သို့မဟုတ် ယုံကြည်စိတ်ချရမှုမရှိသော တန်ဖိုးများကို shell မှတစ်ဆင့် ပေးပို့သော script များထဲသို့ string interpolation ဖြင့် မည်သည့်အခါမျှ မထည့်ပါနှင့်။ ကိုးကားရန်- `src/mitm/cert/install.ts::updateNssDatabases`။ 11. **ပုံမှန်အခြေအနေကတည်းက လုံခြုံသော library များကို ဦးစားပေးပါ** — [tldrsec/awesome-secure-defaults](https://github.com/tldrsec/awesome-secure-defaults) (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink) ကို ကြည့်ပါ။ ကိုယ်တိုင် ဖန်တီးမည့်အစား ၎င်းတို့ကို ဦးစွာ ရွေးချယ်အသုံးပြုပါ။ ## Supply-chain စကင်နာ တွေ့ရှိချက်များ (Socket.dev / Snyk / အလားတူ) > **စစ်ဆေးမှုနယ်ပယ် မှတ်ချက်:** Repository root ရှိ `socket.yml` သည် ထုတ်ဝေထားသော npm artifact ကို Socket.dev ၏ registry ဘက်မှ ထုတ်ဝေပြီးနောက် စကင်ဖတ်ရာတွင် `projectIgnorePaths` ကိုသာ သတ်မှတ်ပေးသည် — ၎င်းသည် မဖြစ်မနေလိုက်နာရသော CI/PR merge gate မဟုတ်ပါ။ `.github/workflows` ရှိ မည်သည့် workflow ကမျှ၊ `package.json` script ကမျှ၊ `Makefile` target ကမျှ Socket.dev ကို ခေါ်ယူအသုံးမပြုပါ။ ထုတ်ဝေထားသော `omniroute` npm artifact တွင် Next.js `output: "standalone"` build ကို ထည့်သွင်းထားသည်။ ဆိုလိုသည်မှာ မှတ်တမ်းပြုထားသော အထူးအခွင့်အရေးလိုအပ်သည့် လုပ်ဆောင်ချက်များ (MITM၊ Zed import၊ Cloud Sync၊ ထည့်သွင်းပါဝင်သော service supervisor) အပါအဝင် route handler တိုင်းသည် `.next/server/*.js` minified chunk များထဲသို့ ရောက်ရှိသွားသည်။ Heuristic supply-chain စကင်နာများသည် အဆိုပါ chunk များကို malware signature များနှင့် မကြာခဏ pattern-match လုပ်ကြသည်။ ကျွန်ုပ်တို့အသုံးပြုသော စကင်နာ configuration သည် repo root ရှိ [`socket.yml`](socket.yml) တွင် ရှိသည် (Socket.dev GitHub App format v2 — ကို ကြည့်ပါ)။ ၎င်းသည် ဖြန့်ချိထားခြင်းမရှိသော directory များ (`tests/`, `_tasks/`, `_references/`, `_ideia/`, `_mono_repo/`, `docs/` စသည်တို့) ကို ရှင်းလင်းစွာ ဖယ်ထုတ်ထားသဖြင့် စကင်နာသည် ထုတ်ဝေထားသော package ကို အသုံးပြုသူများထံ အမှန်တကယ်ရောက်ရှိသည့် code path များကိုသာ အစီရင်ခံသည် — စကင်ဖတ်ခြင်းကို ဤ repository ရှိ workflow တစ်ခုက လုပ်ဆောင်ခြင်းမဟုတ်ဘဲ အဆိုပါဖိုင်ကို ဖတ်ရှုသည့် Socket GitHub App က လုပ်ဆောင်သည်။ တွေ့ရှိချက် အမျိုးအစားတစ်ခုစီအတွက် တွေ့ရှိချက်အလိုက် maintainer အတည်ပြုချက်ကို ထိန်းသိမ်းထားသည်- - **[`docs/security/SOCKET_DEV_FINDINGS.md`](docs/security/SOCKET_DEV_FINDINGS.md)** — တွေ့ရှိချက်အလိုက် မြေပုံ- source file ↔ အမှတ်အသားပြုခံရသော chunk ↔ လုပ်ဆောင်ပုံ ↔ v3.8.6 တွင် အသုံးပြုထားသော လျော့ပါးကာကွယ်မှု။ - အမှတ်အသားပြုခံရသော function တစ်ခုစီရှိ 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) — ခွင့်ပြုချက်စစ်ဆေးသည့် pipeline - [`docs/security/GUARDRAILS.md`](docs/security/GUARDRAILS.md) — guardrails framework - [`docs/security/COMPLIANCE.md`](docs/security/COMPLIANCE.md) — audit log နှင့် ထိန်းသိမ်းထားမှု - [`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) — supply-chain စကင်နာ တွေ့ရှိချက်များအတွက် maintainer အတည်ပြုချက် - [`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) — လုံခြုံမှုကို မူလအတိုင်း ဦးစားပေးထားသည့် စိစစ်ရွေးချယ်ထားသော library များ