WordPress Sisteminizin XSS Saldırılarına Karşı Güvende Olup Olmadığı Nasıl Kontrol Edilir?
Yayınlanan: 2016-07-09Dünya çapında, tüm web sitelerinin yaklaşık yüzde 48'i, siteler arası komut dosyası çalıştırmaya (XSS) karşı savunmasızdır. Dünya çapında, tüm web sitelerinin neredeyse tam olarak yüzde 25'i WordPress platformunu kullanıyor.
XSS'ye karşı savunmasız olan web sitelerinin ve WordPress platformunu çalıştıran web sitelerinin Venn şemasında örtüşme oldukça büyük olmalıdır.
Bu, platformun kendisine yapılan bir darbe değil. WordPress ekibi, güvenliği misyon beyanının ayrılmaz bir parçası haline getirdi ve güvenlik açıkları ortaya çıktıkça agresif bir şekilde yamalar. Ancak bu, insanların güvenli olmayan temalar kodlamasını veya güvenli olmayan eklentiler yüklemesini engellemez. Bu sorunlar, WordPress sitelerine yapılan XSS saldırıları için iki ana giriş yoludur ve bu makalede bunların nasıl durdurulacağı tartışılacaktır.
Siteler Arası Komut Dosyasına Giriş
Öncelikle XSS saldırılarının nasıl gerçekleştirildiğinden bahsedelim. Birden fazla XSS saldırısı türü vardır, bu yüzden basitleştirilmiş bir tanımla başlayacağım. Genel olarak, XSS saldırıları, yorum formları, yorum kutuları, arama çubukları vb. gibi temizlenmemiş girdilerle başlar. Bu saldırılar, karmaşıklık açısından büyük farklılıklar gösterir. Aslında, XSS saldırısının en basit biçimi WordPress kullanıcıları tarafından her gün görülür: spam yorumu. Ne hakkında konuştuğumu biliyorsun: “ Mükemmel makale için teşekkürler. Bu arada, evden çalışarak haftada 5.000 dolar kazandığım sitem şu: www.only-an-idiot-would-click-this-link.co.uk. ”
Bir şekilde, spam yorumları bir XSS saldırısının mükemmel bir örneğidir. Kötü niyetli bir varlık, içeriklerini (kötü amaçlı bağlantı) sitenize yerleştirmek için sitenizin altyapısını (yorum kutusu) bozar. Bu iyi bir açıklayıcı örnek olsa da, daha gerçekçi bir XSS saldırısı çok daha incelikli olacaktır. Bir spam yorumunun oluşturulması yaklaşık beş saniye sürer. Bir XSS saldırısı, uygun bir bilgisayar korsanının biraz daha fazla zaman harcayacağı bir şeydir.
Gerçek bir siyah şapka, sitenizin sunucuya veri gönderen tüm yönlerinden yararlanmaya çalışacak, esasen bunları minyatür bir metin düzenleyici olarak kullanacaktır. Girdileriniz savunmasızsa, bu, kodlarını tam anlamıyla alıp uygulamanızı çalıştırmaya ve bir kullanıcının tarayıcısında (ve buna sizin tarayıcınız da dahil olabilir) işlemeye zorlayabilecekleri anlamına gelir. Spam yorumların aksine, yalnızca sitenizin değiştirilmiş kodunun ayrıntılı bir incelemesi veya web sitesi etkileşimlerinin taranması bir ihlali ortaya çıkarabilir. Tahmin edilebileceği gibi, böyle bir ihlalden kaynaklanabilecek tatsız şeylerin sayısı sonsuzdur.
Basit vandalizm, XSS saldırılarının nispeten yaygın bir sonucudur ve kullanıcılarınıza içeriğinizin yerine grotesk resimler veya siyasi propaganda gösterilmesine neden olur. Birkaç uzun vadeli planı veya etik kaygısı olan pazarlamacılar, bunları insanlara kendi istekleri dışında reklam vermek için kullanacaklardır. Daha incelikli ve incelikli bir saldırı, kullanıcılarınızın oturum açma kimlik bilgilerini çalabilir. Bunlardan birinin yönetici ayrıcalıkları varsa, sitenizde sakladığınız tüm kişisel bilgiler ele geçirilebilir. Alternatif olarak, sitenizi gözetlemek ve daha da gelişmiş kötü amaçlı yazılım yüklemek için ilk XSS saldırısını bir kaldıraç olarak kullanabilirler.
Saldırıları Durdurma
Makul düzeyde kod konusunda bilgili bir kişiyseniz ve nispeten küçük bir WordPress sitesinin tek sahibiyseniz, güvenli kodlama uygulamaları, sitenizi siteler arası komut dosyası çalıştırma saldırılarına karşı kilitlemenin muhtemelen en iyi yolu olacaktır. Bu uyarıyı ekledim çünkü daha karmaşık bir uygulama çalıştıran daha büyük bir organizasyonun parçasıysanız, kötü niyetli bir saldırganın kod enjekte edebileceği her alanı bulmanız insan açısından mümkün olmayabilir. Modern web sitelerinin ölçeği çok büyük olabilir ve deneyimli bir profesyonel kiralamanız ve web sitenizi okuyucularınız için daha da iyi hale getirmek için zamanınızı başka arayışlara harcamanız gerekebilir.
Diğer bir uyarı ise, özellikle kod konusunda bilgili değilseniz ve sitenizi sizin için başka birinin oluşturmasını sağlıyorsanız, bu kişinin güvenli kodlama uygulamaları kullandığını varsaymayın. En deneyimli geliştiricilerin bile, bir başkasının işlerini kontrol etmesine gerek kalmadan güvenliği bir kenara bıraktığı veya küçük hatalar yaptığı bilinmektedir. Diğer geliştiriciler, güvenlik açısından ne yaptıklarını bilmiyor olabilirler ve diğerleri yine de tasarruf etmek için güvenliği gözden kaçırır. kendileri için zaman (konu söz konusu olduğunda profesyonellik eksikliğine rağmen). Özetle, web sitenizi geliştirmek ve korumak söz konusu olduğunda köşeleri kesmeyen, beğenilen bir profesyoneli işe aldığınızdan emin olun.
Bu endişe ifade edildiğinde, siteler arası komut dosyası çalıştırmayı önlemek için yapabileceğiniz ilk ve en kolay şeylerden biri, kullanıcı verilerini doğrulamaktır.
Diyelim ki sitenizde bir kayıt formunuz var ve bu form kullanıcıdan adını girmesini istiyor. Kötü niyetli bir kullanıcı bunun yerine şöyle bir şey yazabilir:
[xhtml]
<script>CoughUpYourPreciousData();</script>
[/xhtml]
Bu, örneğin, o sayfayı ziyaret eden bir sonraki kişinin çerezlerinin bir kopyasını bir saldırgana göndermesine neden olabilir.
Bu örnekte, yukarıdaki kod dizisinin birinin adına benzemediğini görebilirsiniz. Sunucunuz bunu bilmiyor ama birkaç set parametre kullanarak öğretebilirsiniz. Örneğin, bu alana <>, () ve ; gibi özel karakterleri reddetmesini söyleyebilirsiniz. (özellikle bir yorum bölümünde gerekli değildir). Bu alana, bir kişinin adının muhtemelen içinde sayı olmadığını söyleyebilirsiniz. Biraz acımasız olmak istiyorsanız, o alana on beş karakterden uzun girişleri reddetmesini söyleyebilirsiniz (veya değerleri istediğiniz gibi değiştirebilirsiniz). Bu adımları atmak, bir saldırganın belirli bir alanla yapabileceği hasar miktarını büyük ölçüde sınırlayacaktır.

Veri doğrulamada bile, iletişim formu veya yorum alanı gibi kullanılan karakter türlerini gerçekçi bir şekilde sınırlayamayacağınız formlar veya alanlar olabilir. Yapabileceğiniz şey, verileri sterilize etmektir. Bu işlem, HTML'nin belirli bir alanda yürütülmesini imkansız hale getirir ve yürütülebilir bir kod parçası olarak tanınabilecek her şeyi kodlamayan karakterlere dönüştürür. Örnek olarak, aksi takdirde bir köprünün olabileceği yerde bir köprü görünmez.
Son olarak, sitenizin kullanıcılar için güvenli olmayan verileri görüntüleyebileceği durumlar vardır. Diyelim ki birisi sayfalarınızdan birine kötü niyetli bir yorum yazdı ve bu yorum daha sonra web sitenizin arama işlevi tarafından dizine eklendi. Kullanıcılarınızdan biri arama yaptığında, tarayıcıları arama sonuçlarını yüklediğinde bu kötü amaçlı kod yürütülür. Bu, kaçan verilerle engellenir; bu, siteniz bir kullanıcıya veri sağladığında çalışan tek kodun çalıştırmak istediğiniz kod olmasını sağlar.
Veri doğrulama, verileri temizleme ve kaçan veriler hakkında daha fazla bilgi için WordPress Kodeksi mükemmel bir kaynağa sahiptir. Yukarıdaki kavramları ayrıntılı olarak açıklayacak ve evrensel olarak uygulanabilecek daha fazla örnek verecektir.
Öbür metodlar
Büyük şirketlerin daha büyük web siteleri vardır; Bu bir gerçek. Belki günde binlerce kişi sitenizi kullanıyor. Belki standart formlar ve alanlar yerine, animasyonlar, çeşitli portallar, Java ile yazılmış bölümler vb. Bunların hepsini takip etseniz bile, belki başvurularınızdan birinde sıfır gün vardır ve kendinizi savunmanın bir yolu yoktur.
Böyle bir durumda, bunu yapacak nüfuzunuz ve bütçeniz varsa, bir Web Uygulaması Güvenlik Duvarı'na (WAF) yatırım yapmanızı tavsiye ederim. İyi bir WAF, kod yerleştirme saldırılarıyla en sık ilişkilendirilen HTML dizelerini otomatik olarak tanımlayan ve engelleyen korelasyon kurallarına sahip olacaktır. Ayrıca uygulamalar, beklenmeyen bir hacimde veri sızdırmaya başladığında sizi bilgilendirebilir, böylece sıfır gün saldırılarına ve diğer gelişmiş tehditlere karşı savunmaya yardımcı olur. WAF gümüş bir kurşun değildir, ancak karmaşık uygulamaları korumayı umut eden güvenlik uzmanları ve web sitesi sahipleri için paha biçilmez bir araçtır.
Ayrıca, XSS saldırılarına karşı savunma yaptığını iddia eden bir dizi eklenti de vardır. Aslında bunları tavsiye etmiyorum. Bu eklentilerin çoğu, riski azaltmak yerine, bir bilgisayar korsanının yararlanabileceği başka bir saldırı yüzeyini temsil eder. En iyi bilinen ve yaygın olarak kullanılan güvenlik eklentilerinden biri olan Akismet'in bile geçen yıl XSS saldırılarına karşı savunmasız olduğu tespit edildi. XSS saldırılarını savuşturmak söz konusu olduğunda, yarım ölçülere güvenmeyin. Web sitenizi güvende tutmak için gerekli becerileri geliştirin ve uygun araç setini kullanın.
Diğer Pratik Uygulamalar
Bu bilgi, tecrübesi olmayanlar için biraz karmaşık olabilir, ancak insanların bu bilgilerin potansiyel karmaşıklığı nedeniyle cesaretlerinin kırılmasından nefret ederim. Bir XSS saldırısı meydana gelirse, böyle bir olayın ardından temizlemenin web sitenizde değişiklik yapmaktan çok daha karmaşık olacağından emin olabilirsiniz. Web sitenizin itibar maliyetlerini temizlemek (düzenli okuyucular web sitenizden kolayca kaçar), endişelenmek istemediğiniz ek bir sorun olacaktır.
Web sitenizin geliştirme ve güvenliğini sizin yerinize başka birine yaptırıyor olsanız bile, en azından bir acil duruma müdahale edebilmek için elinizden geleni yapın ve zayıf noktalarınızın nerede olduğunu öğrenin. Sisteminizi nasıl kontrol edeceğinizi bilmek, uzun vadede hayati bir beceri olacak ve diğer güvenlik konularının ve web sitesi geliştirme projelerinin temeli olacaktır. Her şey çevrimiçi olarak birbirine bağlıdır ve XSS saldırıları son yılların bir parçası olabilir (bu pek olası olmasa da), web sitenizin içini ve dışını bilmek asla eskimeyecek.
Son düşünceler
İnternet güvenliği ortamı sürekli değişmektedir. Bir XSS saldırısının nasıl görünebileceğinden veya size karşı nasıl kullanılacağından asla tam olarak emin olamazsınız, ancak onları durdurmak için elinizden gelen her şeyi yaptığınızdan emin olmak için kendinize ve okuyucularınıza borçlusunuz. Bu tehdit hakkında kendinizi bilgilendirmeye devam edin ve siber güvenlik dünyasındaki ilgili gelişmeler için düzenli olarak (en az ayda bir tavsiye ederim) kontrol edin.
Bu aynı zamanda diğer tehditleri görmezden gelebileceğiniz anlamına da gelmez. Genel ağ erişimi, güvenli olması için hala VPN kullanımını gerektirir. Web sitenize erişmek için kullandığınız herhangi bir bilgisayarın güvenliğini ihmal edemezsiniz. Giriş bilgilerinin hala sık sık değiştirilmesi ve kaba kuvvet saldırılarından korunması gerekiyor. XSS saldırıları acımasızdır, ancak dikkat edilmesi gereken tek tehdit bunlar değildir.
Bu tür saldırılara karşı direnişi yaymak için bu bilgileri (hatta bu makaleyi) meslektaşlarınızla ve ilgili taraflarla paylaşmanız da gerekebilir. Kendi başınıza çok fazla şey yapamayabilirsiniz, ancak yeterli sayıda insan kendilerini düzgün bir şekilde koruyorsa, bilgisayar korsanları zayıf internet kullanıcılarından farklı bir kazanç elde etmenin farklı bir yolunu bulmaya çalıştıkça bu tür saldırılarda genel bir düşüş görebiliriz.
Gelecekte XSS saldırılarını nasıl kontrol edeceğinize ve bunlara karşı kendinizi nasıl savunacağınıza dair herhangi bir fikriniz var mı? Bu tehditle savaşmak için kendi kullandığınız başka tespit ve kaldırma stratejileri var mı? Okur arkadaşlarınıza tavsiye edeceğiniz araçlar var mı? Öyleyse, lütfen aşağıya bir yorum bırakın ve diğer okuyucularınızla bu önemli sohbete devam edin.