Yeni Safari XSS Güvenlik Açığı, Rasgele Kod çalıştırmak için JavaScript Hata İşlemesi’nden yararlanır


Siteler arası komut dosyası (XSS), web güvenliğindeki en kalıcı tehditlerden biri olmaya devam ediyor, ancak çoğu tartışma geleneksel vektörlere odaklanıyor.

Daha az bilinen ama ilgi çekici bir cadde, XSS’ye ulaşmak için Safari’deki JavaScript TyerError mesajlarını kullanıyor.

Bu teknik, Safari’nin hata mesajlarını nasıl oluşturduğunu, özellikle kod enjeksiyonu ve yürütülmesine izin verebilecek gömülü alıntılardan kaçamayacağından yararlanır.

– Reklamcılık –
Google Haberleri

Bu saldırının çekirdeği, JavaScript yeni operatörünü hazırlanmış bir ip ile kötüye kullanarak bir typeError’u zorlamayı içerir. Örneğin:

javascriptnew 'foo"bar'
// TypeError: "foo"bar" is not a constructor

Safari, tek tırnakları hata mesajındaki çift tırnaklara dönüştürür, ancak gömülü çift alıntılardan kaçmaz.

Bu bir fırsat yaratır: ‘foo’ gibi bir yük enjekte ederek -allert (1) // ‘ortaya çıkan TypeError mesajı:

javascriptTypeError: "foo"-alert(1)//" is not a constructor

Bu mesaj bir eval işlev, yük yürütülür, bir uyarı kutusunu tetikler.

Sözdizimi hatalarının aksine, TypeErrors JavaScript yürütmeyi durdurmaz, bu da onları bu bağlamda sömürülebilir hale getirir.

Yük teslimatı:

Bir sonraki zorluk, savunmasız kod yolunu tetiklemektir.

Bir yaklaşım, küresel onerror işleyicisini değerlendirmeye ayarlamaktır ve hazırlanmış TypeError gibi herhangi bir hata mesajının JavaScript olarak değerlendirilmesini sağlamaktır:

javascriptonerror = eval;
new 'foo"-alert(1)//';

Burada, onerror atandı evalböylece TypeError atıldığında, rasgele JavaScript yürütülen mesajı (XSS yükünü içeren) değerlendirilir.

Bu teknik, örneğin diğer dize kaynaklarına genişletilebilir: window.namegenellikle pencere çapraz iletişimi için kullanılır.

Yükü pencerede depolayarak ve daha sonra hatayı tetikleyerek, Safari pencereyi sıfırlamasına rağmen, navigasyonda kullanıcı, navigasyonda adlandırılabilir. target öznitelik veya window.open kullanılır.

Aşağıdaki tablo, saldırının temel unsurlarını özetlemektedir:

AdımKod ÖrneğiAmaç
Craft TypeError yükünew 'foo"-alert(1)//'Yüklü TypeError’u tetikler
Değerlendirmek için onerror atayınonerror = eval;Hata mesajlarını kod olarak değerlendirir
Yük yükünü pencerede depolayın.window.name="foo"-alert(1)//";Çapraz pencere yük kalıcılığı
Adından Tetik Hatasınew window.name;Window.name’den yükü yürütür

Azaltma ve daha geniş sonuçlar

Bu sömürü yöntemi, sağlam hata işleme ve uygun kodlamanın önemini vurgulamaktadır.

Safari, yıllar boyunca, hazırlanmış web içeriği yoluyla keyfi komut dosyası enjeksiyonuna izin veren CVE-2016-4618 gibi birkaç ilgili güvenlik açıkını yamalarken, geliştiricilerin uyanık kalması gerekir.

Anahtar azaltma şunları içerir:

  • Asla Atama onerror ile eval veya benzer işlevler.
  • Özellikle hata mesajlarına veya günlüklerine yansıtıldığında, kullanıcı kontrollü dizeleri daima kodlayın ve sterilize edin.
  • Güvenilmeyen verileri JavaScript yapıcı bağımsız değişkenleri olarak kullanmaktan kaçının.

OWASP’den XSS Filtresi Kaçma Hile Sayfası, saldırganların yükleri yürütmek için hata nesnelerini ve olay işleyicilerinden yararlanma da dahil olmak üzere saf filtreleri nasıl atlayabileceğine dair birçok örnek sunar.

İşte birkaç gelişmiş yük:

xml

Bu teknikler, görünüşte zararsız JavaScript hatalarının bile düzgün bir şekilde yönetilmezse sofistike saldırılar için vektörler olabileceğini göstermektedir.

Tarayıcılar geliştikçe, saldırgan metodolojileri de – Web geliştirmede devam eden uyanıklık ve güvenli kodlama uygulamaları ihtiyacını ortaya koyuyor.

Bu haberi ilginç bul! Anında güncellemeler almak için bizi Google News, LinkedIn ve X’te takip edin!



Source link