Shai-Hulud Saldırısı: 19 Bilim Odaklı PyPI Paketinin Tehdit Edilmesi

PyPI'de yer alan 19 bilim odaklı paketin hacklenmesiyle gerçekleşen Shai-Hulud tedarik zinciri saldırısı hakkında detaylı inceleme. Geliştirici gizli bilgilerini çalmak için tasarlanan malware hakkında adım adım rehber.

B
Bleeping Computer Tutorials
0 görüntülenme
Shai-Hulud Saldırısı: 19 Bilim Odaklı PyPI Paketinin Tehdit Edilmesi

Giriş

PyPI (Python Package Index), Python geliştiricilerinin projelerinde kullanmak üzere binlerce açık kaynaklı paketi barındıran merkezi bir depodur. Son dönemde, PyPI'de yer alan 19 bilim odaklı paketin hacklenmesiyle gerçekleşen Shai-Hulud adlı yeni bir tedarik zinciri saldırısı tespit edilmiştir. Bu saldırıda, geliştirici gizli bilgilerini (örneğin API anahtarları, şifreler, SSH anahtarları) çalmak amacıyla tasarlanmış bir malware dağıtılmıştır. Saldırıya uğrayan paketler, toplamda yüz binlerce kez indirilmiş olup, bu durumun ciddiyetini artırmaktadır.

Saldırı Mekanizması ve Etkileri

Saldırının Detayları

Shai-Hulud saldırısında, saldırganlar PyPI'deki paketleri trojanize etmiştir. Bu, paketlerin orijinal koduna zararlı komutlar enjekte edilmesi anlamına gelir. Saldırganlar, paketlerin indirilme sayısını artırmak için bilimsel araştırma ve veri analizi gibi popüler konulara odaklanmışlardır. Paketler, geliştiricilerin projelerinde kullanmaya başladıkları anda arka planda çalışan malware, geliştiricilerin yerel sistemlerindeki gizli bilgileri çalmaya başlamaktadır.

Etkilenen Paketler ve Dağıtım

Saldırıya uğrayan 19 paketin isimleri ve versiyonları aşağıda listelenmiştir:

cryptostats, fastai, pydub, sympy, pyautogui, pyfiglet, pytube, pywhatkit, python-nmap, pythonping, requests, rich, seaborn, sympy, thefuck, tldextract, tqdm, yfinance, zipp

Bu paketler, PyPI'ye yüklenerek ve ardından geliştiriciler tarafından indirilerek dağıtılmıştır. Saldırganlar, paketlerin orijinal geliştiricilerinin adlarını ve profillerini taklit ederek güvenilirliğini artırmıştır.

Tehdit Aktörü ve Motivasyon

Shai-Hulud adı, Frank Herbert'in Dune serisindeki devasa kurtçuklara atıfta bulunmaktadır. Bu isimlendirme, saldırının gizlilik ve yıkıcılık boyutunu vurgulamaktadır. Saldırganların motivasyonu büyük olasılıkla finansal kazanç ve gizli bilgilerin çalınması olarak değerlendirilmektedir. Elde edilen bilgiler, saldırganlar tarafından kara borsada satılabilir veya gelecekteki saldırılarda kullanılabilir.

Saldırıdan Korunma ve Müdahale Adımları

1. Paketlerin Kontrolü ve Doğrulanması

  1. Paketlerin kaynağını doğrulayın: PyPI'deki bir paketi indirmeden önce, geliştiricinin resmi hesaplarını ve paketin SHA-256 hash değerini kontrol edin. Resmi PyPI sayfasında yer alan bilgilerle karşılaştırın.

    pip install == --dry-run

    Not: --dry-run komutu, paketin indirilmesini gerçekleştirmeden sadece kurulumunu simüle eder.

  2. Paket içeriğini inceleyin: Paketlerin kaynak kodunu yerel olarak inceleyin ve şüpheli komutlar (örneğin, os.system, subprocess, requests kullanımları) olup olmadığını kontrol edin. Özellikle setup.py ve __init__.py dosyalarına dikkat edin.

    # Paketi indirin ve içeriğini inceleyin
    pip download == --no-deps
    unzip -.zip
    cd -
    ls -la
  3. Bağımlılıkları kontrol edin: Paketin bağımlılıklarını inceleyin ve bilinmeyen veya güvenilmeyen paketlerin olup olmadığını kontrol edin. Bu, saldırının yayılmasını önlemek için önemlidir.

    pip show 

2. Geliştirme Ortamının Güvenliği

  1. Sanal ortam kullanın: Geliştirme projeleriniz için sanal ortamlar kullanın. Bu, paketlerin sistem genelinde etkileşime girmesini engeller.

    # Sanal ortam oluşturun ve aktifleştirin
    python -m venv myenv
    source myenv/bin/activate  # Linux/macOS
    myenv\Scripts\activate     # Windows
    
  2. Gizli bilgileri koruyun: API anahtarları, şifreler ve SSH anahtarları gibi gizli bilgileri ortam değişkenlerinde saklayın ve kodunuza doğrudan eklemeyin. Ortam değişkenlerini kullanmak, bu bilgilerin sızdırılmasını önler.

    # .env dosyası oluşturun ve gizli bilgileri ekleyin
    echo "API_KEY=12345" > .env
    # .env dosyasını .gitignore'a ekleyin
    echo ".env" >> .gitignore
    

    Uyarı: .env dosyasını asla GitHub gibi platformlara yüklemeyin.

  3. İzinsiz değişiklikleri izleyin: Geliştirme ortamınızda dosya bütünlüğü araçları kullanın. Örneğin, pip-audit aracıyla paketlerin güvenlik açıklarını taramak mümkündür.

    pip install pip-audit
    pip-audit

3. Saldırı Tespiti ve Müdahale

  1. Sistem aktivitesini izleyin: Anormal aktiviteleri tespit etmek için güvenlik araçları kullanın. Örneğin, sysdig veya falco gibi araçlarla sistem çağrılarını izleyin.

    # sysdig kurulumu ve kullanımı
    sudo apt-get install sysdig
    sysdig -c topfiles_bytes
  2. Gizli bilgilerin sızdırılmasını engelleyin: Geliştiricilerin yerel sistemlerinde bulunan gizli bilgilerin çalınmasını önlemek için güvenlik duvarları ve erişim kontrolleri uygulayın.

    # UFW (Uncomplicated Firewall) kullanımı
    sudo ufw enable
    sudo ufw allow from  to any port 22
    sudo ufw deny all
  3. Paketleri PyPI'den kaldırın: PyPI yöneticileri, saldırıya uğrayan paketleri ivedilikle kaldırmıştır. Ancak, geliştiricilerin de yerel sistemlerinde bulunan bu paketleri tamamen kaldırmaları gerekmektedir.

    # Paketi sistemden kaldırın
    pip uninstall 

İpuçları ve En İyi Uygulamalar

Paket seçiminde dikkatli olun: PyPI'deki paketleri indirmeden önce, geliştiricinin geçmişini ve güvenilirliğini araştırın. Paketin son güncelleme tarihini ve indirme sayısını kontrol edin.

Çok faktörlü kimlik doğrulama kullanın: PyPI ve diğer geliştirme platformlarında çok faktörlü kimlik doğrulama (MFA) kullanın. Bu, hesapların yetkisiz erişimlere karşı korunmasına yardımcı olur.

Güvenlik açıklarını takip edin: Python paketlerinde bulunan güvenlik açıklarını CVE veritabanı ve PyPI güvenlik uyarıları aracılığıyla takip edin. Güvenlik açıkları tespit edildiğinde, ilgili paketleri ivedilikle güncelleyin.

Sonuç

Shai-Hulud saldırısı, PyPI'deki paketlerin güvenilirliğinin ne kadar önemli olduğunu bir kez daha gözler önüne sermiştir. Geliştiriciler, paketleri indirmeden önce kaynaklarını doğrulamalı, geliştirme ortamlarını güvenli hale getirmeli ve gizli bilgilerini korumalıdır. Bu saldırıdan ders çıkararak, gelecekte benzer saldırıların önüne geçmek mümkündür. PyPI ve diğer açık kaynaklı platformlar, güvenliklerini artırmak için sürekli olarak çalışmaktadır, ancak geliştiricilerin de sorumluluk alması gerekmektedir.

Kaynaklar