fix: prevent apt argument injection and propagate installer exit codes - #9
Open
jankesec wants to merge 1 commit into
Open
fix: prevent apt argument injection and propagate installer exit codes#9jankesec wants to merge 1 commit into
jankesec wants to merge 1 commit into
Conversation
… returncode in Actions (CWE-88, CWE-20)
|
AI'ya buldurmayın kuzum, saksıyı çalıştırın |
Author
Lise arkadaşın değilim, bu samimiyet nereden geliyor? Eleştirilerinde üslubunu korumalısın. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Özet
Bu geliştirme,
/usr/share/pardus/pardus-package-installer/src/Actions.pyPolkit yetkilendirme betiğinde APT komutlarına yönelik olası parametre/bayrak enjeksiyonu (Argument Injection - CWE-88) riskini giderir, paket girdilerini doğrular,IndexErrorçökmesini önler ve alt süreç dönüş kodlarının doğru şekilde iletilmesini sağlar.📊 Önerilen CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:LGerekçe
tr.org.pardus.pkexec.pardus-package-installer.actionsauth_administer.apt'e gider;--ayracı olmadığı için-o...bayrak enjeksiyonu mümkündür. Canlı testteDpkg::Pre-Invokekancası tetiklenmemiştir (paket kurulmadığı için dpkg çalışmaz). Bu doğrudan RCE değildir; girdi doğrulama ve kardeş paket (pardus-software) ile tutarsızlıktır.Karşılaşılan Güvenlik ve Kararlılık Problemleri (CWE-88, CWE-20)
Actions.pybetiği Polkit üzerinden (tr.org.pardus.pkexec.pardus-package-installer.actionseylemi) root yetkileriyle çalıştırılmaktadır.Önceki uygulamada:
Bu yapılandırmada aşağıdaki sorunlar tespit edilmiştir:
debianpackageparametresiaptkomut dizisi içerisine herhangi bir bayrak ayracı (--) olmaksızın yerleştirilmekteydi. Girdi tire (-) ile başladığında (örneğin--option=...veya-oAPT::...),aptbunu bir paket adı olarak değil, bir komut satırı yapılandırma seçeneği olarak yorumlayabilmekteydi.\n, geçersiz karakterler, dosya varlığı) denetlenmemekteydi.len(sys.argv) > 1koşulu nedeniyle betik tek argümanla çağrıldığındasys.argv[2]erişimi yakalanmamışIndexErrorile çökmekteydi.subprocess.callçıkış kodunu üst sürece (MainWindow.py) iletmediği içinaptbaşarısız olsa dahi betik daima0ile sonlanmaktaydı.Yapılan Değişiklikler
--Bayrak Ayracı: Tümaptkomut çağrılarında paket parametresinden hemen önce--ayracı eklenerek girdinin bayrak olarak yorumlanması kesin olarak engellendi.-) ile başlaması, satır sonu veya boşluk içermesi engellendi.removeişlemi için paket adının Debian paket adlandırma standardına (^[a-zA-Z0-9][a-zA-Z0-9+.-]*$) uygunluğu denetlendi..debdosyası üzerinden yapılan işlemlerde dosyanın diskteki varlığı (os.path.isfile) kontrol edildi.IndexErrorçökmesi giderildi.subprocess.callsonucu dönen çıkış kodusys.exit(rc)ile ana sürece iletilerek arayüzün işlem sonucunu doğru takip etmesi sağlandı.Laboratuvar Doğrulaması ve Regresyon Testleri
Bu çalışma, izole bir Pardus 25 (yirmibes - Debian 13 tabanlı) laboratuvar ortamında hem zafiyet engelleme hem de paket yönetim fonksiyonları açısından iki tur halinde test edilip doğrulanmıştır:
--help,-s,-oAPT::...gibi parametre enjeksiyon denemelerisys.exit(1)ile güvenle engellendi..debdosyaları ve geçersiz adlandırmalar kontrollü şekilde reddedildi.hello) üzerinden hem kurulum (install) hem de kaldırma (remove) işlemleri uçtan uca test edilmiş; paket başarıyla kurulup kaldırılmış (Çıkış: 0), arayüze iletilen ilerleme akışının (APT::Status-Fd=2) hatasız çalıştığı ve mevcut paket kurma işlevinde hiçbir aksama veya regresyon oluşmadığı doğrulanmıştır.Pardus ekibine kıymetli çalışmaları ve emekleri için teşekkür eder, incelemenize sunarız.