# 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) · 🇱🇰 [si](../si/SECURITY.md) · 🇸🇰 [sk](../sk/SECURITY.md) · 🇸🇮 [sl](../sl/SECURITY.md) · 🇷🇸 [sr](../sr/SECURITY.md) · 🇸🇪 [sv](../sv/SECURITY.md) · 🇰🇪 [sw](../sw/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) → "கட்டம் 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 பிரிப்பு நேரத்திலான பாதுகாப்பு அடிப்படை:** அளவிடப்பட்ட ஸ்கேனர் நிலை, route-guard மற்றும் பொது நற்சான்றுச் சான்றுகள் [`docs/security/LTS_SECURITY_BASELINE.md`](docs/security/LTS_SECURITY_BASELINE.md)-இல் பதிவுசெய்யப்பட்டுள்ளன. --- ## பாதுகாப்புக் கட்டமைப்பு OmniRoute பல அடுக்குகளைக் கொண்ட பாதுகாப்பு மாதிரியைச் செயல்படுத்துகிறது: ``` கோரிக்கை → CORS → Authz செயல்தொடர் (வகைப்படுத்துதல் → கொள்கைகள் → அமல்படுத்துதல்) → பாதுகாப்புத் தடுப்புகள் (PII மறைப்பான், prompt injection, vision bridge) → வீத வரம்பி → சர்க்யூட் பிரேக்கர் → Cooldown → மாதிரி முடக்கம் → வழங்குநர் ``` ### 🔐 அங்கீகரிப்பு மற்றும் அங்கீகாரச் சரிபார்ப்பு | அம்சம் | செயலாக்கம் | | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Dashboard உள்நுழைவு** | JWT டோக்கன்களுடன் கடவுச்சொல் அடிப்படையிலான அங்கீகரிப்பு (HttpOnly cookies) | | **API Key அங்கீகரிப்பு** | CRC சரிபார்ப்புடன் HMAC கையொப்பமிடப்பட்ட விசைகள் | | **OAuth 2.0 + PKCE** | வழங்குநருக்குரிய browser/device OAuth, ஆதரிக்கப்படும் இடங்களில் PKCE-ஐப் பயன்படுத்துகிறது; import-only Devin நற்சான்றுகள் தனியாகக் கையாளப்படுகின்றன. | | **டோக்கன் புதுப்பித்தல்** | காலாவதியாகும் முன் OAuth டோக்கனைத் தானாகப் புதுப்பித்தல் | | **பாதுகாப்பான Cookies** | HTTPS சூழல்களுக்கு `AUTH_COOKIE_SECURE=true` | | **Authz செயல்தொடர்** | 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** | தொலைநிலை `/api/mcp/*` அணுகல் `manage` scope கொண்ட API key-களால் கட்டுப்படுத்தப்படுகிறது; `/api/cli-tools/runtime/*` கடுமையான loopback அணுகலாகவே இருக்கும். ROUTE_GUARD_TIERS-ஐப் பார்க்கவும் | | **MCP Scope-கள்** | 32 நுணுக்கமான scope-கள் (read:health, write:combos, execute:completions போன்றவை) — `docs/frameworks/MCP-SERVER.md`-ஐப் பார்க்கவும் | ### 🛡️ சேமிப்புநிலையில் குறியாக்கம் SQLite-இல் சேமிக்கப்படும் அனைத்து முக்கியத் தரவுகளும் scrypt விசை வருவித்தலுடன் **AES-256-GCM**-ஐப் பயன்படுத்திக் குறியாக்கப்படுகின்றன: - API key-கள், access token-கள், refresh token-கள் மற்றும் ID token-கள் - பதிப்பிடப்பட்ட வடிவம்: `enc:v1:::` - `STORAGE_ENCRYPTION_KEY` அமைக்கப்படாதபோது Passthrough பயன்முறை (plaintext) ```bash # குறியாக்க விசையை உருவாக்கவும்: STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32) ``` ### 🛡️ பாதுகாப்புத் தடுப்புகள் கட்டமைப்பு OmniRoute, முன்னுரிமைப்படி வரிசைப்படுத்தப்பட்ட 3 உள்ளமைக்கப்பட்ட பாதுகாப்புத் தடுப்புகளைக் கொண்ட, உடனடியாக மீளேற்றக்கூடிய **guardrails registry**-ஐ (`src/lib/guardrails/`) வழங்குகிறது: | பாதுகாப்புத் தடுப்பு | முன்னுரிமை | நோக்கம் | | -------------------- | ---------- | ---------------------------------------------------------------------------------------------------------- | | `vision-bridge` | 5 | படம் சார்ந்த விளக்கங்கள் மூலம் vision அல்லாத மாதிரிகளை இணைக்கிறது; பட URL-களுக்கான SSRF பாதுகாப்பு | | `pii-masker` | 10 | அழைப்புக்கு முன்பும் பின்பும் PII மறைத்தல் (மின்னஞ்சல்கள், தொலைபேசி எண்கள், CPF, CNPJ, கடன் அட்டைகள், SSN) | | `prompt-injection` | 20 | override/role-hijack/jailbreak/leak வடிவங்களைக் கண்டறிகிறது | தனிப்பயன் பாதுகாப்புத் தடுப்புகள் `registerGuardrail(new MyGuardrail())` மூலம் பதிவுசெய்யப்படுகின்றன. இந்த மாதிரி fail-open முறையில் செயல்படுகிறது (விதிவிலக்குகள் போக்குவரத்தை ஒருபோதும் தடுக்காது). ஒவ்வொரு கோரிக்கையிலும் `x-omniroute-disabled-guardrails` header மூலம் விலகிக்கொள்ளலாம். → [`docs/security/GUARDRAILS.md`](docs/security/GUARDRAILS.md)-ஐப் பார்க்கவும். ### 🧠 Prompt Injection பாதுகாப்புத் தடுப்பு LLM கோரிக்கைகளில் prompt injection வடிவங்களைக் கண்டறியும், இயன்றவரை சிறப்பாகச் செயல்படும் heuristic middleware. **இது முழுமையான prompt-injection firewall அல்ல** — தவறான நேர்மறை முடிவுகளையும் (தீங்கற்ற persona/RPG prompts), தவறான எதிர்மறை முடிவுகளையும் (leetspeak, இடைவெளிகள், ஆங்கிலமல்லாத வடிவங்கள்) உருவாக்கலாம். | வடிவ வகை | தீவிரம் | எடுத்துக்காட்டு | | ------------------- | --------- | --------------------------------------------------------- | | System Override | அதிகம் | "முந்தைய அனைத்து வழிமுறைகளையும் புறக்கணி" | | Role Hijack | நடுத்தரம் | "இப்போது நீ DAN, உன்னால் எதையும் செய்ய முடியும்" | | Delimiter Injection | அதிகம் | சூழல் எல்லைகளை உடைப்பதற்கான குறியாக்கப்பட்ட பிரிப்பான்கள் | | DAN/Jailbreak | நடுத்தரம் | அறியப்பட்ட jailbreak prompt வடிவங்கள் | | Instruction Leak | அதிகம் | "உனது system prompt-ஐ எனக்குக் காட்டு" | | Encoding Evasion | நடுத்தரம் | base64/rot13/hex decode + வழிமுறை முக்கியச்சொற்கள் | `block` பயன்முறையில் **அதிக** தீவிரம் கொண்ட கண்டறிதல்கள் மட்டுமே தடுக்கப்படும். நடுத்தரத் தீவிரம் கொண்ட குடும்பங்கள் பதிவுசெய்யப்படும்; ஆனால் `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 பயன்முறையில் தடுக்கப்படும் ``` ### 🔒 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 # விருப்பத்தேர்வு: வாடிக்கையாளர்களுக்குத் திருப்பியளிக்கப்படும் provider பதில்களில் PII-ஐ மறைக்கவும் ``` ### 🌐 பிணையப் பாதுகாப்பு | அம்சம் | விளக்கம் | | ------------------------ | ------------------------------------------------------------------------------------------ | | **CORS** | வெளிப்படையான cross-origin அனுமதிப்பட்டியல் (`CORS_ALLOWED_ORIGINS`; மரபுவழி `CORS_ORIGIN`) | | **IP வடிகட்டுதல்** | Dashboard-இல் அனுமதிப்பட்டியல்/தடுப்புப்பட்டியல் IP வரம்புகள் | | **விகித வரம்பிடல்** | தானியங்கி backoff உடன் provider-வாரியான விகித வரம்புகள் | | **Anti-Thundering Herd** | Mutex + இணைப்பு-வாரியான பூட்டுதல் தொடர் 502 பிழைகளைத் தடுக்கிறது | | **TLS Fingerprint** | Bot கண்டறிதலைக் குறைக்க உலாவியைப் போன்ற TLS fingerprint spoofing | | **CLI Fingerprint** | இயல்பான CLI signatures-உடன் பொருந்துமாறு provider-வாரியான header/body வரிசைப்படுத்தல் | ### 🔌 மீள்திறன் & கிடைப்புத்தன்மை | அம்சம் | விளக்கம் | | ------------------------ | ------------------------------------------------------------------------------------------------ | | **Circuit Breaker** | ஒவ்வொரு provider-க்கும் 3-நிலை (Closed → Open → Half-Open), SQLite-இல் நிலைத்துச் சேமிக்கப்படும் | | **கோரிக்கை Idempotency** | நகல் கோரிக்கைகளுக்கான 5-விநாடி dedup சாளரம் | | **Exponential Backoff** | அதிகரிக்கும் தாமதங்களுடன் தானியங்கி மறுமுயற்சி | | **Health Dashboard** | நிகழ்நேர provider ஆரோக்கியக் கண்காணிப்பு | ### 📋 இணக்கப்பாடு | அம்சம் | விளக்கம் | | ------------------------ | ----------------------------------------------------------------------------------------- | | **பதிவுத் தக்கவைப்பு** | `CALL_LOG_RETENTION_DAYS` நாட்களுக்குப் பிறகு தானியங்கி சுத்தம் | | **பதிவிலிருந்து விலகல்** | ஒவ்வொரு API key-க்குமான `noLog` கொடி கோரிக்கைப் பதிவை முடக்குகிறது | | **தணிக்கைப் பதிவு** | நிர்வாகச் செயல்கள் `audit_log` அட்டவணையில் கண்காணிக்கப்படுகின்றன | | **MCP தணிக்கை** | அனைத்து MCP tool அழைப்புகளுக்கும் 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 அல்லாத பயனரைப் பயன்படுத்தவும் - ரகசியங்களை வாசிக்க மட்டும் அனுமதிக்கப்பட்ட volumes ஆக mount செய்யவும் - `.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` = பிழை) - module ஏற்றப்படும்போது provider மாறிலிகள் Zod மூலம் சரிபார்க்கப்படுகின்றன (`src/shared/validation/schemas.ts`) - இயல்பாகவே பாதுகாப்பான நூலகங்கள் பயன்படுத்தப்படுகின்றன: `dompurify` / `isomorphic-dompurify` (XSS), `jose` (JWT), `better-sqlite3` (parameterized queries காரணமாக SQLi அபாயம் இல்லை), `bcryptjs` (கடவுச்சொல் hashing) ## கடுமையான பாதுகாப்பு விதிகள் இந்த விதிகள் கருவிகளாலும் மதிப்பாய்வாளர்களாலும் கட்டாயப்படுத்தப்படுகின்றன: 1. **ரகசியங்களை ஒருபோதும் commit செய்ய வேண்டாம்** — `.env` gitignore செய்யப்பட்டுள்ளது; `.env.example` என்பது template ஆகும் (நேரடி மதிப்புகள் இல்லை, comments மட்டுமே — கீழே உள்ள PUBLIC_CREDS.md-ஐப் பார்க்கவும்) 2. **`eval()`, `new Function()`, அல்லது மறைமுக eval-ஐ ஒருபோதும் பயன்படுத்த வேண்டாம்** — ESLint இதைக் கட்டாயப்படுத்துகிறது 3. **வெளிப்படையான operator ஒப்புதல் இல்லாமல் Husky hooks-ஐ ஒருபோதும் தவிர்க்க வேண்டாம்** (`--no-verify`, `--no-gpg-sign`) 4. **routes-இல் raw SQL-ஐ ஒருபோதும் எழுத வேண்டாம்** — எப்போதும் `src/lib/db/` வழியாகச் செல்லவும் (parameterized) 5. **உள்ளீடுகளை எப்போதும் Zod மூலம் சரிபார்க்கவும்** — `src/shared/validation/schemas.ts` 6. **upstream headers-ஐ எப்போதும் தூய்மைப்படுத்தவும்** — denylist: `src/shared/constants/upstreamHeaders.ts` 7. **சேமிப்பிலுள்ள credentials-ஐக் குறியாக்கவும்** — `src/lib/db/encryption.ts` வழியாக AES-256-GCM 8. **பொது upstream OAuth identifiers-க்கு `resolvePublicCred()`-ஐப் பயன்படுத்தவும்** — `AIza…` / `GOCSPX-…` / `…apps.googleusercontent.com` போன்ற நேரடி மதிப்புகளை source-இல் ஒருபோதும் உட்பொதிக்க வேண்டாம். [`docs/security/PUBLIC_CREDS.md`](docs/security/PUBLIC_CREDS.md)-ஐப் பார்க்கவும். 9. **பிழை responses-ஐ `buildErrorBody()` / `sanitizeErrorMessage()` வழியாக அனுப்பவும்** — raw `err.stack` / `err.message`-ஐ HTTP / SSE / executor / MCP response bodies-இல் ஒருபோதும் இட வேண்டாம். [`docs/security/ERROR_SANITIZATION.md`](docs/security/ERROR_SANITIZATION.md)-ஐப் பார்க்கவும். 10. **`exec()` / `spawn()` runtime மதிப்புகளை `env` option வழியாக வழங்கவும்** — வெளிப்புற 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 / இதுபோன்றவை) > **வரம்புக் குறிப்பு:** களஞ்சியத்தின் மூலக் கோப்பகத்திலுள்ள `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) — இயல்பாகவே பாதுகாப்பான தேர்ந்தெடுக்கப்பட்ட நூலகங்கள்