· kaynak dev.to (home feed)
CVE-2026-58868: hazırlanmış HEIF grid görselleri Android mediaserver'da sınır dışı yazmalara yol açıyor
Dev.to'da yayımlanan bir inceleme CVE-2026-58868'i ele alıyor: görsel tuvalinin dışında başlayan bir HEIF grid karo parçası negatif bir kırpma yüksekliği üretiyor ve libyuv bunu Android'in mediaserver'ında sınır dışı bir yazmaya dönüştürüyor.

Android'in medya yığınını statik analizle inceleyerek hatayı bulan bir araştırmacı, HEIF görüntü çözme yolundaki bir bellek bozulması kusuru olan CVE-2026-58868 hakkında detaylı bir incelemeyi dev.to'da yayımladı. Yazıya göre Google'ın Android güvenlik bülteni sorunu, Android 14, 15, 16, 16 QPR2 ve 17'yi etkileyen kritik bir uzaktan kod yürütme açığı olarak sınıflandırıyor — ancak araştırmacı hatayı bir Android 12 cihazda da yeniden üretti, yani etkilenen aralık bültenin ima ettiğinden daha geniş olabilir.
Kusur nasıl ortaya çıkıyor
HEF dosyaları tek bir büyük resmi daha küçük kodlanmış karolardan oluşan bir grid olarak tanımlayabiliyor. Araştırmacının açıkladığı gibi, Android çıktı tamponunu görselin beyan edilen genel boyutlarına göre ayırırken, her karonun konumu karonun kendi çözülen boyutundan hesaplanıyor. Kavram kanıtında karolar, beyan edilen boyutları bu düzeni barındıramayan bir çıktı görselinin içinde 1024'e 1024 piksel olarak çözülüyor.
Karo ölçüleri hattın erken aşamasında devreye giriyor: StagefrightMetadataRetriever, gömülü önizleme görseli olmayan görüntüler için bir çözücü yapılandırırken karonun genişlik ve yükseklik değerlerini dosyadan okuyor. Belirleyici kusur MediaImageDecoder::onOutputReceived() içinde; bu fonksiyon karonun sağ ve alt kenarlarını tuvale göre kırpar ancak başlangıç konumu zaten görselin dışında kalan bir karoyu hiçbir zaman reddetmiyor. Tuvalin altında başlayan bir karo bu yüzden negatif bir kırpma yüksekliğiyle sonuçlanabiliyor.
Kötü kırpmdan kötü yazmaya
Bir sonraki katman anomaliyi yakalamıyor. ColorConverter kaynak ve hedef kırpma dikdörtgenlerini eşitlik açısından karşılaştırıyor; araştırmacıya göre her ikisi de tam olarak aynı şekilde geçersiz olabilir ve yine de bu kontrolden geçebilir; kalan stride ve hizalama kontrolleri ise iki dikdörtgenden hiçbirinin kendi tamponu içinde kaldığını doğrulamıyor.
Kırpma boyutları ardından height değerini işaretli tamsayı olarak kabul eden libyuv'a ulaşıyor. NV21ToARGBMatrix içinde negatif bir yükseklik, çıktının dikey olarak çevrilmesi isteği olarak yorumlanıyor; bu yüzden libyuv pikselleri dönüştürmeden önce hedef işaretçisini kaydırıyor. Çökme verisi, o çağrıya -1096 değerinde bir yüksekliğin ulaştığıyla tutarlı — ve tam o noktada eksik bir doğrulama kontrolü, çıktı görselinin dışına yapılan bir yazmaya dönüşmüş oluyor.
Çökme ve saldırı yolu
Elde edilen çökme kaydı araştırmacının OnePlus telefonunda Gmail'den geliyor: 32-bit ARM mediaserver sürecinde, ImageDecoderOut adlı bir iş parçacığında meydana gelen bir SIGSEGV; çağrı yığını libyuv'un NEON dönüştürme rutinlerinden MediaImageDecoder'a kadar uzanıyor. Hataya neden olan instruction'da bir vektör store işlemi, dönüştürülmüş piksellerden oluşan 32 baytlık bir bloğu eşlenmemiş bir adrese yazmaya çalışıyor ve iki register hâlâ 0x400 — ondalık 1024, yani saldırganın seçtiği karo boyutu — değerini tutuyor.
Hatayı dikkate değer kılan, ne kadar az etkileşim gerektirdiği. Gmail'de bir mesajı açmak yeterliydi: önizleme üretimi, ek üzerine herhangi bir dokunuş veya manuel indirme olmadan kötü niyetli görseli çözüyordu. Araştırmacı aynı davranışı Google Files ve Google Photos üzerinden de yeniden üretti.
Açıklanma durumu
Kavram kanıtı şimdilik yayımlanmıyor. CVE, incelemeden yalnızca birkaç gün önce yayımlandı ve birkaç Android sürümü henüz düzeltmeyi almamış durumda; bu yüzden araştırmacı exploiti veya diğer uygulama detaylarını açıklamaktan vazgeçti. Analiz ayrıca sorunu bozuk bir mantık değil, eksik bir doğrulama olarak çerçeveliyor: her bileşen yazıldığı gibi davrandı ve hiçbir noktada karonun başlangıç noktasının hedef görselin içinde kaldığı kontrol edilmedi.
Neden önemli
Medya ayrıştırma, mobil cihazlardaki en verimli sıfır tıklama saldırı yüzeylerinden biri olmaya devam ediyor ve bu kusur bunun nedenini gösteriyor: görseller, kullanıcı onlar hakkında herhangi bir karar vermeden önce, sistem süreçlerinin içinde otomatik olarak çözülüyor. E-posta veya sohbet yoluyla ulaşan kötü niyetli bir resmin yalnızca önizleme olarak render edilmesi yeterli. Google'ın kritik derecelendirmesi, mediaserver'daki saldırgan etkisindeki bir sınır dışı yazmanın yalnızca bir çökme riski olmadığına işaret ediyor; ne var ki kamuya açık inceleme yalnızca çökme gösteriyor. Android filo operatörleri için pratik adımlar, güncel güvenlik güncellemesini derhal uygulamak ve Android 12'deki yeniden üretim göz önüne alındığında bültenin sürüm listesine ihtiyatla yaklaşmak. Geliştiriciler için ise bu inceleme, tek bir doğrulanmamış varsayımın — karonun başlangıç ofsetinin geçerli olduğu varsayımının — her biri başka bir şeyi doğrulayan birkaç kontrol katmanından dokunulmadan nasıl geçebildiğinin özlü bir vaka çalışması.
- #android
- #security
- #cve
- #heif
- #vulnerability
İlgili yazılar
- APT açığı CVE-2026-109518, ağ saldırganlarına Debian ve Ubuntu'da doğrulanmış paketleri değiştirme imkânı veriyor
- Regex hook boşlukları ve kimlik bilgisi sınırları: Yapay zeka ajan kontrolüne iki pratik bakış
- Rapor, Postman güncellemesinin Claude Code ve Codex içine güvenilir plugin'leri sessizce kurduğunu iddia ediyor