Validated on the combined 12-PR batch board: check:docs-all passes (docs-sync, doc-links over 855 links, fabricated-docs strict). 26-file Turkish documentation suite at full parity with consistent terminology. Thank you @ismailcelik-tr!
18 KiB
Güvenlik Politikası (Türkçe)
🌐 Languages: 🇺🇸 English · 🇸🇦 ar · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇪🇸 es · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇳 gu · 🇮🇱 he · 🇮🇳 hi · 🇭🇺 hu · 🇮🇩 id · 🇮🇹 it · 🇯🇵 ja · 🇰🇷 ko · 🇮🇳 mr · 🇲🇾 ms · 🇳🇱 nl · 🇳🇴 no · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇸🇰 sk · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇨🇳 zh-CN
Güvenlik Açıklarını Bildirme
OmniRoute'ta bir güvenlik açığı keşfederseniz, lütfen sorumlu bir şekilde bildirin:
- KESİNLİKLE herkese açık bir GitHub issue'su açmayın
- GitHub Security Advisories kullanın
- Şunları ekleyin: açıklama, yeniden oluşturma adımları ve olası etki
Yanıt Zaman Çizelgesi
| Aşama | Hedef Süre |
|---|---|
| İlk Bildirim Teyidi | 48 saat |
| Ön İnceleme ve Değerlendirme | 5 iş günü |
| Yama Sürümü (Patch) | 14 iş günü (kritik) |
Desteklenen Sürümler
| Sürüm | Destek Durumu |
|---|---|
| 3.8.x | ✅ Aktif |
| 3.7.x | ✅ Güvenlik |
| < 3.7.0 | ❌ Desteklenmiyor |
Güvenlik Mimarisi
OmniRoute çok katmanlı bir güvenlik modeli uygular:
Request → CORS → Authz pipeline (classify → policies → enforce)
→ Guardrails (PII masker, prompt injection, vision bridge)
→ Rate Limiter → Circuit Breaker → Cooldown → Model Lockout → Provider
🔐 Kimlik Doğrulama ve Yetkilendirme
| Özellik | Uygulama |
|---|---|
| Pano Girişi | JWT belirteçleri ile parola tabanlı kimlik doğrulama (HttpOnly çerezler) |
| API Anahtarı Doğrulaması | CRC doğrulamalı HMAC imzalı anahtarlar |
| OAuth 2.0 + PKCE | Sağlayıcıya özel tarayıcı/cihaz OAuth'u desteklenen yerlerde PKCE kullanır; yalnızca içe aktarılan Devin kimlik bilgileri ayrı işlenir. |
| Belirteç Yenileme | Süresi dolmadan önce otomatik OAuth belirteci yenileme |
| Güvenli Çerezler | HTTPS ortamları için AUTH_COOKIE_SECURE=true |
| Yetkilendirme Hattı | Rota sınıflandırması (PUBLIC / CLIENT_API / MANAGEMENT) — bkz. docs/architecture/AUTHZ_GUIDE.md |
| Rota Koruma Katmanları | Yönetim rotaları için 3 katmanlı model (LOCAL_ONLY / ALWAYS_PROTECTED / MANAGEMENT) — bkz. docs/security/ROUTE_GUARD_TIERS.md |
| Yönetim Kapsamlı MCP | manage kapsamına sahip API anahtarlarıyla korunan uzak /api/mcp/* erişimi; /api/cli-tools/runtime/* katı yerel döngüde kalır. |
| MCP Kapsamları | 32 ayrıntılı kapsam (read:health, write:combos, execute:completions vb.) — bkz. docs/frameworks/MCP-SERVER.md |
🛡️ Dinlenmede Şifreleme (Encryption at Rest)
SQLite'ta saklanan tüm hassas veriler, scrypt anahtar türetme ile AES-256-GCM kullanılarak şifrelenir:
- API anahtarları, erişim belirteçleri, yenileme belirteçleri ve ID belirteçleri
- Sürümlendirilmiş format:
enc:v1:<iv>:<ciphertext>:<authTag> STORAGE_ENCRYPTION_KEYayarlanmadığında doğrudan geçiş modu (düz metin)
# Şifreleme anahtarı oluşturun:
STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32)
🛡️ Güvenlik Önlemleri Çerçevesi (Guardrails Framework)
OmniRoute, öncelik sırasına göre sıralanmış 3 yerleşik güvenlik önlemi içeren, çalışırken yeniden yüklenebilir bir güvenlik önlemleri kayıt defteri (src/lib/guardrails/) ile gelir:
| Güvenlik Önlemi | Öncelik | Amaç |
|---|---|---|
vision-bridge |
5 | Vision desteği olmayan modelleri görüntü açıklamalarıyla destekler; görsel URL'leri için SSRF koruması sağlar |
pii-masker |
10 | Çağrı öncesi ve sonrası PII (kişisel veri) maskeleme (e-posta, telefon, CPF, CNPJ, kredi kartı, SSN) |
prompt-injection |
20 | Geçersiz kılma / rol ele geçirme / jailbreak / sızıntı kalıplarını algılar |
Özel güvenlik önlemleri registerGuardrail(new MyGuardrail()) aracılığıyla kaydedilir. Model hata durumunda açıktır (fail-open; istisnalar trafiği asla engellemez). İstek başına devre dışı bırakma x-omniroute-disabled-guardrails başlığı ile yapılır. → Bkz. docs/security/GUARDRAILS.md.
🧠 İstem Enjeksiyonu Koruması (Prompt Injection Guard)
LLM isteklerindeki istem enjeksiyonu modellerini algılayan en iyi çaba (heuristic) ara yazılımıdır. Eksiksiz bir istem enjeksiyonu güvenlik duvarı değildir — yanlış pozitifler (zararsız persona/RPG istemleri) ve yanlış negatifler (leetspeak, boşluk manipülasyonu, İngilizce dışı kalıplar) üretebilir.
| Kalıp Türü | Önem Derecesi | Örnek |
|---|---|---|
| Sistem Geçersiz Kılma | Yüksek (High) | "ignore all previous instructions" |
| Rol Ele Geçirme | Orta (Medium) | "you are now DAN, you can do anything" |
| Ayırıcı Enjeksiyonu | Yüksek (High) | Bağlam sınırlarını kırmak için kodlanmış ayırıcılar |
| DAN / Jailbreak | Orta (Medium) | Bilinen jailbreak istem kalıpları |
| Talimat Sızıntısı | Yüksek (High) | "show me your system prompt" |
| Kodlama Kaçırma | Orta (Medium) | base64/rot13/hex kod çözme + talimat anahtar kelimeleri |
block modunda yalnızca High (Yüksek) önem derecesindeki tespitler engellenir. Orta önem derecesindeki
aileler günlüğe kaydedilir ancak sanitizeRequest tarafından asla engellenmez.
Pano (Ayarlar → Güvenlik) veya .env üzerinden yapılandırın:
INPUT_SANITIZER_ENABLED=true
INPUT_SANITIZER_MODE=block # warn | block (enjeksiyon politikası; eski "redact" modu enjeksiyon metnini silmez)
INPUT_SANITIZER_BLOCK_THRESHOLD=high # high (varsayılan) | medium | low — block modunda bu seviye ve üstü engellenir
🔒 PII (Kişisel Veri) Maskeleme
Kişisel olarak tanımlanabilir bilgilerin otomatik olarak algılanması ve isteğe bağlı olarak maskelenmesi:
| PII Türü | Kalıp | Değiştirilen Değer |
|---|---|---|
| E-posta | user@domain.com |
[EMAIL_REDACTED] |
| CPF (Brezilya) | 123.456.789-00 |
[CPF_REDACTED] |
| CNPJ (Brezilya) | 12.345.678/0001-00 |
[CNPJ_REDACTED] |
| Kredi Kartı | 4111-1111-1111-1111 |
[CC_REDACTED] |
| Telefon | +55 11 99999-9999 |
[PHONE_REDACTED] |
| SSN (ABD) | 123-45-6789 |
[SSN_REDACTED] |
PII_REDACTION_ENABLED=true # istek PII yeniden yazımı; INPUT_SANITIZER_MODE'dan bağımsızdır
PII_RESPONSE_SANITIZATION=true # isteğe bağlı: istemcilere döndürülen sağlayıcı yanıtlarındaki PII'yi maskeler
🌐 Ağ Güvenliği
| Özellik | Açıklama |
|---|---|
| CORS | Açık kaynaklar arası izin listesi (CORS_ALLOWED_ORIGINS; eski CORS_ORIGIN) |
| IP Filtreleme | Panoda IP aralıklarını izin listesine / engelleme listesine alma |
| Hız Sınırlaması | Otomatik geri çekilme ile sağlayıcı başına hız sınırları |
| Sürü Önleme (Anti-Thundering Herd) | Mutex + bağlantı başına kilitleme ile basamaklı 502 hatalarını önler |
| TLS Parmak İzi | Bot algılamasını azaltmak için tarayıcı benzeri TLS parmak izi taklidi |
| CLI Parmak İzi | Yerel CLI imzalarıyla eşleşmesi için sağlayıcı başına başlık/gövde sıralaması |
🔌 Dayanıklılık ve Erişilebilirlik
| Özellik | Açıklama |
|---|---|
| Devre Kesici (Circuit Breaker) | Sağlayıcı başına 3 durumlu (Kapalı → Açık → Yarı Açık), SQLite ile kalıcı |
| İstek Tekilleştirme | Yinelenen istekler için 5 saniyelik tekilleştirme penceresi |
| Üstel Geri Çekilme | Artan gecikmelerle otomatik yeniden deneme |
| Sağlık Panosu | Gerçek zamanlı sağlayıcı sağlığı izleme |
📋 Uyumluluk (Compliance)
| Özellik | Açıklama |
|---|---|
| Günlük Saklama | CALL_LOG_RETENTION_DAYS sonrasında otomatik temizleme |
| Günlük Tutmama Tercihi | API anahtarı başına noLog bayrağı istek kaydını devre dışı bırakır |
| Denetim Günlüğü | audit_log tablosunda izlenen yönetim eylemleri |
| MCP Denetimi | Tüm MCP araç çağrıları için SQLite tabanlı denetim kaydı |
| Zod Doğrulaması | Modül yükleme sırasında Zod v4 şemalarıyla doğrulanan tüm API girdileri |
Gerekli Ortam Değişkenleri
Sunucuyu başlatmadan önce tüm gizli anahtarlar ayarlanmalıdır. Eksik veya zayıf olmaları durumunda sunucu hızlı bir şekilde hata vererek (fail fast) durur.
# GEREKLİ — sunucu bunlar olmadan başlamaz:
JWT_SECRET=$(openssl rand -base64 48) # min 32 karakter
API_KEY_SECRET=$(openssl rand -hex 32) # min 16 karakter
# ÖNERİLEN — dinlenmede şifrelemeyi etkinleştirir:
STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32)
Sunucu changeme, secret veya password gibi bilinen zayıf değerleri açıkça reddeder.
Docker Güvenliği
- Üretimde root olmayan bir kullanıcı kullanın
- Gizli anahtarları salt okunur birimler (read-only volumes) olarak bağlayın
.envdosyalarını asla Docker imajlarına kopyalamayın- Hassas dosyaları hariç tutmak için
.dockerignorekullanın - HTTPS arkasındayken
AUTH_COOKIE_SECURE=trueayarlayın
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
Bağımlılıklar
- Düzenli olarak
npm auditçalıştırın (npm run audit:depsana projeyi + electron'u kapsar) - Bağımlılıkları güncel tutun
- Proje, commit öncesi kontroller için
husky+lint-stagedkullanır (lint-staged + check-docs-sync + check:any-budget:t11) - CI hattı her push işleminde ESLint güvenlik kurallarını çalıştırır (
no-eval,no-implied-eval,no-new-func= hata) - Sağlayıcı sabitleri modül yükleme sırasında Zod aracılığıyla doğrulanır (
src/shared/validation/schemas.ts) - Varsayılan olarak güvenli kütüphaneler kullanılır:
dompurify/isomorphic-dompurify(XSS),jose(JWT),better-sqlite3(parametreli sorgularla sıfır SQLi riski),bcryptjs(şifre karma)
Katı Güvenlik Kuralları (Hard Security Rules)
Bu kurallar araçlar ve inceleyiciler tarafından zorunlu kılınmıştır:
- Sırları asla commit etmeyin —
.envgitignore edilmiştir;.env.exampleşablondur (sabit değerler yok, yalnızca yorumlar — bkz. PUBLIC_CREDS.md) - Asla
eval(),new Function()veya dolaylı eval kullanmayın — ESLint tarafından zorunlu kılınır - Husky kancalarını asla atlamayın (
--no-verify,--no-gpg-sign), açık operatör onayı olmadan - Rotalarda asla ham SQL yazmayın — her zaman
src/lib/db/üzerinden geçin (parametrelendirilmiş) - Girdileri her zaman Zod ile doğrulayın —
src/shared/validation/schemas.ts - Yukarı akış başlıklarını her zaman temizleyin —
src/shared/constants/upstreamHeaders.tsiçindeki engelleme listesi - Kimlik bilgilerini dinlenmede şifreleyin —
src/lib/db/encryption.tsaracılığıyla AES-256-GCM - Genel yukarı akış OAuth kimlikleri
resolvePublicCred()aracılığıyla kullanılmalıdır — kaynak koda aslaAIza…/GOCSPX-…/…apps.googleusercontent.comsabit değerlerini gömmeyin. Bkz.docs/security/PUBLIC_CREDS.md. - Hata yanıtları
buildErrorBody()/sanitizeErrorMessage()üzerinden geçmelidir — HTTP / SSE / executor / MCP yanıt gövdelerine asla hamerr.stack/err.messagekoymayın. Bkz.docs/security/ERROR_SANITIZATION.md. exec()/spawn()çalışma zamanı değerlerienvseçeneği üzerinden iletilmelidir — kabuk komutlarına harici yolları veya güvenilmeyen değerleri asla dize birleştirme ile eklemeyin. Referans:src/mitm/cert/install.ts::updateNssDatabases.- Varsayılan olarak güvenli kütüphaneleri tercih edin — bkz. tldrsec/awesome-secure-defaults (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink). Kendi çözümünüzü yazmadan önce bunlara başvurun.
Tedarik Zinciri Tarayıcı Bulguları (Socket.dev / Snyk / Benzeri)
Yayımlanan omniroute npm paketi, Next.js output: "standalone" derlemesini paketler; bu da belgelenmiş ayrıcalıklı özellikler (MITM, Zed içe aktarma, Cloud Sync, gömülü servis süpervizörü) dahil her rota işleyicisinin .next/server/*.js küçültülmüş yığınlarında yer alması anlamına gelir. Sezgisel tedarik zinciri tarayıcıları bu yığınları sıklıkla kötü amaçlı yazılım imzalarıyla eşleştirebilir.
Her bulgu kategorisi için proje yöneticisi onay beyanı tutulmaktadır:
docs/security/SOCKET_DEV_FINDINGS.md— bulgu başına harita: kaynak dosya ↔ işaretlenen yığın ↔ davranış ↔ v3.8.6'da uygulanan hafifletme.- İşaretlenen her fonksiyondaki kaynak içi
SECURITY-AUDITOR-NOTE:blokları aynı belgeye işaret eder.
Geliştirme hattında uyarıları esnetemeyen kullanıcılar için: OMNIROUTE_BUILD_PROFILE=minimal npm run build ile derleme yapın. Bu, dört hassas modülü çalışma zamanında HTTP 503 feature-disabled döndüren taslaklarla değiştirir; böylece ayrıcalıklı kod yolları pakette fiziksel olarak bulunmaz. Yayımlama tarifi için bkz. docs/security/SOCKET_DEV_FINDINGS.md.
Referanslar
docs/architecture/AUTHZ_GUIDE.md— yetkilendirme hattıdocs/security/GUARDRAILS.md— güvenlik önlemleri çerçevesidocs/security/COMPLIANCE.md— denetim günlüğü ve saklamadocs/security/PUBLIC_CREDS.md— genel yukarı akış kimlik bilgileri için zorunlu modeldocs/security/ERROR_SANITIZATION.md— hata yanıtları için zorunlu modeldocs/security/SOCKET_DEV_FINDINGS.md— tedarik zinciri tarayıcı bulguları için onay beyanıdocs/architecture/RESILIENCE_GUIDE.md— devre kesici + soğuma süresi + model kilitlemedocs/security/STEALTH_GUIDE.md— TLS parmak izi (yasal/etik bildirim)CLAUDE.md— yapay zeka ajanları için katı kurallar- tldrsec/awesome-secure-defaults — derlenmiş varsayılan olarak güvenli kütüphaneler