PyPI deposundaki Python paketlerinin %46'sı potansiyel olarak güvenli olmayan kod içeriyor

Turku Üniversitesi'nden (Finlandiya) bir grup araştırmacı, güvenlik açıklarına yol açabilecek potansiyel olarak tehlikeli yapıların kullanımına yönelik PyPI deposundaki paketlerin analizinin sonuçlarını yayınladı. 197 bin paketin analizinde 749 bin potansiyel güvenlik sorunu tespit edildi. Paketlerin %46'sında bu tür en az bir sorun var. En sık karşılaşılan sorunlar arasında istisna yönetimi ve kod değişikliğine izin veren özelliklerin kullanımıyla ilgili eksiklikler yer almaktadır.

Belirlenen 749 bin sorunun 442 bini (%41) küçük, 227 bini (%30) orta, 80 bini (%11) ise tehlikeli olarak etiketlendi. Bazı paketler kalabalığın arasından sıyrılıyor ve binlerce sorun içeriyor: örneğin, PyGGI paketi esas olarak "try-hariç-geç" yapısının kullanımına ilişkin 2589 sorun tanımladı ve appengine-sdk paketi 2356 sorun buldu. genie.libs.ops, pbcore ve genie.libs.parser paketlerinde de çok sayıda sorun mevcuttur.

Sonuçların, belirli yapıların uygulama bağlamını dikkate almayan otomatik statik analize dayanarak elde edildiğine dikkat edilmelidir. Kodu taramak için kullanılan haydut araç setinin geliştiricisi, hatalı pozitiflerin sayısının oldukça yüksek olması nedeniyle, her sorunun ek manuel incelemesi olmadan tarama sonuçlarının doğrudan güvenlik açığı olarak değerlendirilemeyeceği görüşünü ifade etti.

Örneğin analizci, MD5 gibi güvenilmez rasgele sayı üreteçlerinin ve karma algoritmalarının kullanımını bir güvenlik sorunu olarak değerlendirirken, kodda bu tür algoritmalar güvenliği etkilemeyen amaçlar için kullanılabilir. Analizci ayrıca harici verilerin pickle, yaml.load, subprocess ve eval gibi güvenli olmayan işlevlerde işlenmesini bir sorun olarak kabul eder, ancak bu kullanımın mutlaka bir güvenlik açığı içermesi gerekmez ve aslında bu işlevlerin kullanımı bir güvenlik tehdidi olmadan uygulanabilir. .

Araştırmada kullanılan testler arasında:

  • Potansiyel olarak güvenli olmayan exec, mktemp, eval, mark_safe vb. işlevlerin kullanılması.
  • Dosyalar için erişim haklarının güvenli olmayan şekilde ayarlanması.
  • Tüm ağ arayüzlerine bir ağ soketi takma.
  • Kodda kesin olarak belirtilen şifrelerin ve anahtarların kullanılması.
  • Önceden tanımlanmış bir geçici dizin kullanma.
  • Tümünü yakalama tarzı istisna işleyicilerinde geçiş ve devam etme işlemlerini kullanma;
  • Hata ayıklama modu etkinken Flask web çerçevesini temel alan web uygulamalarını başlatma.
  • Güvenli olmayan veri seri durumdan çıkarma yöntemlerinin kullanılması.
  • MD2, MD4, MD5 ve SHA1 karma işlevlerini kullanır.
  • Güvenli olmayan DES şifrelerinin ve şifreleme modlarının kullanılması.
  • Python'un bazı sürümlerinde güvenli olmayan bir HTTPSConnection uygulamasının kullanılması.
  • urlopen'de file:// şemasının belirtilmesi.
  • Şifreleme görevlerini gerçekleştirirken sözde rastgele sayı üreteçlerini kullanma.
  • Telnet protokolünü kullanma.
  • Güvenli olmayan XML ayrıştırıcıları kullanma.

Ayrıca PyPI dizininde 8 adet kötü amaçlı paketin tespit edildiği belirtiliyor. Sorunlu paketler kaldırılmadan önce 30 binden fazla indirildi. Paketlerdeki basit statik analizörlerden gelen kötü amaçlı etkinlikleri gizlemek ve uyarıları atlamak için kod blokları Base64 kullanılarak kodlandı ve kod çözme sonrasında bir değerlendirme çağrısı kullanılarak yürütüldü.

Noblesse, Genesisbot, Are, Acı, Noblesse2 ve Noblessev2 paketleri, Chrome ve Edge tarayıcılarında saklanan kredi kartı numaralarını ve şifrelerini ele geçirmek, ayrıca Discord uygulamasından hesap belirteçlerini aktarmak ve ekran içeriklerinin ekran görüntüleri de dahil olmak üzere sistem verilerini göndermek için kod içerir. Pytagora ve pytagora2 paketleri, üçüncü taraf yürütülebilir kodu yükleme ve yürütme yeteneğini içeriyordu.

Kaynak: opennet.ru

Yorum ekle