# 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) · 🇮🇳 [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) · 🇸🇰 [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 ගැටලුවක් **විවෘත නොකරන්න** 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) → "අදියර 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) එකක්, කිසිවිටෙක පොදු ගැටලුවක් නොවේ. ඔබ පරීක්ෂා කළ අනුවාදය සඳහන් කරන්න (උදාහරණයක් ලෙස `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` බලන්න | | **Manage-Scope MCP** | දුරස්ථ `/api/mcp/*` ප්රවේශය `manage` විෂය පථය සහිත API යතුරු මඟින් සීමා කර ඇත; `/api/cli-tools/runtime/*` දැඩි-loopback ලෙස පවතී. 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` සකසා නොමැති විට Passthrough ප්රකාරය (සරල පෙළ) ```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 | අභිබවා යාම/භූමිකා-පැහැරගැනීම/jailbreak/කාන්දු වීමේ රටා හඳුනා ගනී | අභිරුචි ආරක්ෂණ සීමා `registerGuardrail(new MyGuardrail())` හරහා ලියාපදිංචි වේ. ආකෘතිය fail-open වේ (ව්යතිරේක කිසිවිටෙක ගමනාගමනය අවහිර නොකරයි). එක් එක් ඉල්ලීම සඳහා `x-omniroute-disabled-guardrails` ශීර්ෂකය හරහා ඉවත් විය හැක. → [`docs/security/GUARDRAILS.md`](docs/security/GUARDRAILS.md) බලන්න. ### 🧠 ප්රේරක එන්නත් ආරක්ෂකය LLM ඉල්ලීම්වල prompt injection රටා හඳුනාගන්නා, හැකි උපරිමයෙන් ක්රියා කරන heuristic middleware එකකි. **මෙය සම්පූර්ණ prompt-injection firewall එකක් නොවේ** — වැරදි ධනාත්මක ප්රතිඵල (හානිකර නොවන persona/RPG prompts) සහ වැරදි ඍණාත්මක ප්රතිඵල (leetspeak, පරතර යෙදීම, ඉංග්රීසි නොවන රටා) ඇති විය හැක. | රටා වර්ගය | බරපතළභාවය | උදාහරණය | | -------------------- | --------- | ----------------------------------------- | | පද්ධති අභිබවා යාම | ඉහළ | "පෙර පැවති සියලු උපදෙස් නොසලකා හරින්න" | | භූමිකාව පැහැර ගැනීම | මධ්යම | "ඔබ දැන් DAN ය, ඔබට ඕනෑම දෙයක් කළ හැක" | | සීමාකාරක ඇතුළු කිරීම | ඉහළ | සන්දර්භ සීමා බිඳ දැමීමට කේතනය කළ වෙන්කාරක | | DAN/Jailbreak | මධ්යම | දන්නා jailbreak prompt රටා | | උපදෙස් හෙළිදරව්ව | ඉහළ | "ඔබේ system prompt එක මට පෙන්වන්න" | | කේතන මඟහැරීම | මධ්යම | base64/rot13/hex විකේතනය + උපදෙස් මූලපද | `block` ප්රකාරයේදී අවහිර කරනු ලබන්නේ **ඉහළ** බරපතළභාවයකින් යුතු හඳුනාගැනීම් පමණි. මධ්යම බරපතළභාවයේ කාණ්ඩ ලොග් කරන නමුත් `sanitizeRequest` මඟින් කිසිවිටෙක අවහිර නොකෙරේ. උපකරණ පුවරුව (Settings → Security) හෝ `.env` හරහා වින්යාස කරන්න: ```env INPUT_SANITIZER_ENABLED=true INPUT_SANITIZER_MODE=block # අනතුරු අඟවන්න | අවහිර කරන්න (ඇතුළු කිරීමේ ප්රතිපත්තිය; පැරණි "redact" මඟින් ඇතුළු කළ පෙළ ඉවත් නොකෙරේ) INPUT_SANITIZER_BLOCK_THRESHOLD=high # ඉහළ (පෙරනිමි) | මධ්යම | අඩු — මෙම මට්ටමේ හෝ ඊට ඉහළ බරපතළභාවයන් අවහිර කිරීමේ ප්රකාරයේදී අවහිර කෙරේ ``` ### 🔒 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 පරාස | | **වේග සීමා කිරීම** | ස්වයංක්රීය පසුබැසීම සහිත සැපයුම්කරු-අනුව වේග සීමා | | **Anti-Thundering Herd** | Mutex + සම්බන්ධතාවයකට අදාළ අගුලු දැමීම මඟින් දාමගත 502 දෝෂ වළක්වයි | | **TLS ඇඟිලි සලකුණ** | bot හඳුනාගැනීම අඩු කිරීමට browser-සමාන TLS ඇඟිලි සලකුණු අනුකරණය | | **CLI ඇඟිලි සලකුණ** | ස්වදේශීය CLI අත්සන්වලට ගැළපීමට සැපයුම්කරු-අනුව header/body අනුපිළිවෙළ | ### 🔌 ප්රත්යස්ථතාව සහ ලබාගත හැකි බව | විශේෂාංගය | විස්තරය | | ------------------------------- | ----------------------------------------------------------------------------------------- | | **Circuit Breaker** | සැපයුම්කරුවෙකුට අදාළව SQLite තුළ ස්ථිරව සුරකින 3-තත්ත්ව (වසා ඇත → විවෘතයි → අර්ධ-විවෘතයි) | | **ඉල්ලීම් අනන්යක්රියාකාරීත්වය** | අනුපිටපත් ඉල්ලීම් සඳහා තත්පර 5ක අනුපිටපත් ඉවත් කිරීමේ කවුළුව | | **ඝාතීය පසුබැසීම** | වැඩිවන ප්රමාද සහිත ස්වයංක්රීය නැවත උත්සාහය | | **සෞඛ්ය උපකරණ පුවරුව** | තත්ය කාලීන සැපයුම්කරු සෞඛ්ය අධීක්ෂණය | ### 📋 අනුකූලතාව | විශේෂාංගය | විස්තරය | | -------------------------- | -------------------------------------------------------------- | | **ලොග් රඳවා තබාගැනීම** | `CALL_LOG_RETENTION_DAYS` පසු ස්වයංක්රීය පිරිසිදු කිරීම | | **ලොග් නොකිරීමේ ඉවත් වීම** | එක් එක් API යතුරේ `noLog` සලකුණ ඉල්ලීම් ලොග් කිරීම අක්රිය කරයි | | **විගණන ලොගය** | `audit_log` වගුව තුළ පරිපාලන ක්රියා නිරීක්ෂණය කෙරේ | | **MCP විගණනය** | සියලු MCP මෙවලම් ඇමතුම් සඳහා SQLite-පාදක විගණන ලොග් කිරීම | | **Zod වලංගුකරණය** | සියලු API ආදාන module පූරණයේදී Zod v4 schemas මඟින් වලංගු කෙරේ | --- ## අවශ්ය පරිසර විචල්ය සේවාදායකය ආරම්භ කිරීමට පෙර සියලුම රහස් අගයන් සකසා තිබිය යුතුය. ඒවා නොමැති නම් හෝ දුර්වල නම් සේවාදායකය **වහාම අසාර්ථක වනු ඇත**. ```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 ආරක්ෂාව - නිෂ්පාදන පරිසරයේදී root නොවන පරිශීලකයෙකු භාවිත කරන්න - රහස් කියවීමට පමණක් හැකි වෙළුම් ලෙස සවිකරන්න - `.env` ගොනු කිසිවිටෙක Docker images තුළට පිටපත් නොකරන්න - සංවේදී ගොනු බැහැර කිරීමට `.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 ආවරණය කරයි) - පරායත්තතා යාවත්කාලීනව තබාගන්න - පෙර-commit පරීක්ෂණ සඳහා ව්යාපෘතිය `husky` + `lint-staged` භාවිත කරයි (lint-staged + check-docs-sync + check:any-budget:t11) - සෑම push කිරීමකදීම CI pipeline එක 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` (මුරපද hash කිරීම) ## දැඩි ආරක්ෂක නීති මෙම නීති මෙවලම් සහ සමාලෝචකයන් විසින් බලාත්මක කරනු ලැබේ: 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/` හරහා යන්න (පරාමිතික) 5. **සැමවිටම Zod සමඟ ආදාන වලංගු කරන්න** — `src/shared/validation/schemas.ts` 6. **සැමවිටම upstream headers පිරිසිදු කරන්න** — ප්රතික්ෂේප ලැයිස්තුව `src/shared/constants/upstreamHeaders.ts` තුළ ඇත 7. **ගබඩා කර ඇති අක්තපත්ර සංකේතනය කරන්න** — `src/lib/db/encryption.ts` හරහා AES-256-GCM 8. **`resolvePublicCred()` හරහා පොදු upstream OAuth හඳුනාගැනීම් භාවිත කරන්න** — `AIza…` / `GOCSPX-…` / `…apps.googleusercontent.com` literal අගයන් කිසිවිටෙක source තුළ කාවද්දන්න එපා. [`docs/security/PUBLIC_CREDS.md`](docs/security/PUBLIC_CREDS.md) බලන්න. 9. **`buildErrorBody()` / `sanitizeErrorMessage()` හරහා දෝෂ ප්රතිචාර යවන්න** — raw `err.stack` / `err.message` කිසිවිටෙක HTTP / SSE / executor / MCP ප්රතිචාර අන්තර්ගතයන් තුළ නොතබන්න. [`docs/security/ERROR_SANITIZATION.md`](docs/security/ERROR_SANITIZATION.md) බලන්න. 10. **`env` විකල්පය හරහා `exec()` / `spawn()` runtime අගයන් ලබා දෙන්න** — බාහිර paths හෝ විශ්වාස නොකළ අගයන් shell වෙත යැවෙන scripts තුළට කිසිවිටෙක 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 / සමාන මෙවලම්) > **විෂය පථය පිළිබඳ සටහන:** repository මූලයේ ඇති `socket.yml`, ප්රකාශිත npm artifact එක පිළිබඳ Socket.dev හි registry-side post-publish scan සඳහා `projectIgnorePaths` පමණක් හැඩගස්වයි — එය බලාත්මක කරන ලද CI/PR merge gate එකක් නොවේ. `.github/workflows` තුළ කිසිදු workflow එකක්වත්, `package.json` script එකක්වත්, `Makefile` target එකක්වත් Socket.dev ක්රියාත්මක නොකරයි. ප්රකාශිත `omniroute` npm artifact එක Next.js `output: "standalone"` build එක bundle කරයි. එයින් අදහස් වන්නේ ලේඛනගත කළ වරප්රසාදිත විශේෂාංග (MITM, Zed import, Cloud Sync, embedded service supervisor) ඇතුළුව සෑම route handler එකක්ම `.next/server/*.js` minified chunk තුළට ඇතුළත් වන බවයි. Heuristic සැපයුම් දාම ස්කෑනර් මෙම chunk අනිෂ්ට මෘදුකාංග signature සමඟ සැසඳීමට නිතර pattern-matching භාවිත කරයි. අප භාවිත කරන ස්කෑනර් වින්යාසය repo මූලයේ ඇති [`socket.yml`](socket.yml) තුළ පවතී (Socket.dev GitHub App format v2 — බලන්න ). එය බෙදා නොහරින directory (`tests/`, `_tasks/`, `_references/`, `_ideia/`, `_mono_repo/`, `docs/`, ආදිය) පැහැදිලිවම බැහැර කරයි. එම නිසා ස්කෑනරය වාර්තා කරන්නේ සැබැවින්ම ප්රකාශිත පරිශීලකයන් වෙත ළඟා වන code path පමණි — scan එකම ක්රියාත්මක වන්නේ මෙම ගොනුව කියවන Socket GitHub App එක මඟින් මිස, මෙම repository එකේ workflow එකක් මඟින් නොවේ. සෑම සොයාගැනීම් කාණ්ඩයක් සඳහාම අපි එක් එක් සොයාගැනීමට අදාළ නඩත්තුකරුගේ සහතිකයක් පවත්වාගෙන යමු: - **[`docs/security/SOCKET_DEV_FINDINGS.md`](docs/security/SOCKET_DEV_FINDINGS.md)** — එක් එක් සොයාගැනීමේ සිතියම: source file ↔ සලකුණු කළ chunk ↔ හැසිරීම ↔ v3.8.6 තුළ යෙදූ අවම කිරීම. - සලකුණු කළ සෑම function ස්ථානයකම ඇති source තුළම වූ `SECURITY-AUDITOR-NOTE:` block, නැවත එම ලේඛනයම වෙත යොමු කරයි. අනතුරු ඇඟවීම ලිහිල් කළ නොහැකි 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 රාමුව - [`docs/security/COMPLIANCE.md`](docs/security/COMPLIANCE.md) — විගණන log සහ රඳවා තබාගැනීම - [`docs/security/PUBLIC_CREDS.md`](docs/security/PUBLIC_CREDS.md) — පොදු upstream අක්තපත්ර සඳහා **අනිවාර්ය** රටාව - [`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) — 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