Rust Güvenlik Yanıtı Ekibi, Miri'nin tüm ortam değişkenlerini depoladığını bildiren bir uyarı aldı.Hedef/Gizli bilgileri önbelleklere saklayarak, bunların devam etmesine izin veriyor.
Kendinden başlı olarak bir güvenlik açığı olmasa da, GitHub Actions önbellek davranışıyla birleştirildiğinde, bu PR'lara gizli bilgileri açığa çıkarabilir.
Genel Bakış
GitHub Actions, dizinleri çalıştırmalar arasında önbelleğe alma imkanı sunar. Tipik yapılandırmalar, CI çalıştırmalarını üzerinde gerçekleştirir.Ana Sayfa: Ana haberler, güncel olaylar ve günün en önemli haberleri.(diğer şubeler de dahil)YazÖnbelleğe almak ve yalnızca PR'lar önbelleği temizleyebilirOkumakÖnbellekten okunur (önbellek zehirlenmesini önleyerek)`cargo install` ile derlenen ikili dosyaları önbelleğe alırve bazen `target/` dizininin içeriğini`target/`.
PR CI, herhangi bir kişi tarafından tetiklenebilir, kim bir depoya PR açabilir. GitHub, için bakımci onayı gerektirir.İlkPR, ancak gelecekteki PR'lar her itme için CI'yi yeniden çalıştıracak. Daha önce bir değişiklik indiren herkes, arşivlenmiş bilgilerle bir CI çalıştırmasını tetikleyebilir.Hedef/Ve sonra, PR'a ikinci bir commit iterek izlerini silip saklarlar.
GitHub bazen kullanıcı arayüzünde üzerine yazılmış komutları gizler, bu tür saldırıların tespit edilmesini zorlaştırır. CI çalıştırma günlükleri ve üzerine yazılmış komutlar da birkaç ay sonra silinir.
Ne zaman...Görev miriMiri'nin çalıştırmalar arasında ilgili yapılandırma değişkenlerini tutması gerekiyor, bu çağrıldığında etkinleştirilir.1Mevcut kod, bunu yapmak için depolayarak bunu gerçekleştirir.Tüm çevre değişkenlerini 0'a indirge.Hedef/Elbette, bu durum devam eder, özellikle de... (cümle tamamlanmadı, bu nedenle çeviri kesintili)Hedef/Bu metin saklandı.
Çevrenizdeki sırlar varsa, bunlar artık PR'lar tarafından önbellek aracılığıyla erişilebilir.
Çözümümüz
BizimKısa vadeli çözümlerimizBu, Miri'yi sadece korumakla ilgili olmalıCARGO_*Ortam değişkenleri (CARGO_*_TOKEN hariç)ve) veOUT_DIRUzun vadede, Miri ve yüklemeler, ilgili çevre değişkenleri hakkında Miri'yi bilgilendirmek için daha iyi yöntemler belirleyebilir. Bu yamanın henüz gece sürümünde mevcut olmayabileceğini unutmayın.
Ayrıca, GitHub depolarını bir ekosistem taraması yaptık ve bu sorunu içeren 1 depo ve savunmasız görünen ancak yine de dikkatli olması gereken 7 depo belirledik. Bu depoların yöneticileriyle iletişime geçtik.
Etki altındayım mı?
Taramamızın kusurlu olma ihtimali var, bu yüzden Miri'yi çalıştırıyorsanız kendi GitHub Actions ayarlarınızı kontrol etmenizi öneririz.
Şunlar varsa savunmasızsınız:
- Aşağı komutu çalıştırıyorsunuz:
cargo miriCI'de (Sürekli Entegrasyon) - Adımın çalışması
Mirı yüklemeSırlara erişimOrtam değişkeni olarak:- Adımın kendisi ortam değişkeni olarak geçirilerek
- Ayarlanarak
envAkış için - Bir önceki adıma geçilerek, onu çevrede bir şekilde devam ettirir.
- Kullanılan iş akışı, depolar...
HedefDizin, genellikle aracılığıyla yapılır.Eylemler/ÖnbellekMetin: "Yeni bir araştırma, küresel ısınmanın deniz seviyesinin yükselmesine önemli ölçüde katkıda bulunduğunu ortaya koyuyor. Bilim insanları, son yarım yüzyılda deniz seviyesinin yaklaşık %20'sinin insan faaliyetlerinden kaynaklandığını belirlediler. Bu, özellikle kıyı bölgeleri için büyük bir endişe kaynağı."Swatinem/Rust-önbelleği - Önbellek, PR'lar için erişilebilir (genel ve genellikle amaçlanan kullanım durumu).
Olası hızlı düzeltmeler şunları içerir:
- Görev için önbelleği devre dışı bırak.
- Sırları o göreve ait adımlara sınırla, Miri'yi çağırmayanları.
- Miri'yi geçici olarak devre dışı bırak.
Yapıldığında,lütfen önbelleği temizle.Sızan herhangi bir sırrı döndürmeyi düşün.
Yaklaşan geceleyin (2026-09-22) yayınlanacak Miri sürümü bu sorunu artık yaşamayacak.
Hatta Miri'yi çalıştırmıyorsanız bile,Kamu önbelleklerine yazabilen işlerin sırlara erişmemesini sağlayın. Birçok araç sırlar için özel işlem yapmaz ve tüm ortamı dosya sistemine yazabileceğini varsayar.
Tehdit Modeli
Sırların kolayca kirlenebileceği bir önbelleğin olması kötü bir uygulama olarak kabul edilir.
Önbelleğe alırsanız,hedef/, girdilerin, hedefleri oluşturan süreçlere yazılmasını sağlayacak şekilde emin olun.hedef/(Herhangi bir şey) görevle ilgili olmalı.Görev.) Gizli bilgiler mevcut değil. Standart görevler için genellikle gizli bilgiler veya belirteçler gerekmez.Görev.Yapılandırma/test alt komutları genellikle gizli bilgiye veya belirtece ihtiyaç duymaz.2Bu nedenle, çoğunlukla tüm iş için ortam değişkenlerine gizli bilgilerin maruz kalmasını önlemek konusunda dikkatli olmak bir meseledir.
Cargo/Miri/Rust, ortam değişkenlerinin hedefe kopyalanmasını önlemez.hedef/Güvenlik sorunu olarak ele alıyoruz ve önlem olarak bu sorunu düzeltiyoruz, ancak genel olarak buna güvenmemelisiniz. Resmi Rust araçlarının ötesinde, derleme sanatı ürünlerinde ortamı depolayacak şekilde yapılandırma betiklerinin yapabilecekleri vardır.
Tanımlar
TeşekkürlerPredrag GruevskiOpenAI'den bu sorunu bize bildirmesi için. Ayrıca, ekosistem taraması, OpenAI tarafından sağlanan Codex erişimi ve kredi kullanılarak gerçekleştirildi, onlara da teşekkür ederiz.
Sorun sınıflandırması ve düzeltmesi, Manish Goregaokar, Ralf Jung, Ben Kimock, Weihang Lo, Jacob Finkelman, Walter Pearce, Josh Stone ve Mark Rousskov tarafından yapıldı.