GitHub Actions işleyicisindeki bir güvenlik açığı, Nixpkgs'deki paketlerin tehlikeye atılmasına olanak sağladı.

NixOS dağıtımında ve Nix paket yöneticisi ekosisteminde kullanılan Nixpkgs paket deposuna çekme istekleri gönderildiğinde otomatik olarak çağrılan GitHub Actions işleyicilerindeki güvenlik açıkları açıklandı. Bu güvenlik açığı, yetkisiz bir kullanıcının Nixpkgs'de barındırılan tüm paketlerin kaynak koduna okuma ve yazma erişimi veren bir belirteci çıkarmasına olanak tanıyordu. Bu belirteç, projenin Git deposu aracılığıyla herhangi bir paketin inceleme ve onay süreçlerini atlayarak doğrudan değiştirilmesine olanak sağlıyordu.

Nixpkgs'i ele geçirip herhangi bir pakete özel kod enjekte etme yeteneği, güvenlik araştırmacıları tarafından geçen Ekim ayında NixCon konferansında gösterilmiş ve projenin altyapısına hemen eklenmiştir. Ancak, saldırının ayrıntıları ancak bir yıl sonra açıklanmıştır. Sorun, Nixpkgs GitHub deposunda bulunan ve "pull_request_target" olayına bağlı olan ve yeni çekme istekleri üzerine otomatik kontroller gerçekleştiren GitHub Actions işleyicilerinin kullanımıyla ilgiliydi.

"pull_request" etkinliğinin aksine, "pull_request_target" içindeki işleyicilere derleme ortamına okuma/yazma erişimi verilir; bu da bir çekme isteğinde iletilen verilerle çalışırken özel dikkat gerektirir. "pull_request_target"a bağlı işleyicilerden biri, çekme isteğinde sağlanan "OWNERS" dosyasını, codeowners-validator yardımcı programını derleyip çağırarak doğruladı: steps: — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf with: ref: refs/pull/$/merge path: pr — run: nix-build base/ci -A codeownersValidator — run: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS

Sorun şu ki, OWNERS dosyası yanlış biçimlendirilmişse, codeowners-validator yardımcı programı hatalı biçimlendirilmiş dizenin içeriğini standart, herkesin erişebildiği günlüğe çıktı olarak veriyordu. Saldırı, çekme isteğine OWNERS adlı sembolik bir bağlantı yerleştirerek, derleme ortamında kimlik bilgilerini depolayan ".credentials" dosyasına işaret ediyordu. Sonuç olarak, bu dosyanın işlenmesi bir hataya yol açtı ve depo erişim belirtecini içeren ilk satır herkese açık günlüğe çıktı olarak verildi.

 GitHub Actions işleyicisindeki bir güvenlik açığı, Nixpkgs'deki paketlerin tehlikeye atılmasına olanak sağladı.

Ek olarak, editorconfig kurallarını kontrol eden işleyicide başka bir güvenlik açığı bulundu. adımlar: — name: PR'den değiştirilen dosyaların listesini al çalıştır: gh api […] | jq [ … ] > «$HOME/changed_files» — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: ref: refs/pull/$/merge — name: EditorConfig kontrol ediliyor çalıştır: cat «$HOME/changed_files» | xargs -r editorconfig-checker

Bu durumda sorun, çekme isteğindeki her dosya için editorconfig-checker'ı çalıştırmak üzere "xargs" yardımcı programının kullanılmasıydı. Dosya adları doğrulanmadığı için, bir saldırgan çekme isteğine özel karakterler içeren bir dosya ekleyebilir ve bu dosya, editorconfig-checker çalıştırıldığında komut satırı argümanları olarak işlenebilir. Örneğin, bir "--help" dosyası oluşturulurken, editorconfig-checker mevcut seçenekler hakkında bir ipucu görüntülerdi.

Kaynak: opennet.ru

Yorum ekle