Hacker DirectoryHacker Directory
Öğrenmeye devam et
ENHTML kaydet ↓

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.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mekanizma

Hareket olmadan bütün senaryoları oku

Verified own context · allow

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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ı
  6. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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ı?

  1. Hayır. VERIFIED_PRINCIPAL_REQUIRED ile delivery durur.
  2. 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
  1. Koşullu confidentiality kaybını anlatır; gerçek vulnerability doğrulamaz.
  2. 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