deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

OpenAI tarayıcı trafiği, uyumsuz gem metaverisi sunan bir RubyGems önbellek hatasını ortaya çıkardı

RubyGems'in CDN'indeki bir önbellek anahtarı çakışması, OpenAI botları kayıt defterini ölçekli olarak taramaya başladığında bayat veya uyumsuz gem verisi sunmasına yol açtı. dev.to'daki bir yazı, npm'in aynı riski taşıdığını savunuyor ve tüketici tarafı savunmaları listeliyor.

OpenAI tarayıcı trafiği, uyumsuz gem metaverisi sunan bir RubyGems önbellek hatasını ortaya çıkardı

Ne oldu

RubyGems de çoğu büyük paket kayıt defteri gibi, servise her saniye gelen kurulum isteklerinin yükünü absorbe etmek için paket dizininin önünde CDN destekli bir önbellek katmanı çalıştırıyor. dev.to'daki bir yazıya göre bu katmanın önbellek anahtarı işlemesindeki bir hata çakışmalara yol açabiliyor ve CDN, farklı bir paket veya sürüm için yapılan bir isteğe başka bir paketin metaverisini — bazı uç durumlarda ise içeriğini — döndürebiliyordu.

Hata, normal trafik altında fark edilmeyecek kadar nadirdi. Yazıya göre onu ortaya çıkaran, gem metaverisini yüksek frekansta kazıyan OpenAI tarayıcı botlarının davranışı oldu. Bu yoğun ve desenli trafik, önbelleğin meşru gem kurulumlarına bayat ve olası zehirli veri sunduğunu gün yüzüne çıkardı. Yazı, Tenderlove'ün gemspec'lerin yanlış paket adlarıyla sunulduğunu anlatan bir değerlendirmesine atıfta bulunuyor — hiçbir kötü niyetli aktör olmadan gerçekleşmiş, neredeyse en kötü senaryo sayılabilecek bir tedarik zinciri sonucu.

Hatadan önce istismar edildiğine dair bir kanıt ortaya çıkmadı. Ancak mekanizma oradaydı: önbellek anahtarı mantığını çözen biri, popüler bir gem adının kurulumların bir kısmı için saldırgan kontrollü koda çözümlenmesi amacıyla kasıtlı olarak çakışmalar mühendislikle üretebilirdi.

Bir Ruby sorunu değil, bir kayıt defteri sorunu

dev.to yazısı, merkezî bir kayıt defteri ve önünde bir CDN bulunan her ekosistemin — npm, PyPI, crates.io — aynı saldırı yüzeyini taşıdığını savunuyor. npm kayıt defteri Cloudflare arkasında duruyor ve önbellek anahtarı mantığı kusurları, tek seferlik bir Ruby hatası değil bir güvenlik açığı sınıfı. npm zaten typosquatting, bağımlılık karışıklığı ve bakıcı hesabı ele geçirmelerinden geçti; önbellek zehirlenmesi ise ne güvenliği tehlikeye girmiş bir bakıcı ne de yayınlanmış kötü niyetli bir paket gerektirmeyen bir vektör eklerdi. Bu, tüketicilerin ne kontrol edebildiği ne de denetleyebildiği altyapıyı hedef alıyor; yazı bunu, incelediği saldırı sınıflarının en az anlaşılanı olarak nitelendiriyor.

npm'i aynı hataya karşı sağlamlaştırma

Yazının büyük kısmı, npm'in önbelleğinde aynı sınıftan bir hatanın barınabileceği varsayımına dayanan, npm kullanıcılarına yönelik pratik önerilerden oluşuyor:

  • Lockfile'dan kurulum yapın. package-lock.'daki (veya pnpm ve Yarn eşleniklerindeki) her girdi, beklenen tarball'ın SHA-512 bütünlük karmasını kaydeder. npm ci her indirmeyi bu karmaya karşı doğrular, lockfile'ı değiştirmeyi reddeder ve uyumsuzlukta sert biçimde başarısız olur — zehirli bir önbelleği sessiz kötü niyetli bir kurulum yerine gürültülü bir bütünlük hatasına dönüştürür. Düz npm install sessiz çözümleme kaymasına açık kalmaya devam eder.
  • İmzaları ve provenance'ı doğrulayın. npm 9.5'ten beri kullanılabilen npm audit signatures, paket imzalarını kayıt defterinin açık anahtarına karşı denetler. Sigstore üzerine kurulu npm'in provenance özelliği, yayınlanan bir paketi kriptografik olarak onu inşa eden CI hattına ve commit'e bağlar. Zehirli bir tarball geçerli bir attestation taşımaz, dolayısıyla araçlar uyumsuzluğu otomatik olarak işaretleyebilir.
  • ^4.19.2 gibi aralıklar yerine kesin sürümleri sabitleyin; böylece bir önbellek hatasının sürüm aralığını beklenmedik içeriğe çözümlediği boşluk kapanır.
  • Kurulumları Verdaccio, Artifactory veya Nexus gibi özel bir proxy üzerinden geçirin. Bu, upstream riskini ortadan kaldırmaz; ancak bilinen iyi tarball karmalarının genel CDN davranışından bağımsız olarak kaydedilebileceği bir kontrol noktası yaratır.
  • CI kurulumlarını npm ci --ignore-scripts ile çalıştırın; en yıkıcı kombinasyon olan zehirli tarball artı kötü niyetli postinstall script kombinasyonunu etkisizleştirir.

Neden önemli

RubyGems olayı, paket bütünlüğünün yalnızca bir paketi kimin yayınladığına değil, onu hangi altyapının sunduğuna da bağlı olduğunu hatırlatıyor. Zararsız, yüksek hacimli bir tarayıcı bile kayıt defterinin meşru kurulumlara teslim ettiği şeyi değiştirmeye yetti; aynı önbellek anahtarı mantığını inceleyen düşmanca bir aktör aynı şeyi sessizce ve daha büyük etkiyle yapabilirdi. Kayıt defterleri sunduklarını uçtan uca doğrulayana kadar pratik savunma tüketicilerde: lockfile karmalarını zorunlu kılın, imzaları ve provenance'ı denetleyin ve CDN'i, sizinle kurduğunuz kod arasındaki güvenilmeyen bir başka atlama noktası olarak görün.

  • #rubygems
  • #npm
  • #supply-chain-security
  • #package-managers
  • #caching

İlgili yazılar