1 puan yazan GN⁺ 4 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • AUR’de (Arch User Repository) çok sayıda zararlı commit enjekte edilerek, paket kurulum sürecinde npm install atomic-lockfile çalıştıracak şekilde değiştirilmiş bir tedarik zinciri saldırısı yaşandı
  • Salt okunur ayna arama sonuçlarına göre, yaklaşık 408 paketin PKGBUILD, .install ve .hook dosyalarında aynı zararlı komut doğrulandı
  • Zararlı commit’ler, bir önceki commit’in adını ve e-posta adresini taklit ederek normal bakımcı gibi görünen bir commit sahteciliği yöntemi kullanıyor; bu durum hesap ele geçirilmesinden ayrı bir konu
  • Arch tarafı, zararlı commit’leri sıfırlama/silme ve hesap engelleme işlemlerini sürdürüyor; ek zararlı paketlerin tek bir başlık altında toplanarak bildirilmesi isteniyor
  • Topluluk üyeleri tek tek paket commit’lerini art arda bildirerek iş birliğine dayalı bir müdahale yürütüyor; bu, AUR paket ekosisteminin geneline etki eden büyük ölçekli bir olay

Olayın özeti ve müdahale çağrısı

  • AUR’ye çok sayıda zararlı commit eklendiğine dair bulgular paylaşıldı ve zararlı commit’leri sıfırlama/silme ile hesap engelleme çalışmaları sürüyor
  • Ek zararlı paketler bulunursa, aynı başlık altında toplanabilmesi için bu e-postaya yanıt vererek bildirilmesi istendi
  • Koordinasyondan sorumlu kişi, iletilen tüm bildirimleri gördüğünü belirtti ve bildirim için zaman ayıran katılımcılara teşekkür etti

Zararlı kod deseni — atomic-lockfile

  • Değiştirilen paketlerin ortak özelliği, npm install atomic-lockfile komutunu çalıştırmaları ve sonuna ora, fast-glob, glob, minimist, axios, commander, execa, chalk, debug gibi ek npm paket adlarının eklenmesi
  • Zararlı komutun bulunduğu dosya türleri
    • *-deps.install biçimindeki kurulum betikleri
    • *.install paket kurulum betikleri
    • *.hook dosyaları — örneğin Exec = /bin/sh -c 'cd /tmp && npm install atomic-lockfile ... 2>/dev/null; exit 0' biçiminde /tmp içinde çalıştırılıp hataları gizleyerek sonlanan yapı
    • Bazı durumlarda install.sh gibi ilgili dosyalara da eklenmiş
  • Yeni oluşturulmuş zararlı paket örneği olarak exodus-wallet-bin bildirildi; ilk commit’e göre yaklaşık 4 saat önce oluşturulmuş yeni bir paket olduğu görüldü

Tespit yöntemi ve etki kapsamı

  • Tespit, salt okunur aynanın doğrudan incelenmesiyle yapıldı
    • git clone https://github.com/archlinux/aur.git sonrasında tüm ref’ler dolaşılıp git grep 'atomic-lockfile' çalıştırıldı
    • Bunun sonucunda, atomic-lockfile kuran yaklaşık 408 paketin uzun bir listesi elde edildi; bu liste otomatik temizleme işlemlerinde kullanılabilir
  • Etkilendiği belirtilen paket örnekleri
    • runescape-launcher, oracle-bin, tesseract-gui, python-starsessions, bitcoin-core-git, apple-music-desktop, exodus-wallet-bin, anythingllm-appimage, arm-linux-gnueabihf-binutils vb.
    • cutefish-*, python2-*, python-* aileleri gibi çok geniş paket grupları da buna dahil
  • Çok sayıda tekil bildirim nedeniyle e-posta trafiği artınca, birden fazla kaydın tek e-postada birleştirilerek gönderilmesi önerildi; IRC’de birleştirilmiş paket listesi ayrıca paylaşıldı

Taklit/sahtecilik yöntemi

  • Belirli bir hesap (arojas) ile ilişkili paketlerde, bunun hesap ele geçirme mi yoksa commit sahteciliği mi olduğu sorusu gündeme geldi
  • Buna karşılık, zararlı commit’lerin bir önceki commit’in adını ve e-posta adresini taklit ettiği (impersonate) doğrulandı — yani commit metaverisi sahteciliği söz konusu
  • Aynı kullanıcının diğer paketlerinden bazılarının zaten düzeltilmiş olduğu da bildirildi

Müdahalenin mevcut durumu

  • Bildirilen paket commit’leri sırayla işlendi ve bazı girdiler için düzeltildi (Done) yanıtı verildi
  • Ek bildirimler geldikçe koordinasyondan sorumlu kişi, ulaşan kayıtları toplu olarak kontrol etti; bu süreç engelleme ve sıfırlama çalışmalarıyla paralel yürütülüyor
  • Çok sayıda katılımcı, commit bağlantılarıyla birlikte tek tek paketleri bildirerek topluluk öncülüğünde iş birliğine dayalı bir müdahale yürüttü

1 yorum

 
GN⁺ 4 시간 전
Lobste.rs yorumları
  • Bu olayla birlikte topluluğun anonim ve doğrulanmamış katkılara duyduğu güvenin neredeyse tamamen biteceği gibi geliyor
    Sanki güvenin gerçek zamanlı olarak aşındığını izliyoruz

    • Açık konuşmak gerekirse bu iyi bir şey ve zaten çok gecikmişti. Sektör olarak artık kendimize gelmemiz gerekiyor
      Bilgisayarlara kişisel ve hassas verilerimizi fazlasıyla emanet ediyoruz ve onlar modern yaşamın merkezine yerleşmiş durumda. Kişisel bilgisayarın ele geçirilmesi gerçekten felaket seviyesinde bir olay; en fazla, şanslıysan, bir saldırganın seni özellikle hedef alacak kadar ilginç bulmamasını umabilirsin
      Buna rağmen nedense rastgele herhangi bir programı tam yetkiyle çalıştırmayı normalleştirdik[1] ve bunun kötü bir fikir olduğu ortaya çıktığında da şaşırmış gibi davranıyoruz
      [1] Bu, mevcut kullanıcı yetkisi için söyleniyor. Çoğu kurulumda root’un fiilen pek bir anlamı yok
    • KDE, bir hafta önce kendi build pipeline’ından AUR’yi çıkarmıştı; muhtemelen bu saldırının daha önceki bir sürümüne verilen bir yanıttı
    • AUR paket incelemesine güven ağı modeli uygulamak ve bunu son güncellemeler için bir bekleme süresiyle birleştirmek ilginç olabilir
      AUR paketlerini kurarken veya güncellerken şöyle seçenekler sunan bir sistem hayal ediyorum: paket yakın zamanda güncellendiyse 1 hafta beklemek, birkaç dakikanı ayırıp paketi bizzat incelemek ve itibarına bağlı imzalı bir inceleme bırakmak ya da yeterli güven biriktirmiş başka kişilerin birden fazla imzalı incelemesine dayanmak
      Bekleme süresi, Arch’ın tüm paketleri birlikte güncel tutma politikasıyla teknik olarak uyuşmayabilir. Ama AUR paketleri zaten resmî destek kapsamında da değil
  • Aradan birkaç saat geçmiş olmasına rağmen NPM paketi hâlâ kaldırılmamış: https://www.npmjs.com/package/atomic-lockfile

  • Kurulu paketlerin etkilenip etkilenmediğini kontrol etmek için aur_pkg_list.txt dosyasıyla birlikte şu küçük betiği kullanabilirsiniz

    installed_pkgs="$(yay -Qq)";  
    grep refs aur_pkg_list.txt | awk -F/ '{print $4}' | tr -d ')' \  
    | while read -r pkg; do \  
        echo "$installed_pkgs" | grep "^$pkg\$"; \  
    done  
    

    Noktalı virgülleri ekledim, böylece tek satırlık komuta dönüştürmek kolay olsun :-)

    • Bunun alt dizeleri de eşleştirdiği görülüyor. Örneğin ktea, kteatime ile de eşleşiyor
      Bu sürüm çalışıyor gibi görünüyor

      grep refs aur_pkg_list.txt | awk -F/ '{print $4}' | tr -d ')' | while read -r pkg; do  
         echo "$installed_pkgs" | grep "^$pkg\$";  
      done  
      
  • Bu olay bir süredir devam ediyor olabilir. 18 gün önceki bu e-postaya bakılırsa benzer bir zararlı payload kullanılmış gibi görünüyor, ancak kötü niyetli commit depodan tamamen kaldırılmış gibi

  • Bununla bağlantılı olarak, popüler Linux dağıtımlarının tedarik zinciri güvenliği duruşunu iyi karşılaştıran bir kaynak var mı? Şimdiye kadar bulduklarımın çoğu üstü kapalı pazarlama metni ya da yapay zekâ üretimi vasat yazılar gibi görünüyordu. Galiba kendim araştırmam gerekecek
    Moral bozucu tarafı şu: topluluk temelli geliştirme idealini sevsem de, tedarik zinciri kaygıları yüzünden daha kapalı seçeneklere, hatta mülkî yazılımlara bile daha yakından bakmaya başlıyorum