WEB / WEB-01.S01
Assets, threats ve trust assumptions
Neyi koruduğunu ve hangi varsayıma güvendiğini söylemeden “güvenli” diyemezsin. Private bir editorial note üzerinden threat, weakness, vulnerability ve impact’i ayrı kur.
İlk geçişte neye bakmalısın?
Public kitap başlığı ile Duru’nun private notunu karşılaştır. Neyi koruduğunu ve hangi varsayımın doğrulanması gerektiğini söyle.
Asset olarak notun içeriğini seç. Browser’ın “Duru’yum” demesi bir claim’dir; doğrulanmış principal ve notu okuma izni ayrı kontrollerdir.
- Asset / threat
- Asset korumaya değer şey; threat ona zarar verebilecek durum veya olay.
- Claim / principal
- Claim bir beyan; principal sistemin kimlik ve izin kararlarını bağladığı özne. Beyan tek başına doğrulama değildir.
- Ownership / permission
- Kaydın kime ait olduğu ve o kayda hangi işlemin yapılabileceği.
Sonraki ayrıntılar nerede açılacak?
Tenant, uygulamanın ayırdığı müşteri/çalışma alanı; entitlement verilen erişim hakkıdır. Session ve authorization bölümleri bu kararların nasıl taşındığını açar. Burada korunacak veri ve gerekli kanıtı seçmeye odaklan.
1. Core · Mekanizma
Hareket olmadan bütün senaryoları oku
Verified own context · allow
- Claim ile authority’yi ayır
Private note body bir asset’tir. Browser note.read ister ve Duru etiketi gösterir. Bu etiket doğrulanmış principal veya resource permission değildir.
- Browser · submitted claim
- Claim: Duru · note.read
- Application · verified context
- Request henüz yok
- Resource · server metadata
- note-atlas-01 · private
- Dış girdi server’a ulaştı
Request arrival yalnız submitted claim’in alındığını gösterir. Application, client’ın actor ve tenant etiketlerini kendi doğrulanmış context’i yerine koymaz.
- Browser · submitted claim
- Karar bekliyor
- Application · verified context
- Claim alındı; verification ayrı
- Resource · server metadata
- Body henüz verilmedi
- Principal context server’da kurulur
Bu fixture’da server Duru principal’ını doğrulamıştır; active tenant context’i Atlas olarak belirlenmiştir. Authentication, bu note’u okumaya izin çıktığı anlamına gelmez.
- Browser · submitted claim
- Karar bekliyor
- Application · verified context
- Verified: Duru / Atlas
- Resource · server metadata
- Body henüz verilmedi
- Object context’in kaynağı farklıdır
Öğretim fixture’ında note metadata’sı server authority’sine aittir: owner Duru, tenant Atlas. Bu kart gerçek discovery veya packet capture değildir; browser claim’i metadata’yı değiştirmez.
- Browser · submitted claim
- Karar bekliyor
- Application · verified context
- Principal hazır; policy bekliyor
- Resource · server metadata
- Owner: Duru · tenant: Atlas
- Boundary’de local policy kararı
Verified principal, tenant match, owner relationship ve note.read koşulları bu fixture’da sağlanmıştır. ALLOW yalnız bu object/action/context için geçerlidir.
- Browser · submitted claim
- Response henüz gelmedi
- Application · verified context
- ALLOW · OWNER_READ
- Resource · server metadata
- Bu read için body izinli
- Sonuç browser’da, kaynak server’da
Yalnız allow branch’i private note representation taşır. Denied response karar sonucunu taşır. Production response detayları bilgi sızıntısı riskine göre ayrıca tasarlanır.
- Browser · submitted claim
- İzinli note representation alındı
- Application · verified context
- ALLOW · OWNER_READ
- Resource · server metadata
- note-atlas-01 server’da korunur
- Risk iddiası koşul ve kanıt ister
Threat olası zarar verici durumu anlatır. Vulnerability bir control zayıflığıdır; bu korumalı model o zayıflığı uygulamaz. Impact için gerçekten hangi asset’in nasıl etkilendiği gerekir. ALLOW/DENY trace tek başına bütün bunları kanıtlamaz.
- Browser · submitted claim
- Beklenen izinli sonuç
- Application · verified context
- Audit: OWNER_READ; secret yok
- Resource · server metadata
- Asset kapsamı: private note
Claim doğrulanmadı · deny
- Claim ile authority’yi ayır
Private note body bir asset’tir. Browser note.read ister ve Duru etiketi gösterir. Bu etiket doğrulanmış principal veya resource permission değildir.
- Browser · submitted claim
- Claim: Duru · note.read
- Application · verified context
- Request henüz yok
- Resource · server metadata
- note-atlas-01 · private
- Dış girdi server’a ulaştı
Request arrival yalnız submitted claim’in alındığını gösterir. Application, client’ın actor ve tenant etiketlerini kendi doğrulanmış context’i yerine koymaz.
- Browser · submitted claim
- Karar bekliyor
- Application · verified context
- Claim alındı; verification ayrı
- Resource · server metadata
- Body henüz verilmedi
- Principal context server’da kurulur
Bu fixture’da submitted Duru assertion’ı doğrulanmamıştır. Authoritative principal yoktur; isim eşleşmesi bu eksikliği tamamlamaz.
- Browser · submitted claim
- Karar bekliyor
- Application · verified context
- Verified principal: yok
- Resource · server metadata
- Body henüz verilmedi
- Object context’in kaynağı farklıdır
Öğretim fixture’ında note metadata’sı server authority’sine aittir: owner Duru, tenant Atlas. Bu kart gerçek discovery veya packet capture değildir; browser claim’i metadata’yı değiştirmez.
- Browser · submitted claim
- Karar bekliyor
- Application · verified context
- Principal yok; deny bekliyor
- Resource · server metadata
- Owner: Duru · tenant: Atlas
- Boundary’de local policy kararı
Eksik koşul nedeniyle DENY. Protected body verilmez. Denial local evaluation’dır; her policy kontrolüne bir network transfer çizilmez.
- Browser · submitted claim
- Response henüz gelmedi
- Application · verified context
- DENY · VERIFIED_PRINCIPAL_REQUIRED
- Resource · server metadata
- Protected body withheld
- Sonuç browser’da, kaynak server’da
Yalnız allow branch’i private note representation taşır. Denied response karar sonucunu taşır. Production response detayları bilgi sızıntısı riskine göre ayrıca tasarlanır.
- Browser · submitted claim
- Denial alındı; note body yok
- Application · verified context
- DENY · VERIFIED_PRINCIPAL_REQUIRED
- Resource · server metadata
- note-atlas-01 server’da korunur
- Risk iddiası koşul ve kanıt ister
Threat olası zarar verici durumu anlatır. Vulnerability bir control zayıflığıdır; bu korumalı model o zayıflığı uygulamaz. Impact için gerçekten hangi asset’in nasıl etkilendiği gerekir. ALLOW/DENY trace tek başına bütün bunları kanıtlamaz.
- Browser · submitted claim
- Beklenen korumalı denial
- Application · verified context
- Audit: VERIFIED_PRINCIPAL_REQUIRED; secret yok
- Resource · server metadata
- Asset kapsamı: private note
Verified foreign tenant · deny
- Claim ile authority’yi ayır
Private note body bir asset’tir. Browser note.read ister ve Duru etiketi gösterir. Bu etiket doğrulanmış principal veya resource permission değildir.
- Browser · submitted claim
- Claim: Duru · note.read
- Application · verified context
- Request henüz yok
- Resource · server metadata
- note-atlas-01 · private
- Dış girdi server’a ulaştı
Request arrival yalnız submitted claim’in alındığını gösterir. Application, client’ın actor ve tenant etiketlerini kendi doğrulanmış context’i yerine koymaz.
- Browser · submitted claim
- Karar bekliyor
- Application · verified context
- Claim alındı; verification ayrı
- Resource · server metadata
- Body henüz verilmedi
- Principal context server’da kurulur
Bu fixture’da server Duru principal’ını doğrulamıştır; active tenant context’i Orion olarak belirlenmiştir. Authentication, bu note’u okumaya izin çıktığı anlamına gelmez.
- Browser · submitted claim
- Karar bekliyor
- Application · verified context
- Verified: Duru / Orion
- Resource · server metadata
- Body henüz verilmedi
- Object context’in kaynağı farklıdır
Öğretim fixture’ında note metadata’sı server authority’sine aittir: owner Duru, tenant Atlas. Bu kart gerçek discovery veya packet capture değildir; browser claim’i metadata’yı değiştirmez.
- Browser · submitted claim
- Karar bekliyor
- Application · verified context
- Principal hazır; policy bekliyor
- Resource · server metadata
- Owner: Duru · tenant: Atlas
- Boundary’de local policy kararı
Eksik koşul nedeniyle DENY. Protected body verilmez. Denial local evaluation’dır; her policy kontrolüne bir network transfer çizilmez.
- Browser · submitted claim
- Response henüz gelmedi
- Application · verified context
- DENY · TENANT_MISMATCH
- Resource · server metadata
- Protected body withheld
- Sonuç browser’da, kaynak server’da
Yalnız allow branch’i private note representation taşır. Denied response karar sonucunu taşır. Production response detayları bilgi sızıntısı riskine göre ayrıca tasarlanır.
- Browser · submitted claim
- Denial alındı; note body yok
- Application · verified context
- DENY · TENANT_MISMATCH
- Resource · server metadata
- note-atlas-01 server’da korunur
- Risk iddiası koşul ve kanıt ister
Threat olası zarar verici durumu anlatır. Vulnerability bir control zayıflığıdır; bu korumalı model o zayıflığı uygulamaz. Impact için gerçekten hangi asset’in nasıl etkilendiği gerekir. ALLOW/DENY trace tek başına bütün bunları kanıtlamaz.
- Browser · submitted claim
- Beklenen korumalı denial
- Application · verified context
- Audit: TENANT_MISMATCH; secret yok
- Resource · server metadata
- Asset kapsamı: private note
ROLLER · STATE · VERİ AKIŞI
Public kitap, private not
Atlas Notları’nın public kitap başlığı herkes tarafından okunabilir. Aynı application’da Duru’ya ait note-atlas-01 adlı editorial note private’tır. Asset, korunması değerli bir şeydir: burada private notun içeriği, kimin owner olduğunun doğruluğu ve yapılan read işleminin doğru actor’a bağlanması. Yalnız password veya secret key’ler asset değildir; iş kaydı, erişilebilir hizmet ve güvenilir audit de değer taşıyabilir.
Her asset için korunacak özellik açık olmalıdır. Private note body için confidentiality, owner metadata için integrity, note hizmeti için availability önemlidir. Public title’ın confidentiality beklentisi farklıdır. Bütün veriye aynı “secret” etiketi yapıştırmak işlevi ve gerekli kontrolü belirsizleştirir.
Threat, weakness, vulnerability, impact
Threat, olumsuz sonuca yol açabilecek durum veya olaydır. “Private notun entitlement dışındaki bir actor’a sunulması” bir threat ifadesidir; bunu gerçekleştirebilecek kişi veya başka kaynak threat source olabilir. Weakness, tasarım/uygulama kusuru sınıfını anlatabilir: trusted authorization eksikliği gibi. Vulnerability ise belirli sistemde threat’in kullanabildiği veya tetikleyebildiği zayıflıktır. Kaynak sözlükler bu sözcükleri farklı genişlikte kullanabilir; burada sınıf ile somut sistem durumunu ayırmak için bu çalışma ayrımını kullanıyoruz.
Impact, gerçekleştiğinde asset’e ve işe gelen sonuçtur: private note’un yetkisiz okunması confidentiality kaybıdır. Daha geniş etki için hangi notların, hangi kişilerin ve hangi downstream işin etkilendiği gerekir. Risk değerlendirmesi bu impact’i ve gerçekleşme olasılığına ilişkin gerekçeyi birlikte ele alır. Bu bilgiler olmadan yalnız bir CWE etiketiyle “bütün sistem kritik” sonucu çıkmaz.
Güvenilen varsayımı yaz
Normal note.read akışında browser hedefi seçer; application server doğrulanmış principal ve aktif tenant context’i kurar. Note’un ownerId ve tenantId alanları server metadata’sıdır. Beklenen kural, bu private örnekte verified actor + aynı tenant + owner match koşullarından sonra body’nin verilmesidir. Duru’nun kendisini UI’da owner olarak seçmesi bu üç koşulu kanıtlamaz.
Trust boundary, farklı güven varsayımları veya otoriteler arasında geçiştir; mutlaka ayrı fiziksel ağ değildir. Browser’dan application’a gelen actor etiketi bir iddiadır. Server authentication sonucuyla kurulan principal ayrı bir girdidir. Storage record’ının owner metadata’sı da başka otoriteye sahiptir. Kontrol hangi kaynağı hangi karar için kabul ettiğini açıkça tanımlar.
Kontrol, kanıt ve artık kapsam
Kontrol application’ın trusted service layer’ında note.read kararını enforce eder. Unverified principal deny olur; foreign tenant deny olur; verified own-note allow olur. Bu öğretim matrisi ne olması gerektiğini belirtir. Gerçek vulnerability iddiası için uygulamanın hangi kuralı uyguladığı ve gerçekten hangi private veriyi dışarı verdiği ayrıca gözlenmelidir.
HTTPS notun taşınmasını koruyabilir ama note entitlement’ını değerlendirmez. UI’da butonun görünmemesi veya browser’ın “erişim engellendi” göstermesi de trusted enforcement’ın yerine geçmez. Korunan body başka bir response alanında, cache veya download yolunda çıkıyorsa ana ekranın kontrolü yeterli kalmayabilir; daha ayrıntılı authorization dersinde bu yolları inceleyeceğiz.
2. Red · Güven ve etki
Hareket olmadan bütün senaryoları oku
Owner erişimi
- Asset ve özellik tanımlandı
Korunan değer note-atlas-01 private body’sidir; protectedProperty confidentiality’dir. Görünür bir title veya isim etiketi private body’nin çıktığına kanıt değildir.
- Principal beyanı
- note.read / Duru
- Trusted policy gate
- Karar yok
- Private asset
- note-atlas-01 / private
- Principal otoritesi incelendi
VERIFIED_OWN girdisi principalVerified=true ve verifiedContextTenant=atlas verir; bunlar server-side model koşullarıdır.
- Principal beyanı
- note.read / Duru
- Trusted policy gate
- Verified Duru / atlas
- Private asset
- note-atlas-01 / private
- Object metadata’sı ayrı kaynaktır
ownerId=duru ve tenantId=atlas private asset’in authoritative metadata’sıdır. Client’in kendisini owner diye tanımlaması bu değerlerin kaynağını değiştirmez.
- Principal beyanı
- note.read / Duru
- Trusted policy gate
- Verified Duru / atlas
- Private asset
- owner=duru / tenant=atlas
- Control kararın önünde çalışır
Verified principal, tenant ve owner koşulları uyumludur; OWNER_READ allow beklenir. Meşru owner işlevi bir threat gerçekleşmesi değildir.
- Principal beyanı
- note.read / Duru
- Trusted policy gate
- ALLOW / OWNER_READ
- Private asset
- owner=duru / tenant=atlas
- Body sınırı sonucu uyguladı
protectedBodyDelivered=true bu case’in beklenen model sonucudur. Asset alanı ile decision alanı ayrı kontrol edilir; gerçek application finding’i bu modelden çıkarılmaz.
- Principal beyanı
- note.read / Duru
- Trusted policy gate
- ALLOW / OWNER_READ
- Private asset
- Body: owner kapsamı
- Impact yalnız kanıtlanan özelliktir
Gate private body’yi entitlement dışına çıkarmayı önler. Varsayımsal read disclosure confidentiality etkisidir; mutation veya hizmet kesintisi ölçülmeden integrity/availability sonucu eklenmez.
- Principal beyanı
- note.read / Duru
- Trusted policy gate
- Confidentiality gate korunuyor
- Private asset
- Body: owner kapsamı
Kimlik eksik
- Asset ve özellik tanımlandı
Korunan değer note-atlas-01 private body’sidir; protectedProperty confidentiality’dir. Görünür bir title veya isim etiketi private body’nin çıktığına kanıt değildir.
- Principal beyanı
- note.read / Duru
- Trusted policy gate
- Karar yok
- Private asset
- note-atlas-01 / private
- Principal otoritesi incelendi
UNVERIFIED_ACTOR principalVerified=false ve verifiedContextTenant=null verir. actorId=duru yazısı server-verified principal yerine geçmez.
- Principal beyanı
- note.read / Duru
- Trusted policy gate
- Verification yok
- Private asset
- note-atlas-01 / private
- Object metadata’sı ayrı kaynaktır
ownerId=duru ve tenantId=atlas private asset’in authoritative metadata’sıdır. Client’in kendisini owner diye tanımlaması bu değerlerin kaynağını değiştirmez.
- Principal beyanı
- note.read / Duru
- Trusted policy gate
- Verification yok
- Private asset
- owner=duru / tenant=atlas
- Control kararın önünde çalışır
Verification önkoşulu yoktur; VERIFIED_PRINCIPAL_REQUIRED deny beklenir. Body release karardan sonra gelir, UI görünümünden türetilmez.
- Principal beyanı
- note.read / Duru
- Trusted policy gate
- DENY / VERIFIED_PRINCIPAL_REQUIRED
- Private asset
- owner=duru / tenant=atlas
- Body sınırı sonucu uyguladı
protectedBodyDelivered=false bu case’in beklenen model sonucudur. Asset alanı ile decision alanı ayrı kontrol edilir; gerçek application finding’i bu modelden çıkarılmaz.
- Principal beyanı
- note.read / Duru
- Trusted policy gate
- DENY / VERIFIED_PRINCIPAL_REQUIRED
- Private asset
- Body withheld
- Impact yalnız kanıtlanan özelliktir
Gate private body’yi entitlement dışına çıkarmayı önler. Varsayımsal read disclosure confidentiality etkisidir; mutation veya hizmet kesintisi ölçülmeden integrity/availability sonucu eklenmez.
- Principal beyanı
- note.read / Duru
- Trusted policy gate
- Confidentiality gate korunuyor
- Private asset
- Body withheld
VARSAYIM · SINIR · KONTROL
Koşulları kurmadan vulnerability deme
Private note okunurken necessary entitlement owner/tenant kuralıdır. Bozulabilecek varsayım, browser’ın kendi actor beyanının trusted principal yerine kullanılmasıdır. Bu bir tasarım incelemesi sorusudur; belirli bir uygulamada bu beyanın kabul edildiğine dair kanıt yoksa confirmed vulnerability diye yazılmaz.
Örnekte UNVERIFIED_ACTOR senaryosuna deny beklenir. Sonuç allow olursa karar girdisinin kaynağı ve private body çıkışı birlikte incelenir. Görünümün title göstermesi private note’un gerçekten çıkmasıyla aynı değildir. Doğrulanacak asset ve çıktı alanı açık kalır.
Impact sınırını genişletme
Own-note allow, işlevin olması gerektiği gibi çalışmasıdır; threat’in gerçekleşmesi değildir. Foreign tenant deny da engelleyici policy örneğidir. Private note’un entitlement dışında çıktığı gözlense bile buradan owner metadata’nın değiştiği veya bütün tenant’ın verisinin okunduğu sonucu otomatik çıkmaz.
Confidentiality, integrity ve availability etkileri ayrı kanıt ister. Read exposure confidentiality’yi gösterebilir; mutation olmadan integrity loss, hizmet ölçümü olmadan availability loss iddia etme. “Olası” ile “gözlenen” kelimeleri bulgunun kapsamını taşır.
Kontrolün hangi tehdidi azalttığını belirt
Trusted principal kontrolü yanlış kimlik iddiasını kararın otoritesi yapmayı engeller. Tenant/ownership kontrolü protected body’nin entitlement dışına verilmesini sınırlar. Output projection, izinli response’ta private alanın yanlışlıkla bulunmasını azaltır. Bu kontroller farklı hataları ele alır; birinin bulunması diğerinin işlendiği kanıtı değildir.
Tehdit modelindeki bu karşılaştırma normal permission mantığıdır. Application’ın actor/resource ilişkisini verilen cases üzerinden değerlendirir; harici hedefler, credential edinme veya enumeration işlemleri gerektirmez.
3. Blue · Güvenli geliştirme ve savunma
Hareket olmadan bütün senaryoları oku
Negative control
- Threat record olay değildir
TR-NOTE-01 boundary, assumption, candidateWeakness ve controlOwner tanımlar. vulnerabilityStatus=not-claimed-for-real-system olduğu için bu record doğrulanmış vulnerability veya gerçekleşmiş disclosure değildir.
- Threat record
- Hypothesis / confidentiality
- Policy beklentisi
- Observation yok
- Output incelemesi
- Sonuç yok
- Beklenen denial seçildi
UNVERIFIED_ACTOR için beklenen karar deny’dır; gerekçesi VERIFIED_PRINCIPAL_REQUIRED olur. Protected body’nin verilmemesi de aynı kontrolün beklentisidir. Bu satır olması gereken sonucu tanımlar, gerçekleşmiş bir observation değildir.
- Threat record
- Hypothesis / confidentiality
- Policy beklentisi
- Expected: deny / body=false
- Output incelemesi
- Sonuç yok
- Kararı üretecek alanlar belirlendi
Case matrisi principalVerified, verifiedContextTenant ve asset’in ownerId/tenantId alanlarından beklenen deny kararını tanımlar. Bunlar çalışma anında üretilmiş audit kayıtları değildir. Gerçek doğrulamada application-service’in bu girdileri güvenilir kaynaktan aldığı ve VERIFIED_PRINCIPAL_REQUIRED kararını ürettiği ayrıca gözlenmelidir.
- Threat record
- Hypothesis / confidentiality
- Policy beklentisi
- Expected: deny / VERIFIED_PRINCIPAL_REQUIRED
- Output incelemesi
- Sonuç yok
- Protected output ayrı incelendi
Case matrisi protectedBodyDelivered=false bekler. Deny kararı ile private body’nin verilmemesi aynı kontrolün iki ayrı beklentisidir. Runtime’ı doğrulamak için karar kaydı kadar response’daki korunan alanların teslim kapsamı da incelenir; private body audit’e kopyalanmaz.
- Threat record
- Hypothesis / confidentiality
- Policy beklentisi
- Expected: deny / VERIFIED_PRINCIPAL_REQUIRED
- Output incelemesi
- Expected: protectedBodyDelivered=false
- Kontrol owner’ına doğru soru yöneldi
application-service aynı control’ın VERIFIED_OWN allow işlevini korumalı, UNVERIFIED_ACTOR ve OTHER_TENANT deny sonuçlarını da tutmalıdır. Bütün erişimi kapatmak başarılı regression sayılmaz.
- Threat record
- Owner allow + iki deny korunmalı
- Policy beklentisi
- Expected: deny / VERIFIED_PRINCIPAL_REQUIRED
- Output incelemesi
- Expected: protectedBodyDelivered=false
- Finding ile bilinmeyen ayrıldı
UNVERIFIED_ACTOR satırında deny ve protectedBodyDelivered=false beklentileri tutarlıdır. Bu, çalışan bir sistemde kontrolün doğrulandığı veya disclosure yaşandığı anlamına gelmez. Gerçek doğrulamada owner’ın normal erişimi ile doğrulanmamış principal ve farklı tenant’ın reddi birlikte ölçülmelidir.
- Threat record
- Owner allow + iki deny korunmalı
- Policy beklentisi
- Expected: deny / VERIFIED_PRINCIPAL_REQUIRED
- Output incelemesi
- Beklentiler tutarlı; runtime ölçülmedi
Output kanıtı yok
- Threat record olay değildir
TR-NOTE-01 boundary, assumption, candidateWeakness ve controlOwner tanımlar. vulnerabilityStatus=not-claimed-for-real-system olduğu için bu record doğrulanmış vulnerability veya gerçekleşmiş disclosure değildir.
- Threat record
- Hypothesis / confidentiality
- Policy beklentisi
- Observation yok
- Output incelemesi
- Sonuç yok
- Beklenen denial seçildi
UNVERIFIED_ACTOR için beklenen karar deny’dır; gerekçesi VERIFIED_PRINCIPAL_REQUIRED olur. Protected body’nin verilmemesi de aynı kontrolün beklentisidir. Bu satır olması gereken sonucu tanımlar, gerçekleşmiş bir observation değildir.
- Threat record
- Hypothesis / confidentiality
- Policy beklentisi
- Expected: deny / body=false
- Output incelemesi
- Sonuç yok
- Kararı üretecek alanlar belirlendi
Case matrisi principalVerified, verifiedContextTenant ve asset’in ownerId/tenantId alanlarından beklenen deny kararını tanımlar. Bunlar çalışma anında üretilmiş audit kayıtları değildir. Gerçek doğrulamada application-service’in bu girdileri güvenilir kaynaktan aldığı ve VERIFIED_PRINCIPAL_REQUIRED kararını ürettiği ayrıca gözlenmelidir.
- Threat record
- Hypothesis / confidentiality
- Policy beklentisi
- Expected: deny / VERIFIED_PRINCIPAL_REQUIRED
- Output incelemesi
- Sonuç yok
- Protected output ayrı incelendi
Bu dal protected field delivery gözlemini sunmaz. Matrisin beklediği deny kararı gerçek bir decision kaydının yerine geçmez; private body’nin response’a dahil edilmediği de ayrıca gözlenmelidir.
- Threat record
- Hypothesis / confidentiality
- Policy beklentisi
- Expected: deny / VERIFIED_PRINCIPAL_REQUIRED
- Output incelemesi
- UNKNOWN: delivery
- Kontrol owner’ına doğru soru yöneldi
application-service aynı control’ın VERIFIED_OWN allow işlevini korumalı, UNVERIFIED_ACTOR ve OTHER_TENANT deny sonuçlarını da tutmalıdır. Bütün erişimi kapatmak başarılı regression sayılmaz.
- Threat record
- Owner allow + iki deny korunmalı
- Policy beklentisi
- Expected: deny / VERIFIED_PRINCIPAL_REQUIRED
- Output incelemesi
- UNKNOWN: delivery
- Finding ile bilinmeyen ayrıldı
Beklenen deny kararı var; gerçek decision kaydı ve body teslim kapsamı yok. Confidentiality sonucu UNKNOWN kalır. Application-service’in kararını ve ilgili response alanlarını aynı işlemle ilişkilendirmeden ne disclosure ne tam koruma sonucu çıkarılır.
- Threat record
- Owner allow + iki deny korunmalı
- Policy beklentisi
- Expected: deny / VERIFIED_PRINCIPAL_REQUIRED
- Output incelemesi
- UNKNOWN: confidentiality outcome
UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA
Threat record bir olay kaydı değildir
Artifact’in threat record’ı asset, boundary, varsayım, olası weakness, control ve beklenen observation’ı birleştirir. Bu gelecekte oluşabilecek koşulları düşünme aracıdır. Decision event ise çalışan application’ın belirli request için verdiği sonucu gösterir. İkisinin adı, zamanı ve kanıt kapsamı ayrı tutulur.
Atlas örneğinde requestId, server-verified actor, active tenant, object metadata ve decision/reason ilişkilendirilir. Bu custom alanlar uygulamanın şemasıdır. Private note body’sini audit’e kopyalamak yerine alan sınıfı ve delivered-field kontrolü kaydedilebilir; credential değerleri correlation aracı yapılmaz.
Beklenen allow, beklenen deny, bilinmeyen
VERIFIED_OWN allow + note body normal positive örnektir. UNVERIFIED_ACTOR deny + protected body yokluğu ve OTHER_TENANT deny aynı policy’nin negative kontrolleridir. Beklenen denial güvenli bir sonuç olabilir; bir kullanıcı rolünün kaldırılması gibi benign değişikliklerle oluşabilir. Alarm için her denial’ı ihlal saymak gereksiz gürültü üretir.
Actor verification veya object tenant alanı eksikse kararın dayanağı bilinmez. Event deny dediği halde output ölçülmemişse veri çıkmadığı sonucuna ulaşamazsın. Bu boşluğu “control var” diye doldurmak yerine ilgili gözlem noktasını ekle: trusted decision ve delivered protected field birlikte değerlendirilir.
Review ve regression neyi kapatır?
Threat record’daki control owner, beklenen positive/negative cases’i uygulama değişikliğinden sonra yeniden değerlendirir. Verified own erişim korunur; missing verification ve foreign tenant deny kalır; protected output deny sonrasında çıkmaz. Böylece kontrolü her şeyi kapatarak yeşile çevirmek yerine intended işlevi de korursun.
Yeni endpoint, cache, role veya resource class eklendiğinde varsayım değişebilir. Modeli güncelle ve mevcut kontrolün hâlâ aynı boundary’de çalıştığını doğrula. Kayıtlı olasılık ve impact gerekçesi yoksa risk’e sayısal değer uydurma; belirsizlik ve gereken kanıtı açık yaz.
Private note’u döndüren application kodunda principal ve active tenant’ı doğrulanmış server context’inden, owner/tenant alanlarını ise authoritative object metadata’sından al. Browser’ın actor veya tenant etiketi bu değerlerin yerine geçmez. Aynı note’a açılan her entry point, note body’sini hazırlamadan önce bu ilişkiyi kontrol etsin; required context eksikse protected body üretmesin. UI’da düğmeyi gizlemek veya note ID’sini zor tahmin edilir yapmak bu kararı uygulamaz. VERIFIED_OWN yolunun çalışması ve diğer iki yolda body’nin çıkmaması, bu uygulama kararının birlikte korunması gereken sonuçlarıdır.
ŞİMDİ VAKAYA UYGULA
Private not verilmeden önce hangi varsayım doğrulanmalı?
note-atlas-01, Duru’nun Atlas tenant’ındaki private notudur. Body çıkmadan önce trusted principal ve ownership kontrolü gerekir. Threat record bu koşulları ve olası etkiyi tanımlar; gerçekleşmiş bir olayı göstermez.
Bağlı vakadaki korunan raporu bu dersin private notuyla karşılaştır. Bir identity’nin doğrulanması tek başına hangi nesneye erişebileceğini söylemez. Claim doğrulanmadığında DENY dalını, doğrulandığında ise ownership ve permission için gereken ayrı kanıtı açıkla.
Bağlı vaka dosyasını aç ↗ÖRNEĞİ BİRLİKTE OKUYALIM
Private note threat record ve kontrol matrisi
Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.
Ham kaydı ve alan açıklamalarını oku
{
"system": "atlas-editorial-note",
"asset": {
"id": "note-atlas-01",
"ownerId": "duru",
"tenantId": "atlas",
"classification": "private",
"protectedProperty": "confidentiality"
},
"threatRecord": {
"id": "TR-NOTE-01",
"threat": "private note body disclosed outside entitlement",
"boundary": "browser assertion to trusted application context",
"assumption": "principal and tenant are verified server-side; object metadata is authoritative",
"candidateWeakness": "missing trusted resource authorization",
"vulnerabilityStatus": "not-claimed-for-real-system",
"conditionalImpact": "confidentiality loss of delivered private note; no proven mutation or service disruption",
"controlOwner": "application-service",
"control": "verified principal, tenant and owner policy before note body release"
},
"cases": [
{
"caseId": "VERIFIED_OWN",
"actorId": "duru",
"principalVerified": true,
"verifiedContextTenant": "atlas",
"objectId": "note-atlas-01",
"action": "note.read",
"expected": {
"decision": "allow",
"reason": "OWNER_READ",
"protectedBodyDelivered": true
}
},
{
"caseId": "UNVERIFIED_ACTOR",
"actorId": "duru",
"principalVerified": false,
"verifiedContextTenant": null,
"objectId": "note-atlas-01",
"action": "note.read",
"expected": {
"decision": "deny",
"reason": "VERIFIED_PRINCIPAL_REQUIRED",
"protectedBodyDelivered": false
}
},
{
"caseId": "OTHER_TENANT",
"actorId": "duru",
"principalVerified": true,
"verifiedContextTenant": "orion",
"objectId": "note-atlas-01",
"action": "note.read",
"expected": {
"decision": "deny",
"reason": "TENANT_MISMATCH",
"protectedBodyDelivered": false
}
}
],
"evidenceRequired": [
"trusted principal verification",
"authoritative object owner/tenant",
"decision with reason",
"protected field delivery observation"
]
}- asset / protectedProperty
- Korunan değer ve beklenen güvenlik özelliği.
- candidateWeakness / vulnerabilityStatus
- İncelenecek kusur varsayımı; gerçek sistem vulnerability kanıtı değildir.
- conditionalImpact
- Yalnız belirtilen olay gerçekleşirse gelen etki; başka impact sınıfları eklenmez.
- principalVerified / verifiedContextTenant
- Server-side öğretim girdileri; client actor etiketiyle aynı otorite değil.
- expected / evidenceRequired
- Olması gereken karar ve gözlenecek kanıt; observed runtime sonucu ayrıca tutulur.
İnert sentetik threat record; gerçek vulnerability finding, risk score veya production event değil. Seçilmiş üç normal policy case’i gösterir; tam membership/concurrency/output-path modeli değildir.
İki yanlış kanı
Bir threat listelendiyse uygulamada confirmed vulnerability vardır.
Threat olası olumsuz koşulu tarif eder. Somut vulnerability için sistemdeki zayıflık, gerekli koşullar ve kontrol davranışı ayrıca kanıtlanır.
HTTPS kullanılıyorsa private note’un authorization’ı da çözülmüştür.
TLS taşıma kanalını korur. Belirli actor’ın private note’u okumaya yetkisi trusted application policy’siyle ayrıca belirlenir.
SIRA SENDE
Bu hikâyeyi sen çöz.
Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.
Browser Duru adını bildiriyor, fakat principalVerified=false. Private note body bu bilgiyle açılır mı?
- Hayır. VERIFIED_PRINCIPAL_REQUIRED ile delivery durur.
- Evet. Owner adı ile görünen adın eşleşmesi yeterli.
Gerekçeli cevabı oku
Hayır. VERIFIED_PRINCIPAL_REQUIRED ile delivery durur. — Owner adı eşleşse de güvenilen identity kurulmamıştır. Bu policy protected body’yi teslim etmez.
Bu threat kaydı gerçek sistem hakkında hangi sonuca izin verir?
Dersten seçilen artifact alanları; öğretim örneği
- threatRecord.vulnerabilityStatus
- not-claimed-for-real-system
- threatRecord.conditionalImpact
- confidentiality loss of delivered private note; no proven mutation or service disruption
- Koşullu confidentiality kaybını anlatır; gerçek vulnerability doğrulamaz.
- Private note threat’i bütün servisin compromise olduğunu kanıtlar.
Gerekçeli cevabı oku
Koşullu confidentiality kaybını anlatır; gerçek vulnerability doğrulamaz. — Status not-claimed-for-real-system. Mutation ve disruption hakkında da kanıt verilmemiştir.
Private note için asset, korunan özellik, control owner ve gereken gözlemi dört ayrı cümleyle açıkla.
Gerekçeli cevabı oku
Asset note-atlas-01’dir; korunan özellik confidentiality’dir. Application, note body çıkmadan doğrulanmış principal, tenant ve owner koşullarını değerlendirmelidir. Decision/reason yanında gerçekten hangi protected field’ların teslim edildiği gözlenmelidir. Sentetik expected sonuç, runtime gözlemi sayılmaz.
□ Asset ile güvenlik özelliğini ayrı tanımladım.
□ Kontrolü uygulayan owner ve delivery kanıtını belirttim.
Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç
Kaynaklar ve kapsam
- NIST CSRC Glossary — assetDefinitions
- NIST CSRC Glossary — threatFIPS 200 / SP 800-30 definitions
- NIST CSRC Glossary — vulnerabilityFIPS 200 / SP 800-30 definitions
- NIST CSRC Glossary — impactDefinitions
- NIST CSRC Glossary — riskDefinitions
- MITRE CWE GlossaryWeakness · Vulnerability
- OWASP Threat Modeling Cheat SheetSystem Modeling · Threat Identification · Response and Mitigations · Review and Validation
- OWASP Authorization Cheat SheetIntroduction · Validate the Permissions on Every Request · Verify that Authorization Checks are Performed in the Right Location
- RFC 8446 — TLS 1.31 Introduction
- OWASP Logging Cheat SheetEvent data sources · Event attributes · Data to exclude · Verification