İçeriğe geç

4.2 · Seviye 0 · Dijital Dünyanın Temelleri

Tarayıcı ne yapar?

sayfayı çizmek, betik çalıştırmak ve aynı köken politikası

Siber Güvenlik Akademisi — M04, İnternet ve Web · 1.832 kelime · 3 saha durumu · ≈ 8 dk okuma · 12 dk dinleme

Saha durumlarındaki kişiler ve kurumlar kurgusaldır; kaynaklar gerçektir. Bu akademi savunma odaklıdır: saldırılar mekanizma düzeyinde anlatılır, adım adım saldırı tarifi verilmez. Uygulamalar yalnız kendi cihazında, kendi hesabında ya da yalıtılmış bir laboratuvarda yapılır; başkasının sistemine izinsiz erişim suçtur. Dersler hukuki danışmanlığın yerini tutmaz.

Açılış

Nilüfer Hanım'ın bilgisayarında iki sekme açıktı. Birinde e-posta hesabı vardı; sabah giriş yapmış, sonra kapatmayı unutmuştu. Öbüründe bir arkadaşının gönderdiği bir çekiliş sitesi açıktı: renkli, hareketli, sürekli bir şeyler kazandığını söyleyen bir sayfa. Nilüfer Hanım sayfayı kapattı, ama aklına bir soru takıldı ve Ece'yi aradı: o sayfa açıkken, yan sekmedeki e-postalarını okuyabilir miydi?

Ece sorunun çok yerinde olduğunu söyledi. Her web sayfası tarayıcının içinde çalışan küçük bir program taşıyordu ve o çekiliş sayfası da bir program çalıştırmıştı. Aynı tarayıcıda, aynı anda, Nilüfer Hanım'ın giriş yapmış olduğu e-posta da açıktı. Eğer tarayıcı sayfaları birbirinden ayırmasaydı, herhangi bir site, ziyaretçisinin açık olan bütün hesaplarını okuyabilirdi.

Ece anneannesini rahatlattı: tarayıcının bunu engelleyen bir kuralı vardı ve web'in güvenliği büyük ölçüde o kurala dayanıyordu. Bu ders, tarayıcının bir sayfayla ne yaptığını ve sayfaları birbirinden ayıran o sınırı anlatıyor.

Tek fikir

Tarayıcı, internetten gelen kodu senin bilgisayarında çalıştıran bir işletim sistemi gibidir. Sayfaların birbirinin verisine dokunmasını engelleyen temel sınır kökendir ve aynı köken politikası, bir sitenin başka bir sitedeki oturumunu okumasını engeller.

Nasıl çalışır

Bir önceki derste sunucunun bir isteğe yanıt verdiğini gördük. Yanıt tarayıcıya ulaştığında tarayıcının işi başlar ve bu iş, çoğu insanın sandığından çok daha büyüktür.

Önce tarayıcı gelen içeriği okur ve bir sayfa yapısı kurar: başlıklar, paragraflar, resimler, düğmeler. Sayfanın içinde başka kaynaklara bağlantılar varsa, stil dosyaları, resimler, yazı tipleri ve betikler, tarayıcı bunların her biri için ayrı bir istek gönderir. Tek bir haber sayfası açıldığında, çoğu zaman onlarca, bazen yüzlerce farklı sunucuya istek gider.

Sonra tarayıcı sayfadaki betikleri çalıştırır. Web sayfalarının etkileşimli olmasını sağlayan bu kod, çoğu zaman JavaScript dilinde yazılır ve senin bilgisayarında, senin tarayıcının içinde çalışır. Bir sayfa açtığında, o sayfanın yazarının yazdığı bir programı çalıştırmış olursun. Bu yüzden tarayıcı aslında internetteki bilinmeyen kodu çalıştıran bir ortamdır ve Modül 2'de gördüğümüz yalıtım ilkeleri burada da geçerlidir: modern tarayıcılar her siteyi ayrı süreçlerde ve kısıtlı izinlerle çalıştırır.

Ama süreçleri ayırmak tek başına yetmez. Tarayıcının bir de hangi sayfanın hangi veriye dokunabileceğine karar vermesi gerekir. Bu kararın birimi kökendir.

Nilüfer Hanım'ın sorusunun cevabı buydu. Çekiliş sayfası bir betik çalıştırabilirdi, ama o betik yan sekmedeki e-posta sayfasının içeriğini okuyamazdı; ikisi farklı kökenlerdendi. Tarayıcı, e-posta hesabına yapılan istekleri o hesabın kendi sayfasının okuyabileceği biçimde düzenliyordu.

Politikanın bir inceliği de var: okumayı engeller, ama göndermeyi her zaman engellemez. Bir sayfa başka bir kökene bir form gönderebilir ya da oradan bir resim isteyebilir ve tarayıcı bu isteklere o kökenin hatırladığı oturum bilgisini ekleyebilir. Gönderen sayfa cevabı okuyamaz, ama isteğin kendisi bir işlemi tetikleyebilir. Bu ayrıntı bir sonraki derste çerezlerle ve uygulama güvenliği seviyesinde yeniden karşımıza çıkacak.

Bu sınırın önemli bir istisnası var ve web saldırılarının büyük kısmı tam bu istisnadan doğar. Bir sayfa başka kökenlerden betik yüklediğinde, o betik yüklendiği sayfanın kökeninde çalışır. Bir alışveriş sitesi bir istatistik şirketinin betiğini kendi sayfasına eklerse, o betik alışveriş sitesinin kendi kodu gibi davranır ve sayfadaki her şeyi görebilir. Kökenin sınırı dışarıyı içeriden ayırır; içeriye davet edilen kod ise artık içeridedir.

Aynı mantık bir saldırının da temelidir: bir saldırgan bir sitenin kendi sayfasına kendi betiğini yerleştirebilirse, o betik sitenin kökeninde çalışır ve aynı köken politikası onu durdurmaz. Bu saldırı türünü, siteler arası betik çalıştırmayı, Seviye 6'da savunma tarafından ayrıntılı işleyeceğiz.

Sahada

Savunma

Tarayıcı, kullanıcının internetle arasındaki en önemli savunma katmanıdır ve onu korumak birkaç alışkanlığa dayanır.

İlk alışkanlık tarayıcıyı güncel tutmaktır. Tarayıcı, internetten gelen bilinmeyen kodu her gün binlerce kez çalıştıran bir programdır; yalıtımındaki ya da aynı köken politikasının uygulanmasındaki bir zafiyet, sıradan bir sayfa ziyaretini tehlikeli hâle getirebilir. Tarayıcı üreticileri bu tür açıkları sık sık kapatır ve güncellemeyi çoğu zaman kendiliğinden yapar; ama güncellemenin devreye girmesi için tarayıcının yeniden başlatılması gerekebilir. Haftalarca kapatılmayan bir tarayıcı, güncellemesini haftalarca bekletir.

İkinci alışkanlık tarayıcının güvenlik ayarlarını gevşetmemektir. Büronun eski muhasebe yazılımında olduğu gibi bir uygulama bir korumanın kapatılmasını istiyorsa, bu ayar tarayıcı genelinde değil, mümkünse yalnız o adres için yapılır ve uygulamanın güncel bir sürümü istenir. Bir koruma, bir site için kapandığında çoğu zaman bütün siteler için kapanmış olur.

Üçüncü alışkanlık, giriş yapılmış oturumları ve açık sekmeleri gözden geçirmektir. Aynı köken politikası açık bir e-posta sekmesini başka sitelerden korur; ama hassas hesaplardan işi bitince çıkış yapmak, bir tarayıcı zafiyeti ya da sonraki derslerde göreceğimiz başka saldırı türleri karşısında açık bir oturumun ömrünü kısaltır.

Siteyi yapanlar için savunma, sayfaya davet edilen kodu sınırlamaktır. Ödeme ve giriş gibi hassas sayfalarda üçüncü taraf betiklerini en aza indirmek, yüklenen betiklerin kaynağını bilmek ve sayfanın hangi kaynaklardan kod yükleyebileceğini tarayıcıya bildiren güvenlik talimatlarını kullanmak, Selin'in ekibinin öğrendiği dersin teknik karşılığıdır. Bu talimatları Seviye 6'da ayrıntılı göreceğiz.

Uygulama

Bu uygulamada kökenleri kendi gözünle ayırt etmeyi öğrenecek ve kendi tarayıcının güncelliğini kontrol edeceksin. Bütün adımlar yalnız kendi tarayıcında yapılır.

Köken alıştırmasındaki ikinci çift en çok şaşırtanıdır: alt alan adları, aynı şirkete ait olsalar bile, tarayıcının gözünde farklı kökenlerdir.

Defter: Köken alıştırmasının cevapları ve her biri için farkın nerede olduğu. Envanterde her tarayıcının sürümü ve güncel olup olmadığı. Aylık güvenlik turuna "tarayıcı yeniden başlatıldı mı, güncellemeler devreye girdi mi" maddesi.

Hata köşesi

Yaygın yanlış"Bir sitenin sayfası açıkken, yan sekmede açık olan diğer hesaplarımı okuyabilir."
Doğrusu

Aynı köken politikası, bir kökenden gelen betiğin başka bir kökendeki sayfanın içeriğini ve verilerini okumasını engeller. Bir sitenin sekmesi, yan sekmedeki e-postanı okuyamaz. Bu koruma, tarayıcı güncel olduğu ve güvenlik ayarları gevşetilmediği sürece güçlüdür.

Yaygın yanlış"Sitenin kendi kodu ile sayfaya eklenen başka şirketlerin betikleri farklı yetkilerle çalışır."
Doğrusu

Bir sayfaya yüklenen her betik, nereden gelirse gelsin, o sayfanın kökeninde ve aynı yetkiyle çalışır. Bir istatistik ya da reklam betiği, yüklendiği ödeme sayfasındaki her şeyi görebilir. Bu yüzden hassas sayfalara davet edilen kod en aza indirilir.

Yaygın yanlış"Aynı şirkete ait alt alan adları aynı kökendir."
Doğrusu

Köken, ana makine adının tamamına bakar; kampanya.banka.ornek.com ile banka.ornek.com aynı şirkete ait olsa da tarayıcının gözünde farklı kökenlerdir. Şema ya da port farklıysa da köken farklıdır; aynı adresin şifreli ve şifresiz hâlleri ayrı kökenlerdir.

Etik ve sınırlar

Tarayıcının nasıl çalıştığını bilmek, bir sayfada çalışan kodu görebilmek ve onu değiştirebilmek demektir; tarayıcıların geliştirici araçları bunu herkese açar. Kendi tarayıcında bir sayfanın kodunu okumak tamamen meşrudur ve web'i öğrenmenin en iyi yollarından biridir. Ama bir sitenin sayfasına kendi kodunu yerleştirmeye, aynı köken politikasını aşmanın yollarını bir başkasının sitesinde denemeye ya da bir kullanıcının tarayıcısında onun bilgisi olmadan kod çalıştırmaya çalışmak, sitenin ya da kullanıcının izni olmadan yapıldığında bilişim suçları kapsamına girebilir. Bir sitede böyle bir zayıflığa rastlarsan, denemeye kalkışmadan sitenin sahibine haber verirsin. Bir de ortak bilgisayar sorumluluğu var: başkasının tarayıcısında açık kalmış bir oturuma rastlarsan, ona girmez, mümkünse kapatıp sahibine haber verirsin.

Kapanış

  1. Tarayıcı, internetten gelen içeriği bir sayfaya dönüştüren ve içindeki betikleri senin bilgisayarında çalıştıran bir ortamdır; modern tarayıcılar siteleri ayrı süreçlerde ve kısıtlı izinlerle çalıştırır.
  2. Köken şema, ana makine ve port üçlüsüdür; aynı köken politikası bir kökenden gelen kodun başka bir kökendeki sayfayı ve verileri okumasını engeller ve web güvenliğinin temel sınırıdır.
  3. Bir sayfaya davet edilen her betik o sayfanın kökeninde çalışır; tarayıcıyı güncel tutmak, güvenlik ayarlarını gevşetmemek ve hassas sayfalara yüklenen kodu en aza indirmek bu sınırı korur.

Üç soru

  1. Nilüfer Hanım'ın çekiliş sitesi, yan sekmedeki e-postalarını neden okuyamazdı?
  2. Selin ve arkadaşları ödeme adımından başka şirketlerin betiklerini neden çıkardı?
  3. https://banka.ornek.com ile https://kampanya.banka.ornek.com aynı kökende midir? Neden?

Yanıtlar

  1. Çekiliş sitesi ile e-posta hizmeti farklı kökenlerdendi; şema, ana makine ya da port üçlüsünden en az biri farklıydı. Aynı köken politikası, bir kökenden yüklenen betiğin başka bir kökendeki sayfanın içeriğini ve verilerini okumasını engeller. Çekiliş sayfasının betiği çalışabilirdi ama e-posta sekmesine erişemezdi.
  2. Çünkü bir sayfaya yüklenen her betik, nereden gelirse gelsin, o sayfanın kökeninde ve aynı yetkiyle çalışır. Ödeme sayfasındaki reklam, analiz ve sohbet betikleri teorik olarak müşterinin yazdığı kart bilgisini görebilirdi ve bu şirketlerden birinin betiği ele geçirilirse ödeme sayfası da etkilenirdi. Hassas sayfaya davet edilen kodu azaltmak bu riski küçültür.
  3. Hayır. Köken, ana makine adının tamamına bakar ve iki adresin ana makine adları farklıdır. Aynı şirkete ait olsalar bile tarayıcı onları farklı kökenler olarak görür ve birinin betiği öbürünün sayfasını aynı köken politikası gereği okuyamaz.

Sonraki derse köprü

Bu derste Nilüfer Hanım'ın e-posta sekmesinin açık bir oturum olduğunu söyledik. Ama HTTP durumsuzdu: sunucu bir önceki isteği hatırlamıyordu. Peki e-posta sitesi, Nilüfer Hanım sekmeyi yenilediğinde onu nasıl tanıyor ve her sayfada yeniden parola istemiyor? Sıradaki ders çerez ve oturumu ele alıyor: sunucunun seni nasıl hatırladığını ve bu hatırlama bilgisinin neden bir parola kadar değerli olduğunu.

Anlamadığın bir yer mi var?

Mentor yalnız bu dersin metnine dayanarak cevap verir. Metinde geçmeyen bir şey sorarsan uydurmaz, geçmediğini söyler.