Modern Tarayıcı Güvenliği - Suborigins

Merhabalar,

SOP(Same Origin Policy) kavramıyla ilgili okuma yaparken W3C Websec içeriğinde yeni bir güvenlik yaklaşımı olan Suborigin ile karşılaştım. Suborigin, SOP(Same Origin Policy) mekanızmasına ek olarak güvenlik sağlaması için ortaya konmuş bir özellik ve bu şekilde tek bir kaynak üzerinde birden fazla farklı eklentiyi ayırıp etkileşim sağlayabiliyoruz.

En basit anlatımla, SOP(Same Origin Policy) kavramında Şema/Host/Port gibi özellikler dikkate alınarak tarayıcılar tarafından uygulamaya geçiliyor. Bu özellikten dolayı http://www.google.com/ ve https://www.google.com arasında bir iletişim kuramıyoruz vb gibi. SOP(Same Origin Policy) için daha detaylı okumalar yapılabilir ama ana konumuz bu değil.

Fakat şöyle bir senaryomuz olsun.

Suborigins olmayan bir dünyada, web uygulaması içerisinde bir dosya yükleme alanımız var ve bu alanı kullanarak https://www.google.com/upload klasörüne dosya yükleyebiliyoruz diyelim. Eğer bu alanda yüklenen bir dosyadan ötürü bir XSS zafiyeti tetiklenebilirse, https://www.google.com alanadı da bu durumdan etkilenebilir. SOP buna izin veriyor.

Böyle bir durumda Suborigins bize sağlıklı bir çözüm sunmakta. Eğer upload klasörü için bir "Suborigin: upload" tanımlarsak https://www.google.com tam yetkiyle alt yollara erişebilse bile, upload üzerine yüklenen zararlı içerik ana alan adı kaynağındaki document.cookie değerine erişemiyor.

Örnek Başlık bilgisi aşağıdaki gibidir :

GET /upload/
Suborigin: upload 

Ayrıca bütün alt yolları https://www.google.com/upload için upload alt yolu Suborigin: upload ve digeruygulama alt yolu Suborigin: digeruygulama gibi tanımlanırsa yine politika gereği birbirinden izole edebiliyoruz. Fakat şunu da unutmamak gerekiyor. Ana alan adından(https://www.google.com) alt yollara olan tam yetki nedeniyle, oluşabilecek herhangi bir kötü senaryoda bütün alt yollar etkilenecektir. Akış şeması aşağıdaki gibidir:

Suborigins
Kırmızı - Erişim yok, Yeşil - Erişim var anlamını taşımaktadır.

Bu özelliğin tüm internet tarayıcılarında kullanıldığında gerçekten bir CSP SameSiteCookie özelliği kadar ses getireceğine inanıyorum.Tam olarak bitmemiş bir spesifikasyon olduğu için https://github.com/w3c/webappsec-suborigins/ üzerinden bu özelliğin içeriğine katkıda bulunabilirsiniz.