Tehdit Modeli & OWASP ASVS L1 Öz-Tasdik
Vaulted'ın karşı koymak üzere tasarlandığı tehditler, karşı koymadıkları ve bir sektör temel çizgisine göre kontrol bazlı tasdik.
Sürüm 1.0 · Yayımlandı 2026-04-27 · Kaynak: main · Yazar: Maxim Novak
Bu belge hakkında
Bu bir öz-tasdiktir, üçüncü taraf denetimi değil. Vaulted'ın tam olarak neyi korumayı iddia ettiğini, neleri korumadığını ve her tasarım kararının tanınmış kontrollerle nasıl eşleştiğini görebilmen için mevcuttur. Bütçe imkân tanıdığında bağımsız bir inceleme yaptırıp raporunu bu sayfanın yanında yayımlayacağız. O zamana kadar temel sıfır bilgi iddiasını kendin doğrulayabilirsin — tarayıcı DevTools ile beş dakikada.
1. Kapsam & varsayımlar
Bu model, web ön yüzü, API rotaları ve Upstash Redis depolama alanı dahil olmak üzere vaulted.fyi üretim ortamını kapsar. Aynı API ile etkileşime girdikleri ölçüde yayımlanan CLI ve MCP sunucusunu da kapsar.
Kapsam dışında:
- Kullanıcının uç noktası (tarayıcı, işletim sistemi, uzantılar, pano, ekran).
- Paylaşım bağlantısının iletildiği iletişim kanalı (e-posta, Slack, SMS vb.).
- Alıcının düz metni sonradan nasıl işlediği.
- Kullandığımız API yüzeyinin altındaki Vercel veya Upstash güvenlik açıkları.
2. Varlıklar & güven sınırları
Birincil varlık: düz metin gizli bilgi. Sunucuya asla ulaşmamalı, gönderenin ve alıcının tarayıcıları dışında hiçbir yerde kalıcı olmamalı ve yalnızca sunucu tarafı durumdan kurtarılamamalıdır.
İkincil varlıklar: şifreli metin, IV'ler, görüntüleme sayaçları, son kullanma zaman damgaları ve hizmetin bütünlüğü / kullanılabilirliği.
Güven sınırları (azalan güven sırasıyla):
- Gönderenin tarayıcısı — düz metin ve anahtara güvenilir.
- Alıcının tarayıcısı — bağlantıyı açtıktan sonra düz metin ve anahtara güvenilir.
- İstemci ile sunucu arasındaki ağ — güvenilmez; TLS 1.3 ve yalnızca şifreli metnin üzerinden geçmesi tasarım kararıyla azaltılmış.
- Vaulted sunucusu (biz) — yarı güvenilir. Pasif bir şifreli metin deposu olarak değerlendirilir. Tehdit modeli, Vaulted'ın kendisi ele geçirilse bile düz metnin açığa çıkmayacağını varsayar.
- Upstash Redis — sunucuyla aynı güven düzeyi. Yalnızca şifreli bloblar.
3. Tehdit aktörleri
Pasif ağ gözlemcisi. TLS meta verilerine erişimi olan ISP, yol üzerindeki aktör. TLS ve iletim hattında düz metin veya anahtar bulunmamasıyla engellenir.
Aktif ağ saldırganı. MitM girişiminde bulunabilir. TLS, HSTS ön yüklemesi ve sertifika doğrulamasıyla engellenir. Başarılı bir TLS ele geçirmesi yine de yalnızca şifreli metin verir.
Ele geçirilmiş sunucu / düşman operatör. Bizi de içerir. Anahtar hiç gelmediğinden depolanan gizli bilgileri okuyamaz. Hizmet reddi yapabilir veya sunulan JS paketini değiştirebilir — aşağıdaki artık risklerde ele alınmıştır.
Geçerli paylaşım bağlantısına sahip kimlik doğrulamasız saldırgan. Tasarım gereği, tam bağlantıya sahip herkes şifreyi çözebilir. Görüntüleme limitleri, son kullanma ve isteğe bağlı parola ifadesi pencereyi daraltır. Bu kasıtlı bir özelliktir, hata değil.
Belirli bir gönderenin veya alıcının hedef alındığı saldırgan. Uç noktayı, iletim kanalını veya alıcının şifre çözme sonrası davranışını istismar edebilir. Vaulted'ın kontrolü dışında; dürüstlük adına belgelenmiştir.
4. Kontroller
- Rastgele 96 bit IV'ler ile istemci tarafı AES-256-GCM, kaynaktan:
crypto.getRandomValues. - Gizli bilgi başına 256 bit anahtar üretildi:
crypto.subtle.generateKey; URL fragment'ına yerleştirildi, hiçbir zaman iletilmez. - PBKDF2 (yüksek iterasyon sayısı) ve AES-GCM anahtar sarmalama ile isteğe bağlı parola ifadesi sarmalama.
- Redis
HINCRBYaracılığıyla atomik görüntüleme sayısı uygulaması ve limitte aynı işlemde silme. - TTL tabanlı otomatik sona erme, 30 günle sınırlı; oluşturulduktan sonra uzatma yok.
- Oluşturma ve görüntüleme uç noktalarında IP başına kayan pencere hız sınırlaması.
noindex/s/[id] görüntüleme sayfalarında, gizli URL'lerin arama yoluyla sızmaması için.- HSTS ön yüklemesiyle TLS 1.3, güvenli güvenlik başlıkları, hız limiti pencereleri dışında IP günlüğü yok.
5. Artık riskler (karşı konulmayan)
Bunlar kasıtlı sınır kararlarıdır; kullanıcıların Vaulted'ın tehdit modellerine uyup uymadığına karar verebilmesi için belgelenmiştir.
- Uç nokta ele geçirme. Bir keylogger, virüslü tarayıcı veya düşman uzantı, şifre çözümünden sonra düz metni DOM'dan okuyabilir.
- İletim kanalı sızıntısı. Paylaşım bağlantısı iletilirse, arşivlenirse veya yanıtlanan bir e-posta zincirinde alıntılanırsa, o kanal saldırı yüzeyine dönüşür.
- Hedefli paket değişimi. Ele geçirilmiş bir CDN veya Vercel edge, belirli bir kullanıcıya farklı bir JS sunabilir. Subresource Integrity ve yeniden üretilebilir derlemeler kısmi azaltma önlemleridir ve yol haritasındadır.
- Alıcı davranışı. Şifre çözüldükten sonra alıcı kopyalayabilir, ekran görüntüsü alabilir veya iletebilir.
- Zayıf parola ifadesi. Kullanılırsa, zayıf bir parola ifadesi sarmalanmış anahtara sahip herkes tarafından kaba kuvvetle kırılabilir.
- Zorlama / baskı. Her türlü teknik kontrolün kapsamı dışında.
6. OWASP ASVS L1 Öz-Tasdik
Aşağıdaki matris, Vaulted'ın uygulamasını seçili OWASP ASVS Seviye 1 gereksinimlerine göre eşler. Geçerli olmayan kategoriler (oturumlar, kimlik doğrulama, dosya yükleme), atlanmak yerine N/A ve kısa bir gerekçeyle işaretlenmiştir; böylece bir girişin yokluğu kaçınma olarak yorumlanmaz.
| ID | Kategori | Gereksinim | Durum | Kanıt |
|---|---|---|---|---|
| V1.1.1 | Mimari | Uygulama için tehdit modellemeyle güvenli SDLC | Pass | Bu belge. Her önemli mimari değişiklikte gözden geçirilir. |
| V1.4.1 | Mimari | Güvenilen uygulama noktaları erişim kontrollerini uygular | Pass | API rota işleyicileri girdileri doğrular ve görüntülemeleri src/lib/redis-secrets-store.ts içindeki Redis HINCRBY aracılığıyla atomik olarak tüketir. |
| V2.10.x | Kimlik Doğrulama | Hizmet / kullanıcı kimlik doğrulaması | N/A | Vaulted anonimdir. Kullanıcı hesabı yok, hizmetten hizmete kimlik doğrulama yok. Yetkilendirme, gizli ID ve URL fragment anahtarının bilinmesine dayanır. |
| V3.x | Oturum Yönetimi | Oturum yönetimi gereksinimleri | N/A | Oturum yok, kimlik doğrulamalı durum için çerez yok. |
| V5.1.3 | Girdi Doğrulama | Güvenilen hizmet katmanında girdi doğrulama | Pass | src/app/api/secrets/route.ts içinde manuel çalışma zamanı doğrulaması. Yük ≤ 1000 karakter sunucu tarafında uygulanır; maksimum görüntüleme ve TTL sınırlıdır. |
| V5.2.5 | Temizleme | Bağlama göre çıktı kodlaması (HTML, JS, URL) | Pass | React varsayılan olarak tüm interpolasyonlu değerleri kaçar. Tek dangerouslySetInnerHTML çağrıları, sunucu tarafında yazılı veriden oluşturulan JSON-LD literallerini render eder. |
| V6.2.1 | Depolanan Kriptografi | Güvenli varsayılanlarla onaylı kriptografik algoritmalar kullan | Pass | Web Crypto API aracılığıyla AES-256-GCM. NIST SP 800-38D. Bkz. src/lib/crypto.ts. |
| V6.2.2 | Depolanan Kriptografi | Kriptografik olarak güçlü rastgele sayı üretimi | Pass | IV'ler ve anahtar materyali için crypto.getRandomValues. AES anahtarları için crypto.subtle.generateKey. |
| V6.2.5 | Depolanan Kriptografi | Güvensiz veya kullanımdan kaldırılmış kriptografik primitifler yok | Pass | Kriptografik yolun hiçbir yerinde MD5, SHA-1, DES, RC4, ECB veya CBC-MAC'siz yok. |
| V6.3.1 | Depolanan Kriptografi | Anahtarlar yetkisiz erişime karşı korunmuş | Pass | Şifreleme anahtarı sunucuya asla ulaşmaz. Yalnızca URL fragment'ında yaşar, RFC 3986 uyarınca istemci tarafında işlenir. İsteğe bağlı parola ifadesi, paylaşmadan önce PBKDF2 ile anahtarı sarar. |
| V7.1.1 | Hata İşleme & Günlükleme | Günlüklerde hassas bilgi yok | Pass | Sunucu yalnızca istek şeklini ve hız limiti kararlarını günlükler. Şifreli metin yok, çapraz ilişkilendirilebilecek biçimde gizli ID yok, hız limiti penceresinin ötesinde IP kalıcılığı yok. |
| V7.4.1 | Hata İşleme & Günlükleme | Genel hata mesajları | Pass | API rotaları genel HTTP durum kodları ve kısa hata dizeleri döndürür. Yığın izi veya iç durum sızıntısı yok. |
| V8.1.1 | Veri Koruma | Hassas veriler tanımlanmış ve korunmuş | Pass | Düz metin sunucu tarafından hiçbir zaman alınmaz. Şifreli metin, TTL tabanlı silme ve atomik görüntüleme limiti uygulamasıyla Upstash Redis'te şifreli olarak depolanır. |
| V8.3.1 | Veri Koruma | Hassas veriler URL'lerde veya yönlendirici başlıklarında açıkta değil | Pass | Şifreleme anahtarı URL fragment'ında yaşar; fragment'lar RFC 3986 §3.5 uyarınca tarayıcılar tarafından hiçbir zaman sunucuya gönderilmez ve document.referrer'dan çıkarılır. |
| V9.1.1 | İletişim | Tüm istemci bağlantısı için TLS | Pass | Vercel edge'de TLS 1.3 zorunlu. HSTS ön yüklenmiş. HTTP istekleri HTTPS'ye yönlendirilir. |
| V10.3.2 | Kötü Amaçlı Kod | Uygulama kodu kötü amaçlı kod açısından incelenmiş | Pass | Tek bakımlı kod tabanı. Tüm commit'ler proje sahibi tarafından yazılmış; desteklendiği yerlerde imzalı commit'ler. Dependabot aracılığıyla bağımlılık güncellemeleri birleştirmeden önce incelenir. |
| V11.1.1 | İş Mantığı | Mantık akışları kötüye kullanıma karşı korunmuş | Pass | Upstash Ratelimit aracılığıyla IP başına hız sınırlaması (10 oluşturma/dk, 30 görüntüleme/dk). Görüntüleme sayaçları atomik olarak azaltılır. |
| V12.x | Dosya & Kaynaklar | Dosya yükleme ve işleme gereksinimleri | N/A | Vaulted dosya yüklemeyi kabul etmez. |
| V13.2.1 | API & Web Hizmetleri | RESTful uç noktalar istek şemasını doğrular | Pass | Tüm POST/GET işleyicileri, işlem öncesinde yol parametrelerini, gövde şeklini ve content-type'ı doğrular. |
| V14.4.3 | Yapılandırma | Standart güvenlik başlıkları yapılandırılmış | Pass | HSTS, X-Content-Type-Options, Referrer-Policy ve Permissions-Policy Next.js yapılandırması aracılığıyla ayarlanmış. Content-Security-Policy, nonce tabanlı strict-dynamic script-src ile src/proxy.ts içinde istek başına uygulanır; API rotaları kilitli bir default-src none politikası alır. |
Numaralandırma ASVS 4.0 yapısını izler. Liste seçicidir, kapsamlı değil — durumsuz, hesapsız şifreli metin deposuna anlamlı biçimde uygulanan kontroller hakkında dürüstlük hedeflenmektedir.
7. Değişim süreci
Bu belgedeki herhangi bir öğeyi etkileyen her değişiklik — yeni uç nokta, kriptografik değişiklik, bağımlılığı etkileyen yeniden düzenleme, altyapı değişikliği — aynı PR'da bu sayfanın gözden geçirilmesini tetiklemelidir. Belge güncellendiğinde yukarıdaki sürüm ve yayımlanma tarihi artırılır; önceki sürüm genel git geçmişinde erişilebilir kalır.
Onay
Bu tehdit modeli, Vaulted'ın bakıcısı tarafından iyi niyetle yayımlanmıştır. Yukarıdaki tasdiklerle ilgili hatalar, eksiklikler ve anlaşmazlıklar açıkça davet edilmektedir — lütfen bunları [email protected] adresine veya sorumlu açıklama programı.
Maxim Novak — bakıcı, vaulted.fyi · 2026-04-27