Teknolojinin hızlı yükselişi, yetenekli geliştiriciler için yüksek bir talep yarattı. Açık kaynaklı yazılımlar (OSS) bu büyüyen işgücü için hayati bir araç haline gelmiştir. Şu anda çeşitli programlama dillerinde yüz binlerce köklü OSS paketi bulunmaktadır. Geliştiricilerin %90'ından fazlası tescilli uygulamalarında bu açık kaynak bileşenlerinden yararlanarak OSS'nin verimliliğini ve değer önerisini vurgulamaktadır. Önemini daha da vurgulayan küresel OSS pazarının 2030 yılına kadar 80,7 milyar dolara ulaşması ve yıllık %16,7'lik bir büyüme oranına ulaşması beklenmektedir.
Ancak OSS'nin yaygın olarak benimsenmesi yeni bir karmaşıklık katmanını da beraberinde getirmektedir: güvenlik açıkları. Birbirine bağlı çok sayıda OSS bileşeni, kötü niyetli aktörlerin yararlanabileceği daha geniş bir saldırı yüzeyi oluşturur. Çeşitli OSS paketleri arasındaki bağımlılıkları yönetmek karmaşık olabilir ve bu da güvenlik açıklarını anında tespit etmeyi ve yamalamayı zorlaştırır. Ayrıca, OSS'nin güvenliği genellikle geliştirici topluluğunun dikkatine ve katkılarına dayanır. Bu durum, özellikle daha az popüler projeler için güvenlik açıklarının yamalanmasında gecikmelere yol açabilir.
Bu makalede, OPSWAT Mezun Bursiyerleri, popüler açık kaynak kütüphanesi ReportLab'de keşfedilen bir güvenlik açığı olan CVE-2023-33733'ü incelemektedir. Analizleri, aşağıdakilerden yararlanan simüle edilmiş bir saldırı ile birleştirilmiştir MetaDefender Core ile Software Bill of Materials (SBOM) savunmasız ReportLab kütüphanesi de dahil olmak üzere bir uygulamanın bağımlılıklarındaki güvenlik açıklarını belirleme yetenekleri.
Reportlab Kütüphane Tanıtımı
Güçlü ve açık kaynaklı bir Python kütüphanesi olan ReportLab, kullanıcılara Python kodundan zengin özelliklere sahip PDF'ler üretme yetkisi verir. Geliştiricilere kazanan bir kombinasyon sunar: esneklik, kullanım kolaylığı ve dinamik belgeler oluşturmak için kapsamlı özelleştirme seçenekleri. Kütüphane, geliştiricilere PDF'leri üzerinde gelişmiş kontrol sağlayarak metin, resim, tablo ve grafiklerin titiz bir hassasiyetle dahil edilmesine olanak tanır. Bu özelleştirme düzeyi, ReportLab'i faturalar ve veri odaklı raporlar gibi dinamik belgeler oluşturmak için değerli bir araç haline getiriyor.
CVE-2023-33733 Arka Plan
CVE-2023-33733, ReportLab kütüphanesinde bulunan ve ReportLab Kütüphanesinin birden fazla sürümünü etkileyen bir güvenlik açığını vurgulamaktadır.
- ReportLab'ın 3.6.13 sürümünden önceki sürümlerinin, özellikle aşağıdaki durumlarda sandbox atlatmaya karşı savunmasız olduğu bulunmuştur
'rl_safe_eval'
işlevi. İstismar, HTML etiketlerinin renk özniteliği aracılığıyla gerçekleştirilmiş ve bu da doğrudan bir Python ifadesi olarak değerlendirilmiştir.eval()
işlevini kullanarak uzaktan kod yürütülmesine yol açabilir. - NVD Analistleri CVE-2023-33733'e 7.8 HIGH CVSS puanı atamıştır.
ReportLab Güvenlik Zafiyetinin Analizi
OPSWAT Mezun Bursiyerleri, ReportLab iş akışının derinlemesine bir analizini gerçekleştirerek CVE-2023-33733 güvenlik açığının temel nedenini belirledi.
ReportLab, geliştiricilerin verimli bir şekilde PDF oluşturmasını sağlar. Kütüphane zahmetsiz entegrasyon sağlar: kütüphaneyi içe aktarın, HTML içeriğini tanımlayın ve sonuç işlevini kullanarak tek bir kod satırında PDF oluşturun.
Mezun arkadaşlarımız ReportLab ile HTML'den PDF oluşturmak için 5 adımlı bir süreç ortaya çıkardı.
ReportLab ile HTML'den PDF oluşturmaya yönelik 5 adımlı süreçte üç ana işlem öne çıkmaktadır: paragraf işleme, ayrıştırıcı işleme ve HTML işleme süreci.
Yukarıdaki şekilde gösterildiği gibi, ReportLab içindeki HTML işleme süreci eval()
işlevini özellikle renk özniteliği üzerinde çalıştırır. Kötü amaçlı kod çalıştırmak için bir odak noktası olarak hizmet veren eval()
işlevi, araştırmacıları uygulamayı istismar etmek için girdisi üzerinde kontrol aramaya yönlendirir. Bununla birlikte, bu, uygulama tarafından zorlanan sanal alan nedeniyle zordur. __rl_safe_eval__
ReportLab içindeki işlev.
ReportLab, şu adda bir sanal alan uygulamıştır __rl_safe_eval__
. Bu korumalı alan tüm yerleşik Python işlevlerini hariç tutar ve birkaç geçersiz kılınmış yerleşik işlev içerir. Bu kısıtlama, kütüphane içinde güvenli kodun yürütülmesine izin verirken, kötü amaçlarla kullanılabilecek tehlikeli işlevlere ve kütüphanelere erişimi engeller (örn. dosya sistemi erişimi, ağ iletişimi).
Bu rl_safe_eval
sandbox işlevi, Python'un yerleşik sandbox işlevini kullanmadan önce çağrılan özniteliğin güvenli olduğundan emin olmak için çeşitli koşullar uygular. getattr()
işlevini kullanarak alabilir ve sonucu döndürebilirsiniz.
Güvenli eval işlevi, tehlikeli işlevleri hariç tutarak ve kötü niyetli eylemleri önleyerek ortamın güvenliğini sağlamayı amaçlar. Bununla birlikte, koşullarını atlamanın ve güçlü bir yerleşik işleve erişmenin bir yolu bulunursa, bu durumdan yararlanılabilir.
Güvenlik araştırmacıları bu fikirden yola çıkarak kısıtlamaları aşmaya çalıştılar. Başlangıçta, nesne enjeksiyonunu kullanarak type()
işlevini kullanarak bir nesne oluşturabilir ve bu nesnenin niteliklerini ve yöntemlerini yeniden tanımlayarak __rl_safe_eval__
. Ayrıca, ReportLab kütüphanesi yerleşik işlevleri geçersiz kıldığından ve bunları eval bağlamında küresel hale getirdiğinden, araştırmacı orijinal yerleşik işlevlerden birine erişmek için bu uygulamadan yararlanabilir. Bu, sanal alan ortamını atlamalarını ve kötü amaçlı kod çalıştırmalarını sağlayabilir.
Yük aşağıdaki şekilde hazırlanır:
Bununla birlikte, bir eval bağlamı içinde çok satırlı bir ifade yürütmek mümkün değildir. Bununla birlikte, bir liste anlama hilesi kullanılabilir ve bu CVE'den yararlanmak için kullanılan yük aşağıdaki gibidir:
ReportLab İstismar Simülasyonu
Araştırmacılar CVE-2023-33733 için bir Kavram Kanıtı (POC) yayınlayarak ReportLab'in savunmasız sürümleriyle oluşturulan uygulamaların siber saldırılara açık olabileceğini gösterdi. Bu potansiyel tehdidi değerlendirmek için OSPWAT Mezun Bursiyerleri bir web uygulamasına simüle edilmiş bir saldırı gerçekleştirdi. Etkilenen ReportLab kütüphanesinin varlığı da dahil olmak üzere uygulama yazılımı bağımlılıklarındaki güvenlik açıklarını belirlemek için SBOM özelliklerine sahip MetaDefender Core 'dan yararlandılar.
Bu istismarı gerçek dünya senaryosu olarak simüle etmek için OPSWAT Lisansüstü Bursiyerleri Python ve ReportLab kütüphanesinin savunmasız sürümünü kullanarak bir web uygulaması geliştirdi. Bu uygulama tipik bir kullanım durumunu taklit etmektedir: kullanıcılar bir HTML dosyası yükleyebilir ve bunu bir PDF dosyasına dönüştürebilir.
Bir saldırgan, istismar etmek için tasarlanmış kod içeren kötü amaçlı bir HTML dosyası oluşturabilir 33733. Bu kod sandbox'ı atlayabilir ve web sunucusunu tehlikeye atabilir. eval()
fonksiyon.
Kötü amaçlı dosyanın başarılı bir şekilde yüklenmesi, güncel olmayan ReportLab kütüphanesindeki güvenlik açığı nedeniyle saldırganın uygulama sunucusunun kontrolünü ele geçirmesine olanak tanıyacaktır.
SBOM ve Proaktif Güvenliğin Önemi
OPSWAT Graduate Fellows'un CVE-2023-33733 üzerine yaptığı araştırma, OSS ile ilişkili potansiyel güvenlik risklerinin altını çizmektedir. OSS, geliştirme verimliliği ve maliyet etkinliği açısından yadsınamaz faydalar sunarken, ReportLab'de bulunan gibi güvenlik açıkları kuruluşları siber saldırılara açık hale getirebilir.
OPSWAT SBOM, kaynak kodu ve konteynerler için kapsamlı bir bileşen envanteri sağlayarak yazılım tedarik zincirini güvence altına alır. Java, JavaScript, Go, PHP ve Python dahil olmak üzere 10'dan fazla dili, 5 milyondan fazla üçüncü taraf açık kaynaklı yazılım bileşenini destekler ve Ulusal Güvenlik Açığı Veritabanı (NVD) ve GitHub (GHSA) kaynaklı 17 bin güvenlik açığından oluşan bir veritabanı kullanır.
OPSWAT MetaDefender Core, entegre SBOM yetenekleri ile kurumların bu riskleri proaktif olarak ele almalarını sağlar. MetaDefender Core , yazılım uygulamalarını ve bağımlılıklarını tarayarak listelenen bileşenlerdeki CVE-2023-33733 gibi bilinen güvenlik açıklarının varlığını tespit eder. Bu, geliştiricilerin ve güvenlik ekiplerinin yama çalışmalarına öncelik vermesine ve güvenlik risklerini istismar edilmeden önce azaltmasına olanak tanır.
Kapanış Düşünceleri
OPSWAT Graduate Fellows'un ReportLab güvenlik açığı (CVE-2023-33733) üzerine yaptığı araştırma, yazılım geliştirme yaşam döngüsünde proaktif güvenlik önlemlerinin önemini hatırlatan değerli bir örnek teşkil etmektedir. Kuruluşlar, OPSWAT MetaDefender Core gibi araçlardan yararlanarak yazılım bağımlılıkları hakkında önemli bilgiler edinebilir ve potansiyel güvenlik açıklarını saldırganlar tarafından istismar edilmeden önce tespit edebilirler.
Ayrıca OPSWAT , güvenlik açığı taramasının ötesine geçen kapsamlı bir siber güvenlik çözümleri paketi sunmaktadır. Bu çözümler gerçek zamanlı tehdit algılama, veri güvenliği ve uç nokta koruması sağlayarak kuruluşları çok çeşitli siber tehditlere karşı korur. MetaDefender Core gibi araçları içeren katmanlı bir güvenlik yaklaşımı benimseyen kuruluşlar, OSS'nin avantajlarından yararlanırken ilgili güvenlik risklerini de en aza indirebilirler.