PyPI Özelliği, Python Paketi İndirildikten Sonra Kodu Otomatik Olarak Yürütüyor


PyPi Kod Yürütme

Geliştiricileri artan bir tedarik zinciri saldırısı riskine maruz bırakabilecek başka bir bulguda, Python Paket Dizini olan PyPI’deki paketlerin yaklaşık üçte birinin, indirildikten sonra otomatik kod yürütmeyi tetiklediği ortaya çıktı.

Checkmarx araştırmacısı Yehuda Gelb bu hafta yayınlanan bir teknik raporda, “Pip/PyPI’deki endişe verici bir özellik, geliştiriciler yalnızca bir paketi indirirken kodun otomatik olarak çalışmasına izin veriyor.” Dedi.

“Ayrıca, bu özellik, vahşi ortamda bulduğumuz kötü amaçlı paketlerin çoğunun, daha yüksek enfeksiyon oranları elde etmek için kurulumdan sonra bu kod yürütme özelliğini kullanması nedeniyle endişe verici.”

Paketlerin Python için kurulma yollarından biri, modülle birlikte gelen “setup.py” adlı bir dosyayı çağıran “pip install” komutunu çalıştırmaktır.

Siber güvenlik

Adından da anlaşılacağı gibi “setup.py”, bağımlılıkları da dahil olmak üzere paketle ilişkili meta verileri belirtmek için kullanılan bir kurulum komut dosyasıdır.

Tehdit aktörleri setup.py dosyasına kötü amaçlı kod eklemeye başvursa da Checkmarx, rakiplerin “pip indirme” komutu olarak adlandırılan komutu çalıştırarak aynı hedeflere ulaşabileceğini buldu.

“pip indirme, pip kurulumu ile aynı çözünürlüğü ve indirmeyi yapar, ancak bağımlılıkları kurmak yerine, indirilen dağıtımları sağlanan dizine toplar (varsayılan dizine göre),” belgeler okur.

PyPi Kod Yürütme

Başka bir deyişle, komut, sisteme yüklemeye gerek kalmadan bir Python paketini indirmek için kullanılabilir. Ancak, ortaya çıktığı gibi, indirme komutunun yürütülmesi, yukarıda belirtilen “setup.py” komut dosyasını da çalıştırarak, içinde bulunan kötü amaçlı kodun yürütülmesine neden olur.

Ancak, sorunun yalnızca pakette tekerlek (.whl) dosyası yerine “setup.py” yürütmesini denklemden çıkaran bir tar.gz dosyası içerdiğinde ortaya çıktığını belirtmekte fayda var.

Gelb, “Paketleri kurmak yerine indirmeyi seçen geliştiriciler, makul olarak, dosyaları indirdikten sonra makinede hiçbir kodun çalışmamasını bekliyorlar,” dedi ve bunu bir hatadan ziyade bir tasarım sorunu olarak nitelendirdi.

pip varsayılan olarak tar.gz dosyaları yerine tekerlekleri kullanmayı tercih etse de, bir saldırgan python paketlerini bir .whl dosyası olmadan kasıtlı olarak yayınlamak için bu davranıştan yararlanabilir ve bu da kurulum komut dosyasında bulunan kötü amaçlı kodun yürütülmesine yol açabilir.

Siber güvenlik

Gelb, “Bir kullanıcı PyPi’den bir python paketi indirdiğinde, pip tercihen .whl dosyasını kullanacak, ancak .whl dosyası eksikse tar.gz dosyasına geri dönecek” dedi.

Bulgular, ABD Ulusal Güvenlik Ajansı (NSA), Siber Güvenlik ve Altyapı Güvenlik Ajansı (CISA) ve Ulusal İstihbarat Direktörü Ofisi (ODNI) ile birlikte yazılım tedarik zincirini güvence altına almak için kılavuz yayınladı.

Ajans, “Siber tehdit daha karmaşık hale gelmeye devam ettikçe, düşmanlar herkesin bildiği güvenlik açıklarına güvenmek yerine yazılım tedarik zincirine saldırmaya başladı” dedi. “Tüm DevOps’lar DevSecOps olana kadar, yazılım geliştirme yaşam döngüsü risk altında olacaktır.”





Source link