60 saniyede CVE-2024-0044
Android, yerel (native) araçların uygulama kimliklerini hızlıca sorgulayabilmesi için packages.list adında hafif bir metin dosyası tutar. Bir ADB oturumu üzerinden yapılan paket kurulumu sırasında CVE-2024-0044 zafiyeti; saldırgan kontrollü kurulumcu paket adının (installerPackageName), bu dosya tarafından kullanılan satır ve boşluk ayraçlarını içerebilmesine izin verdi. Özel hazırlanmış bir girdi, packages.list içine sahte bir paket kaydı enjekte edebiliyordu. Ayrıcalıklı run-as hata ayıklama aracı bu kayda güvendiğinde, başka bir uygulamanın kimliğine (UID) bürünmesi için kandırılabiliyordu.
Saldırı yolu (attack path) şu şekilde gerçekleşti:
ADB shell erişimi
-> Özel hazırlanmış installer adına sahip bir paket kurar
-> packages.list içine sahte kayıt yapısı enjekte eder
-> run-as aracının sahte uygulama kimliğini ayrıştırmasını sağlar
-> Hedef uygulamanın özel veri alanına UID ve SELinux sınırları dahilinde erişir
Bu bir yerel yetki yükseltme (local elevation of privilege) zafiyetiydi; uzaktan tetiklenen bir açık veya doğrudan system UID’sine geçiş yolu değildi. İlgili ADB/shell kurulum yoluna erişim gerektiriyordu.
packages.list ve run-as nedir?
Android’in Package Manager servisi kapsamlı paket veritabanını yönetir. Aynı zamanda bu veritabanının belirli alanlarını, yerel C/C++ süreçlerinin okuyabilmesi için satır ve boşluklarla ayrılmış packages.list dosyasına yansıtır. Her satır bir kayıttır; satır sonu (\n) yeni bir paketi, boşluklar ise UID, debuggable durumu ve veri dizini gibi alanları ayırır.
run-as, geliştiricilerin debuggable durumdaki uygulamalarının bağlamına geçerek hata ayıklamasını sağlayan ayrıcalıklı (setuid) bir yardımcı programdır. Hangi UID ve veri dizininin kime ait olduğunu packages.list üzerinden okur. Zafiyet, bu dosyanın biçimini bozabilen bir girdinin yeterince doğrulanmamasından kaynaklandı.
Ne oldu?
Kurulumcu adı packages.xml dosyasına yazılırken düzgün escape ediliyordu; ancak packages.list dosyasına yazılırken satır atlatma ve boşluk karakterlerine karşı korunmuyordu. Bu durum, metin tabanlı serileştirmede tipik bir yapısal enjeksiyon (delimiter injection) açığı yarattı.
İlk AOSP yaması params.installerPackageName için bir paket adı sözdizimi doğrulayıcısı ekledi. Ancak aynı kurulumcu kimliği fonksiyona ayrı bir metot argümanı olarak da iletilebiliyordu ve ilk yama bu ikinci girdiyi denetlemeyi unuttu. Sonraki takip yaması her iki üreticiyi (producer) de doğrulamaya bağladı ve android.security.cts.CVE_2024_0044 regresyon testini ekledi.
Evidence matrix
| Soru | Neyi kontrol ettim | Güven | Sınır |
|---|---|---|---|
| Hangi sürümler etkilendi? | Ekim 2024 güvenlik bülteni öncesi Android 12, 12L, 13, 14 ve 15 sürümlerini doğruladım. | Yüksek | Üretici (OEM) yama seviyeleri ayrıca kontrol edilmelidir. |
| Yolu ne tetikliyor? | ADB shell üzerinden özel hazırlanmış installer parametresiyle pm install çalıştırılması. | Yüksek | Cihaza ADB veya yerel kabuk erişimi şarttır. |
| Güvenlik etkisi nedir? | Cihazdaki diğer uygulamaların verilerine (sandbox dizinlerine) yetkisiz erişim. | Yüksek | Doğrudan root veya system yetkisi değil, uygulama UID seviyesinde izolasyon ihlalidir. |
Sonuç
Android cihazınızı 2024-10-01 veya daha yeni bir güvenlik yama düzeyine güncelleyin.
Bu vaka yazılım güvenliğinde iki hayati prensibi vurgular: Birincisi, aynı veri modelinin zengin bir biçimden (XML) yalın bir biçime (packages.list) izdüşümü yapılırken ayraç doğrulaması asla gevşetilmemelidir. İkincisi, aynı anlamsal değere besleme yapan birden fazla kod yolu (producer) varsa, güvenlik kontrolü bu yolların yalnızca birine değil, tamamına uygulanmalıdır.
Bu analiz için kullanılan kanıtlar
Sürüm ve sömürü durumu değişebilir; üretici kayıtlarını takip edin.
Birincil kamu kayıtları kontrol edildi. Ortama özgü davranış, ayrıca yeniden üretilmedikçe iddianın dışındadır.
- cve.org · CVERecord ↗
- source.android.com · 2024-10-01 ↗
- android.googlesource.com · 65bd134b0a82…5cdd00ddc31792 ↗
- android.googlesource.com · 954b2874b85b…7cdf22e5dbd77b ↗
- android.googlesource.com · 836750619a8b…9990e294671563 ↗
- rtx.meta.security · Android-run-as-forgery ↗
- github.com · GHSA-m7fh-f3w4-r6v2 ↗
