ModSecurity ile Open Redirect Açığını Engelleme

ModSecurity ile web güvenlik açıklarının engellenmesi hakkındaki yazı dizimizin bu bölümünde ModSecurity kullanarak open redirect açığının nasıl engellenebileceğini ele alıyoruz. Oldukça düşük riskli bir zafiyet olarak düşünülen open redirect güvenlik açığı, hedefli phishing saldırıları (spear phishing) ile birlikte kullanıldığında oldukça fazla zarar verebiliyor, hatta kullanıcı veya web uygulamasını toptan tehlikeye düşürebiliyor.

— BÖLÜM 5: ModSecurity ile Open Redirect Açığını Engelleme —

Open Redirect Nedir?

Open redirect, web sayfalarındaki kullanıcı kontrollü girişler ile bir web sayfasının başka bir güvenlir olmayan ve kötücül sayfaya yönlendirilmesiyle oluşur. Open Redirect açığını düzeltmenin en kolay yolu, uygulama kaynak kodundaki düzeltme ile kullanıcıların sadece meşru web uygulama fonksiyonunun bir parçası olarak yönlendirildikleri URL’lerin beyaz listeye alınmasıdır (URL whitelisting). Bunun yanında eğer kaynak kodu müdahalesi pek mümkün değilse de, özelleştirilmiş bir WAF kuralı ile bu açık kapatılabilir.

Yazı dizimizin bu bölümünde ModSecurity ile open redirect açığının nasıl engellenebileceği üzerinde duracağız. Bu yazıda High-Tech Bridge referans olarak alınmıştır.

 

Örneğin alttaki open redirect zafiyetine sahip PHP script’i incelendiğinde:

redirect.php

<?
header("Location: http://$_GET[go]");
?>

ModSecurity CRS, varsayılanda bunu engellemeyecektir. Bu yüzden eğer kaynak kodlarına da direkt müdahale yetkisi yoksa yapılabilecek en iyi şey, kullanıcılar uygulama üzerinden harici bir URL bağlantısına gitmeye çalıştığında onları açık bir şekilde uyaran ve bilgilendiren bir ara sayfa (vekil/proxy) oluşturmaktır:

mod_security_custom_rules.conf

SecRule REQUEST_FILENAME "/redirect.php" "phase:2, t:none, t:normalisePath, t:lowercase, t:urlDecodeUni, chain, redirect:http://proxysite/go.php?go=%{TX.1}, nolog, id:1051"
SecRule ARGS_GET:go "^(.*)$" "capture, t:none, t:UrlEncode"

Vekillik yapan script de alttaki gibi olabilir:

http://proxysite/go.php

DİKKAT! Gitmeyen çalıştığınız bu URL adresi (<a href="http://<?=htmlspecialchars($_GET['go']);?>"><?=htmlspecialchars($_GET['go']);?></a>)
potansiyel olarak güvenli olmayabilir (güvensizdir).

Görüldüğü üzere yönlendirmelere otomatik olarak uyarı eklenmiş olur. Ama eğer mümkünse kaynak kodunda değişiklik yapılması her zaman için daha iyidir. Yani kaynak kodunda kullanıcıdan URL input bilgisi almamak veya URL whitelisting yapmak open redirect zafiyetini kökten çözecektir. Open redirect zafiyeti phishing saldırılarını çok daha başarılı hale getirdiği için küçümsenmeden mutlaka ivedi kapatılmalıdır.

Yazı dizimizin bir sonraki bölümünde görüşmek üzere…

One thought on “ModSecurity ile Open Redirect Açığını Engelleme

  1. My brother recommended I might like this web site. He used to be totally right.
    This publish actually made my day. You can not believe just how
    much time I had spent for this information! Thanks!

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir