GH Actions - Cache Poisoning
Daha fazla ayrıntı için orijinal yazıya bakın https://scribesecurity.com/blog/github-cache-poisoning/
Önbellek Zehirlenmesi
Git eylemi action/cache, Sürekli Entegrasyon (CI) sürecinde bir önbellekleme mekanizması sunar ve iki önemli aşamayı kapsar:
Eylemi Çalıştır: Bu aşama, CI çalışması sırasında önbelleğe alınmış verilerin aranması ve alınmasıyla ilgilidir. Arama, benzersiz bir önbellek anahtarı kullanır ve iki sonuç üretir:
Önbellek bulma: İstenen veri önbellekte bulunur ve dolayısıyla hemen kullanım için alınır.
Önbellek bulunamama: Önbellekte eşleşen veri bulunamaz, bu da gereken dosya ve dizinlerin taze bir indirmeyle istenmesine benzer şekilde ilk kez istek yapılmasını tetikler.
Son İş Akışı Eylemi: Bu aşama, CI iş akışından sonra veri önbelleğine alınmıştır. Özellikle, çalışma eylemi sırasında önbellek bulunamama durumu oluşursa, belirtilen dizinlerin mevcut durumu sağlanan anahtar kullanılarak önbelleğe alınır. Bu işlem otomatiktir ve açıkça çağrı gerektirmez.
Güvenlik Önlemleri: Önbellek İzolasyonu ve Erişim Kısıtlamaları
Güvenliği sağlamak ve önbellek izolasyonunu sağlamak için erişim kısıtlamaları uygulanır ve farklı dallar arasında mantıksal bir ayrım oluşturulur. Örneğin, ana dalda temel alan Özellik-A adlı bir dal için oluşturulan bir önbelleğe, ana dalda temel alan Özellik-B adlı bir dalın pull isteği erişemez.
Önbellek eylemi belirli bir arama sırasına uyar:
İlk olarak, iş akışı çalışmasıyla aynı dalda önbellek bulma arar.
Başarısız olursa, aramayı üst dal ve diğer yukarı akış dallarına genişletir.
Önemli bir şekilde, önbellek erişimi dal kapsamlıdır ve belirli bir dalın tüm iş akışları ve çalışmaları boyunca geçerlidir. Ayrıca, GitHub, önbellek girişlerinin oluşturulduktan sonra salt okunur bir politika uygular ve herhangi bir değişikliği yasaklar.
Gerçek Dünya Etkisi: Düşük İzinli İş Akışından Yüksek İzinli İş Akışına Saldırı
Bir örnek CI senaryosu, bir saldırganın önbellek zehirlenmesini kullanarak düşük izinli bir iş akışından yüksek izinli bir iş akışına ayrıcalıkları yükseltmesini nasıl gerçekleştirebileceğini gösterir:
Birim test iş akışı, birim testlerini ve kod kapsama araçlarını çalıştırmaktan sorumlu olup, tehlikeli veya savunmasız bir araç kullanmaktadır. Bu iş akışı, önbelleğe herhangi bir iş akışından erişilebilir hale getiren action/cache Git eylemini kullanır.
Uygulama paketini oluşturup yayınlayan Yayın iş akışı, Golang bağımlılıklarını önbelleğe alarak işlemlerini optimize eder.
Bu senaryoda, birim test iş akışı, meşru bir Golang günlükleme kütüphanesini (go
Last updated