deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Slopsquatting: Saldırganlar yapay zekâ asistanlarının var sanıp uydurduğu paket adlarını register ediyor

dev.to'daki bir yazı, saldırganların yapay zekâ kodlama asistanlarının uydurduğu var olmayan paket adlarını register edip bir geliştiricinin ya da agent'ın zararlı yükü kurmasını beklediği slopsquatting tekniğini ele alıyor.

Slopsquatting: Saldırganlar yapay zekâ asistanlarının var sanıp uydurduğu paket adlarını register ediyor

Saldırganlar geliştirici makinelerine girmek için ucuz bir yol buldu: yapay zekâ kodlama asistanlarının uydurduğu paket adlarını register etmek. dev.to'da yayımlanan yeni bir yazı, slopsquatting olarak bilinen bu tekniği, halüsinasyona dayalı bir import'un nasıl çalıştırılan koda dönüştüğünü ve tehlikeyi azaltan alışkanlıkları ayrıntılarıyla anlatıyor.

Saldırı nasıl işliyor

dev.to yazısına göre süreç, bir dil modelinin npm veya PyPI'da var olmayan ama gerçekçi duran bir paket adı önermesiyle başlıyor. Modeller gerçekçi metinler ürettiği için uydurma bir paket adı tıpkı gerçek bir öneri gibi okunuyor ve bir model aynı uydurma adı birçok konuşmada tekrarlayabiliyor. Birileri bu adı bir sohbet kaydında, tutorial'da, herkese açık bir repository'de ya da forum cevabında fark ediyor, onu içine zararlı kod gömülmüş şekilde bir registry'ye register ediyor ve bekliyor. Öneriyi takip eden bir sonraki geliştirici ya da AI agent install komutunu çalıştırdığında hata yerine saldırganın kodunu alıyor.

Yazı, slopsquatting'i popüler bir paket adının yazım hatasıyla değiştirilmiş halinin register edildiği typosquatting'in bir akrabası olarak konumlandırıyor. Fark, yanlış adın kaynağında: bir insanın yazım hatası tek bir kurbanına ulaşırken, bir modelin uydurması birçok kişiye kendinden emin bir şekilde tekrarlanıyor ve bu da register etmeyi cazip kılıyor. Register edilmeden önce uydurma bir ad etkileyici bir 404 hatasıyla başarısız oluyor; edildikten sonra ise install başarılı oluyor ve her şey normal görünüyor.

Bir install neden kod çalıştırıyor

Bir paketi kurmak yalnızca dosya indirmek değildir. npm'de bir paket, install sırasında kullanıcının izinleriyle otomatik olarak çalışan preinstall, install veya postinstall lifecycle script'leri bildirebilir. Python tarafında ise prebuilt bir wheel paket kodunu çalıştırmaz, ancak bir source distribution önce build edilmek zorundadır ve build adımı (örneğin bir setup.py dosyası) yazarın kodunu çalıştırır. Install script'leri devre dışı bırakılsa bile, her iki ekosistemde de bir paketin en üst düzey kodu ilk import edildiğinde çalışır.

Bu erişim önemli: bir laptop'ta shell ortamı, SSH anahtarları ve cloud credential'ları; CI'da ise deploy token'ları, registry credential'ları ve job'a görünen cloud anahtarları anlamına geliyor. Yazı, bunun native build'ler için kullanılan belgelenmiş, meşru bir npm davranışı olduğunu vurguluyor — asıl tehlike, kimin kodu olduğunu bilmeden bir install çalıştırmakta yatıyor.

Yapay zekâ araçları neden riski büyütüyor

Asistanlar yazarken bir registry'ye danışmıyor; bir paket adını bir fonksiyon adı ürettikleri gibi üretiyorlar ve bu ad, cevabın geri kalanına gösterilen güveni miras alıyor. Yazıya göre agentic araçlar sorunu katlıyor: bir sohbet asistanı size çalıştırmanız için bir komut veriyor, ancak shell erişimi olan bir kodlama agent'ı install'ı görev ortasında, kimsenin gözetiminde olmadan kendisi çalıştırabiliyor. Öneri, agent'lar için least privilege ilkesi: paket install'ları açık onay gerektirmeli. Yazar bunu, daha geniş bir vibe-coded güvenlik açıkları örüntüsünün parçası olarak çerçeveliyor: araç çalışan çıktı üretmeye optimize edilmiş durumda ve bir dependency'nin nereden geldiğini doğrulamak hiçbir zaman hedefin parçası olmamış.

Yazının önerdiği savunmalar

Önce doğrulama geliyor: önerilen bir paketin var olup olmadığını npm view ile ya da PyPI sayfasından kontrol edin, install komutlarını sohbetten değil projenin resmî dokümantasyonundan alın ve sinyalleri okuyun — registry'deki yaş, sürüm geçmişi, maintainer'lar, çözümlenen bir repository linki, indirme sayıları. Bunlar kanıt değil filtre, ama birkaç gün önce register edilmiş, tek sürümlü ve kaynak linki olmayan bir squat'ı yakalıyorlar.

İkinci olarak, lockfile'ları commit edin ve onlardan install yapın: CI ve Docker build'lerinde npm ci kullanın, pip sürümlerini hash'lerle pin'leyin ki değiştirilmiş bir dosya reddedilsin. Lockfile'lar kötü bir paketi güvenli hale getirmez ama incelendikten sonra değişmesini engeller.

Üçüncü olarak, dependency değişikliklerine kod gibi davranın. Manifest'teki yeni bir satır bir güven kararıdır; bunu pull request'lerde görünür kılın, bir agent'ın eklediği her dependency'yi bir insanın incelemesini zorunlu tutun ve asistanın satır içinde yazabileceği bir şeyi yapan minicik paketleri sorgulayın.

Dördüncü olarak, script'ler kapalıyken inceleyin: npm install --ignore-scripts lifecycle script'lerini engeller ve pip install --only-binary :all: source build'leri reddeder. Yazı şunu da ekliyor: bunlar safe mode değil, inceleme yardımcıları — meşru native build'ler install adımları olmadan bozulur ve import anındaki kod yine de çalışır.

Son olarak, etki alanını sınırlayın: bir install sırasında er ya da geç kötü bir şeyin çalışacağını varsayın ve CI job'larına yalnızca ihtiyaç duydukları secret'ları verin; böylece build-and-test job'ı production deploy credential'larını hiç görmesin.

Neden önemli

Slopsquatting herhangi bir araçtaki bir güvenlik açığı gerektirmiyor. Dil modellerinin doğal bir özelliğini — gerçekçi duran uydurma adlar — geliştiricilerin asistan çıktısına gösterdiği güvenle ve install'ların kod çalıştırması gerçeğiyle birleştiriyor. Agent'lar shell erişimi kazandıkça, "bir ad önerdi" ile "saldırgan kodunu çalıştırdı" arasındaki mesafe, install'lar gate'lenmedikçe sıfıra iniyor. Savunmalar ise yeni baştan yük taşıyan hale getirilen eski disiplinler: doğrula, pin'le, incele, izole et. Yazı ayrıca kullandığı tüm paket adlarının yalnızca örnekleme amacıyla uydurulduğunu belirtiyor — biri gerçek bir registry'de görünürse, bu saldırının ta kendisidir.

  • #supply-chain-security
  • #ai-coding-tools
  • #npm
  • #pypi
  • #package-management