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

SoruNeyi kontrol ettimGüvenSı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üksekCihaza ADB veya yerel kabuk erişimi şarttır.
Güvenlik etkisi nedir?Cihazdaki diğer uygulamaların verilerine (sandbox dizinlerine) yetkisiz erişim.YüksekDoğ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.

Kaynaklar ve sınırlar

Bu analiz için kullanılan kanıtlar

Kontrol edilen kaynaklar27 Ağustos 2026

Sürüm ve sömürü durumu değişebilir; üretici kayıtlarını takip edin.

İnceleme DurumuKamuya açık kaynaklar incelendi

Birincil kamu kayıtları kontrol edildi. Ortama özgü davranış, ayrıca yeniden üretilmedikçe iddianın dışındadır.

◈ Bu Araştırmayı Kaynak GösterBibTeX · Markdown

Bu araştırma notunu, CVE analizini veya bulgularını akademik çalışmalarınızda ya da güvenlik bültenlerinizde atıfta bulunmak için kopyalayabilirsiniz:

@misc{jankesec_android_package_name_forgery_cve_2024_0044_2026,
  author       = {Sevban D\"{o}nmez},
  title        = {CVE-2024-0044: Yükleyici Metadatasının Android Uygulama Kimliğini Sahtelemesi},
  year         = {2026},
  howpublished = {\url{https://jankesec.com/tr/arastirma/android-package-name-forgery-cve-2024-0044/}},
  note         = {jankesec technical security research (CVE-2024-0044)}
}