Ben Dickson 22 Aralık 2022, 12:00 UTC
Güncellendi: 22 Aralık 2022, 12:03 UTC
Video konferans platformu, siteler arası komut dosyası çalıştırma güvenlik açığını giderir
Zoom, Beyaz Tahta uygulamasının hem masaüstü hem de web sürümlerinde çalışan bir siteler arası komut dosyası çalıştırma (XSS) hatasını düzeltti.
Zoom Whiteboard, kullanıcıların farklı nesneler ekleyerek ve düzenleyerek paylaşılan bir tuval üzerinde gerçek zamanlı olarak işbirliği yapmasına olanak tanır. Whiteboard, JavaScript kodunu hem tarayıcıda hem de masaüstü uygulamasında çalıştırır.
Temizlikten kaçmak
Zoom Whiteboard’daki XSS hatası, güvenlik araştırmacısı Eugene Lim tarafından keşfedildi (‘uzay rakunu‘). Lim web, mobil, masaüstü ve diğer platformlar arasındaki örtüşmeye odaklanıyor ve bu nedenle Zoom Whiteboard’u araştırmakla ilgilenmeye başladı.
Beyaz tahta, metin, şekiller, zengin metin, resimler ve yapışkan notlar dahil olmak üzere çeşitli nesne türlerini destekler.
Nesneleri depolamak ve aktarmak için, yapılandırılmış verileri seri hale getirmek için dilden ve platformdan bağımsız bir biçimlendirme standardı olan Protocol Buffer () kullanır. Nesneleri tüm istemcilerde yayınlamak ve beyaz tahtada gerçek zamanlı güncellemeler sağlamak için WebSocket’ı kullanır.
Web güvenlik açıkları hakkında en son haberlerin devamını okuyun
İstemci, alındıktan sonra nesneyi karşılık gelen React bileşenine dönüştürür ve kullanıcı arayüzüne ekler.
React, beyaz tahta nesnelerinde bulunan tüm HTML niteliklerini otomatik olarak temizler. Ancak, nesnelerden birkaçı bazı HTML etiketlerine izin verir. Bazı nesneler için geliştiriciler, kullanıcı girişini sterilize etmek ve izin verilmeyen etiketleri kaldırmak için özel regex işlevleri kullandı.
Lim, iyi hazırlanmış bir HTML dizesiyle temizleme kontrolünü atlayabileceğini ve diğer tüm istemcilere rastgele JavaScript kodu gönderebileceğini ve bir XSS saldırısı düzenleyebileceğini keşfetti.
Panoyu silahlandırmak
Hatadan yararlanmak, saldırganın karmaşık bir çaba göstermesini gerektirir.
“WebSocket mesajları biçiminde gönderilir. Bu, triyajcıların yeniden üretmesi kolay bir kavram kanıtı yazmayı zorlaştırıyor çünkü WebSocket isteğini durdurmaları ve istek bırakılmadan önce mesajı doğru şekilde değiştirmeleri gerekiyor,” dedi Lim. günlük yudum.
Bu zorluğun üstesinden gelmek için, XSS yükünü oluşturmak ve teslim etmek için panoyu kullanan uçtan uca bir kavram kanıtı betiği geliştirdi.
Hibrit uygulamaların zorlukları
Lim, bu tür hataları bulmayı ve kapatmayı zorlaştıran iki faktör olduğuna inanıyor. Birincisi, ek özellikleri destekleyen JavaScript web API’lerinin genişliği ve derinliğidir.
“WebRTC’den (görüntülü arama) WebGL’ye (2D/3D grafikler), günümüzde bir tarayıcıda bir uyarı vermekten çok daha fazlasını yapabilirsiniz. Bu, saldırı yüzeyini ve baypas potansiyelini artırıyor” dedi.
İkincisi, web ve yerel/masaüstü uygulamaları arasındaki artan örtüşmedir.
Lim, “Geliştiricilerin uygulamalarını birden çok platformda güvence altına alması gerekiyor, bu da React on Safari’deki JavaScript’in Android’deki React Native with Hermes’ten biraz farklı çalışabilmesi nedeniyle karmaşıklığı artırıyor” dedi.
Üçüncü taraf bağımlılıklarınızı kontrol edin
Son olarak Lim, üçüncü taraf bağımlılıklarındaki kusurlar konusunda uyarıda bulundu.
“Kod tarama araçları gerçek kodu algılamadı. [Zoom] güvenlik açığı, çünkü kullanıcı girdisi üçüncü taraf bir bağımlılık yoluyla akıyordu” dedi.
Tipik olarak, CI/CD ardışık düzenlerindeki kod taramaları, üçüncü taraf bağımlılıkları yüklemez ve yalnızca proje kaynak kodunda çalışır.
Lim, “Buradaki çıkarım, kullandığınız üçüncü taraf bileşenlerinin ve bunları nasıl kullandığınızın çok farkında olmanızdır” dedi. “Ayrıca, normal ifadeleri kendiniz yapmak çok zordur, bu nedenle DOMPurify gibi kitaplıklara güvenmek daha iyi olabilir.”
KAÇIRMAYIN Nasıl penetrasyon testçisi olunur: 2. Bölüm – ‘Sonsuz merak’ sayesinde ‘Bay Hacking’ John Jackson