- Katılım
- 27 Ocak 2026
- Mesajlar
- 71
- Tepkime puanı
- 38
- Puan
- 18
Bu açık, WRITE_SECURE_SETTINGS iznine sahip bir aktörün (ADB shell veya bazı ayrıcalıklı/ön-yüklü uygulamalar gibi) cihazda istediği herhangi bir uygulama kimliğiyle kod çalıştırabilmesine yol açıyor. CVE kaydı da bunu “herhangi bir uygulama olarak kod çalıştırma” şeklinde tarif ediyor. (CVE-2024-31317)
Android’de güvenlik modeli “Linux user” mantığından çok “app identity (uygulama kimliği)” mantığına dayanıyor:
Her uygulamanın ayrı UID’si var; dolayısıyla:
Android’de uygulama süreçlerini başlatan tarafın merkezinde Zygote denen bileşen var. Sistem bir app’i başlatacağı zaman Zygote’a “şu UID ile, şu paket adıyla, şu app-data-dir ile süreç oluştur” gibi parametreler gönderiyor.
Problem şu: Zygote ile konuşan tarafın kullandığı metin tabanlı argüman formatında, belirli bir global ayarın değeri (hidden_api_blacklist_exemptions) beklenmedik karakterler (özellikle satır sonları) içerdiğinde, bu değer komutun içine “olduğu gibi” karışabiliyor ve istemeden komut enjeksiyonu etkisi doğurabiliyor. Bu da kimlik parametrelerini saptırıp “başka bir uygulama gibi süreç başlatma” sınıfına kapı aralayabiliyor.
Aşağıdaki komutlar sadece durum tespiti içindir.
Not: Burada kimseye “şöyle yazarsan patlar” gibi bir şey anlatmıyorum. Sadece mevcut değeri görmek.
Daha hedefli bakmak istersen:
Okuduğunuz için teşekkürler. Sorularınızı yorumlarda bırakın; exploit detayı paylaşmadan, tespit/mitigation tarafında yardımcı olmaya çalışırım. Yanlışım/eksiğim varsa düzeltmeye açığım.
1) Neden bu kadar kritik?
Android’de güvenlik modeli “Linux user” mantığından çok “app identity (uygulama kimliği)” mantığına dayanıyor:
Her uygulamanın ayrı UID’si var; dolayısıyla:
- Uygulama A, Uygulama B’nin /data/data/ alanını normalde okuyamaz.
- Token/oturum bilgileri, keychain/keystore anahtarları, hesap erişimleri genelde uygulama kimliğine bağlıdır.
- MDM/Device Owner gibi cihaz yönetimi ayrıcalıkları da belirli uygulamalarla sınırlıdır.
2) Etkilenme koşulu ne?
Saldırganın “tamamen sıradan bir uygulama” olması yetmiyor. Genellikle şu koşullardan biri gerekiyor:- ADB shell erişimi (fiziksel erişim, debug açık cihazlar, bazı kurum senaryoları), veya
- Cihazda WRITE_SECURE_SETTINGS iznine sahip bir privileged/ön yüklü uygulamanın ele geçirilmesi.
3) Teknik olarak “ne oluyor”?
Android’de uygulama süreçlerini başlatan tarafın merkezinde Zygote denen bileşen var. Sistem bir app’i başlatacağı zaman Zygote’a “şu UID ile, şu paket adıyla, şu app-data-dir ile süreç oluştur” gibi parametreler gönderiyor.
Problem şu: Zygote ile konuşan tarafın kullandığı metin tabanlı argüman formatında, belirli bir global ayarın değeri (hidden_api_blacklist_exemptions) beklenmedik karakterler (özellikle satır sonları) içerdiğinde, bu değer komutun içine “olduğu gibi” karışabiliyor ve istemeden komut enjeksiyonu etkisi doğurabiliyor. Bu da kimlik parametrelerini saptırıp “başka bir uygulama gibi süreç başlatma” sınıfına kapı aralayabiliyor.
4) Saldırgan bunu elde edince pratikte ne yapabilir?
- Herhangi bir uygulamanın verisini okuma/yazma: Örn. mesajlaşma uygulamasının lokal DB’si, dosyaları, cache’i.
- Oturum/token kullanımı: Uygulamaların “benim hesabım açık” diye tuttuğu tokenlar genelde app kimliğiyle erişilebilir. Bu, hesap ele geçirme zincirlerine yol açabilir.
- Kurumsal cihaz yönetimini zayıflatma: Cihaz sahibi (Device Owner) uygulamasını taklit edebilmek, bazı politikalara müdahale riskini doğurur.
- Sistem ayarlarını oynama: Zaten WRITE_SECURE_SETTINGS senaryosu, cihazın hassas global ayarlarına erişim demek.
Aşağıdaki komutlar sadece durum tespiti içindir.
A) Cihazın patch level’ını kontrol et
Bash:
adb shell getprop ro.build.version.security_patch
- Çıktı 2024-06-01 / 2024-06-05 veya daha yeni ise (cihaz/üreticiye göre değişebilir), pratikte bu CVE için yamalı olma ihtimali yüksek.
- Çıktı Haziran 2024 öncesi ise cihaz “potansiyel risk” sınıfında.
B) Android sürüm + build bilgisi
Bash:
adb shell getprop ro.build.version.release
adb shell getprop ro.build.fingerprint
C) Global ayarın mevcut değerini okumak
Bash:
adb shell settings get global hidden_api_blacklist_exemptions
D) Bu cihazda WRITE_SECURE_SETTINGS kimlerde var?
Bu komut, cihazda hangi paketlerin bu izni tutabildiğini görmek için:
Bash:
adb shell dumpsys package | grep -n "WRITE_SECURE_SETTINGS" -n
Bash:
adb shell pm list packages -f | head
F) (Opsiyonel) Python snippet
Python:
import subprocess
from datetime import date
def adb(cmd):
return subprocess.check_output(["adb", "shell"] + cmd, text=True).strip()
patch = adb(["getprop", "ro.build.version.security_patch"])
print("Security patch level:", patch)
try:
y, m, d = map(int, patch.split("-"))
is_vuln_window = (y, m) < (2024, 6)
print("Potentially vulnerable window:", is_vuln_window)
except Exception as e:
print("Could not parse patch level:", e)
Okuduğunuz için teşekkürler. Sorularınızı yorumlarda bırakın; exploit detayı paylaşmadan, tespit/mitigation tarafında yardımcı olmaya çalışırım. Yanlışım/eksiğim varsa düzeltmeye açığım.