Skip to content

fix: escape comment author markup and validate Group script arguments - #56

Open
jankesec wants to merge 1 commit into
pardus:masterfrom
jankesec:fix/security-hardening-group-and-markup
Open

fix: escape comment author markup and validate Group script arguments#56
jankesec wants to merge 1 commit into
pardus:masterfrom
jankesec:fix/security-hardening-group-and-markup

Conversation

@jankesec

@jankesec jankesec commented Sep 4, 2026

Copy link
Copy Markdown

📌 Özet / Summary

Bu geliştirme, pardus-software uygulamasında iki önemli alanı sertleştirmektedir:

  1. Mağazadaki kullanıcı yorumlarında ve ayarlar hata etiketinde Pango markup kaçış işlemesi eklenerek arayüz bozulmaları (UI DoS) ve sahte rozet/stil enjeksiyonu önlenmiştir (PS-23).
  2. Polkit ile yetkilendirilen Group.py yardımcı betiğinde argüman kontrolü, kullanıcı adı biçimi ve varlık doğrulaması yapılarak yetki sınırları güçlendirilmiştir (SW-11).

📊 Önerilen CVSS 3.1

Bulgu CWE Skor Şiddet Vektör
Yorum yazarı / sürüm alanında Pango markup enjeksiyonu (PS-23) CWE-116 4.3 Orta CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L
Group.py argüman ve kullanıcı doğrulaması CWE-20, CWE-250 Sertleştirme SW-11 yardımcı yüzeyi; auth_admin gerekir

Skorlar CVSS v3.1 ile bağımsız hesaplanmıştır (NVD / resmi CVE skoru değildir). Yerel pkexec → root zincirlerinde kapsam S:U alınmıştır (PwnKit emsali). Şiddet bantları: 0.1–3.9 Düşük, 4.0–6.9 Orta, 7.0–8.9 Yüksek.

Gerekçe

  • 4.3 (Orta): Yorum sunucusundan gelen author / app_version set_markup ile kaçış işlenmeden basılıyordu. Ağ vektörü (AV:N) mağaza yorum API'si içindir; RCE yoktur. Etki arayüz sahteciliği (sahte rozet) ve çizim hatası (DoS, A:L). UI:R: kullanıcının Yazılım Merkezi'nde yorumları açması gerekir.
  • Group.py: Betik pardus-software grubuna ekleme/çıkarma yapar ve auth_admin ister. Argümansız çağrıdaki IndexError ve kullanıcı adı doğrulaması savunma derinliğidir. Parolasız paket yönetimi delegasyonu (SW-11, CVSS 6.1) bu PR'ın kapsamı dışındadır; burada yalnızca yardımcı betik sıkılaştırılmıştır.

🛠️ Yapılan İyileştirmeler ve Düzeltmeler

1. Pango Markup Güvenliği (src/MainWindow.py - CWE-116, CWE-79)

  • Kullanıcı Yorumları: Yorum sunucusundan veya kullanıcı girdisinden gelen author (label_author) ve app_version (label_appversion) alanları GLib.markup_escape_text() ile kaçışlandı. Böylece &, <, > gibi karakterler içeren yazar adlarının söz dizimi hatasına yol açması veya kötü niyetli biçimlendirme etiketlerinin (örneğin sahte doğrulama rozetleri) arayüze enjekte edilmesi engellendi.
  • Dağıtım Etiketi: label_distro için biçimlendirme gerekmediğinden doğrudan güvenli set_text() kullanımına geçildi.
  • Hata Mesajı Etiketi: on_group_process_exit akışında grouperrormessage hata metni ui_settings_password_info_label içerisine yazılırken GLib.markup_escape_text() ile koruma altına alındı.

2. Grup Yardımcı Betiği Sertleştirmesi (src/Group.py - CWE-250, CWE-20)

  • Argüman Kontrolü: Betik kullanıcı adı olmadan yalnızca add veya del ile çağrıldığında ortaya çıkan IndexError giderildi (len(sys.argv) < 3 kontrolü eklendi).
  • Kullanıcı Doğrulaması: Eklenmek istenen kullanıcı adının güvenli formatta olduğu (regex kontrolü) ve sistemde gerçekten var olduğu (pwd.getpwnam) doğrulandı.
  • İşlem ve Dönüş Kodu İletimi: adduser ve deluser komutları güvenli yollardan çalıştırılarak alt sürecin dönüş kodu (sys.exit(rc)) çağıran sürece doğru şekilde aktarıldı.

🧪 Test ve Doğrulama (Pardus 25.2 Lab Ortamı)

Değişiklikler güncel Pardus 25.2 ortamında X11 ve CLI katmanlarında ayrıntılı olarak test edilmiştir:

  • Markup Testi: Özel karakterler (&, <, >) ve sahte biçimlendirme içeren yazar adlarının hiçbir GTK uyarısı üretmeden düz metin olarak güvenle ekranda gösterildiği teyit edildi.
  • Group.py Testleri:
    • Argümansız ve eksik parametreli çağrılar: Çökme yaşanmadan temiz kullanım mesajıyla çıkış yapıldı (exit 1).
    • Geçersiz / enjeksiyon amaçlı kullanıcı adı denemeleri (--system, invalid user!): Güvenle reddedildi.
    • Var olmayan kullanıcı denemeleri: Sistemde bulunamadığı belirtilerek reddedildi.
    • Geçerli kullanıcı: İşlem başarıyla tamamlandı.
  • Regresyon Kontrolü: Yazılım Merkezi'nin paket listeleme, yorum görüntüleme ve ayarlar menüsü işlevlerinde herhangi bir aksama olmadığı gözlemlendi.

…rdi doğrulaması (CWE-116, CWE-250)

- MainWindow.py: Uygulama yorumları bölümünde (label_author, label_appversion) ve ayarlar hata mesajında (ui_settings_password_info_label) kullanıcı/sunucu kaynaklı metinler GLib.markup_escape_text ile kaçışlandı (CWE-116, CWE-79).
- MainWindow.py: label_distro için doğrudan güvenli set_text kullanıldı.
- Group.py: Eksik argüman durumundaki IndexError giderildi, kullanıcı adı regex ve pwd.getpwnam ile doğrulandı, yetkilendirme akışında dönüş kodları (sys.exit) düzgün şekilde iletildi (CWE-250, CWE-20).
- Pardus 25.2 lab ortamında X11 UI testleri ve CLI senaryoları ile doğrulanmıştır.
@jankesec jankesec changed the title fix: Yorum alanlarında Pango markup kaçışlaması ve Group betiğinde girdi denetimi (CWE-116, CWE-250) fix: escape comment author markup and validate Group script arguments Sep 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant