target=“_blank” Zaafiyeti

Ata Günay
Fazla
Published in
2 min readMay 4, 2023

Bu yazıda target=’_blank’ kullanımının kötü niyetli kişiler tarafından nasıl bir tehlike haline getirildiği üzerine duracağız.

Nasıl Karışımıza Çıkıyor?

Bildiğiniz gibi yeni sekmede açılmasını istediğimiz bir link için target: ‘_blank’ kullanılmaktadır.

<a href="https://fazla.com/" target="_blank">Visit Fazla!</a>

Kullanıcı bu linke tıklayıp yeni sekmede ilgili sayfaya yönlendirildiğinde eğer o sayfada kötü niyetli bir yazılım varsa linke tıklanan sayfa manipüle edilip pshing saldırıları gerçekleştirmek için fake sayfalar oluşturulabilir.

Biraz karışık geldiyse haydi bir örnek yapalım.

Nasıl Uygulanıyor?

Örneğimizde kullanacağımız üç adet sayfamız vardır. Bunlar:

  1. Ana sayfa
  2. Kötü niyetli yazılımın bulunacağı sayfa
  3. Kötü niyetli kod çalıştıktan sonra gösterilecek fake sayfa
  • İlk olarak yönlendirmenin gerçekleşeceği ana sayfamızı oluşturuyoruz.
  • Şu an çoğu tarayıcı bu zaafiyeti engellediği için zararlı kodumuzu çalıştırabilmek için rel=”opener” seçeneğini ekledik. Bu özelliğin ne işe yaradığını ilerleyen satırlarda göreceğiz. Şimdilik bu bilgi bizim için yeterli
<!-- main_page.html -->
<a href="malicious_page.html" target="_blank" rel="opener">Click to login :)</a>
  • Daha sonrasında kötü niyetli kodumuzun bulunduğu malicious sayfamızı hazırlayalım
<!-- malicious_page.html -->
<p>Please wait we are working</p>

<script>
if (window.opener){
window.opener.location = "fake_page.html";
}
</script>
  • Bir javascript kodu ekleyerek “window.opener” değerinin mevcut olup olmadığına bakıyoruz. Eğer mevcutsa “location” seçeneği ile fake sayfamızı linke tıklanan sayfada açıyoruz.
  • Linke tıklanıp bu sayfaya yönlendirme yapıldıktan sonra ana sayfanın güncellendiğini fark edeceğiz.

Nasıl Önlenir?

  • Bu açığı gidermek için target: “_blank” ile rel: “noopener” kullanılmalıdır.
<a href="malicious_page.html" target="_blank" rel="noopener">Click to login :)</a>
  • rel: “noopener” özelliği, açılan sayfanın kendisini açan sayfaya erişim yetkisi kaldırmaktadır.
  • Günümüzde çoğu bilindik tarayıcı target=”_blank” kullanımını gördükten sonra rel=”noopener” özelliğini kendisi eklemektedir.
  • İlk olarak oluşturduğumuz ana sayfamızdaki rel=”opener” özelliğinin de ne olduğunu şimdi anlamış olduk :)

Peki Nasıl Kullanmalıyım?

Bir link belirtirken rel=”noopener” özelliği kullanıp kullanmayacağınızı kullandığınız programlama dili veya framework’ un style guide dokümanlarını inceleyerek öğrenebilirsiniz.

Örnek olarak Ruby Programlama Dili’ ni kullanan geliştiricilerin kullandığı Rubocop Style Guide dokümanında şöyle bir örnek mevcuttur:

--

--