Android Uygulamalarında IPC ve Bileşen Güvenliği
Bu yazımda Android uygulamalarında sıkça karşılaşılan bileşen ve IPC güvenlik zafiyetlerini ele alacağım. Bu zafiyetler; tek bir kullanıcı…
Android Uygulamalarında IPC ve Bileşen Güvenliği
Bu yazımda Android uygulamalarında sıkça karşılaşılan bileşen ve IPC güvenlik zafiyetlerini ele alacağım. Bu zafiyetler; tek bir kullanıcı etkileşimiyle hesap ele geçirme veya uygulama davranışının tamamen saldırgan kontrolüne girmesi gibi kritik sonuçlara yol açabiliyor.

1 ) Intent Redirection
Export edilmiş bir uygulama bileşenin, dışarıdan alınan bir input’u hiçbir doğrulamaya sokmadan startActivity() veya startService() gibi komutlara beslemesidir.
Etki: Saldırgan; hedef uygulamada dışarıdan erişemeyeceği bileşenlere, export edilmiş bileşeni proxy(vekil) olarak kullanarak erişebilir.

2 ) Mutable PendingIntent Abuse
Android içinde PendingIntent, başka bir uygulamaya veya Android sistemine sizin adınıza bir işlemi gerçekleştirmesi için verebileceğiniz bir yetki belirtecidir (token). Genellikle, uygulamanız çalışmıyor olsa bile gelecekte gerçekleştirilecek bir işlemi başka bir bileşene devretmek istediğiniz durumlarda kullanılır.
FLAG_MUTABLE, bir PendingIntent oluşturulduktan sonra içindeki Intent verilerinin değiştirilebilmesine izin veren bir bayraktır (flag).
Etki: Eğer bu PendingIntent içindeki ana Intent’in hedef bileşeni (component) veya aksiyonu (action) net olarak kısıtlanmadıysa, bu token’ı ele geçiren zararlı bir uygulama send() metoduna kendi Intent nesnesini vererek çağrıyı manipüle edebilir, Intent’in rotasını değiştirebilir, içine zararlı parametreler enjekte edebilir ve kurban uygulamanın yetkileriyle sistemi kötüye kullanabilir.


3 ) Custom URL Scheme Hijacking
Uygulamanın Manifest dosyasının içinde myapp:// gibi özel bir URL şeması tanımlaması, ancak Android sisteminin bu şemalar üzerinde bir “sahiplik doğrulama” mekanizmasının olmamasıdır.
Etki: Cihazdaki herhangi bir zararlı uygulama da aynı şemayı kendi manifestine yazabilir. Kullanıcı bu şemaya sahip bir linke tıkladığında işletim sistemi “Uygulama Seçici” (Chooser) çıkartır. Kullanıcı zararlı uygulamayı seçerse, linkin taşıdığı tüm hassas veriler (OAuth token’ları, şifre sıfırlama kodları) saldırgana sızar.
Bu zafiyetin önüne geçmek için, özel URL şemaları (myapp://) yerine domain sahipliği doğrulaması yapan Android App Links mekanizması kullanılmalı ve hassas veriler custom scheme üzerinden taşınmamalıdır.
4 ) App Links Verification Bypass
Güvenli HTTPS linkleri (https://domain.com) kullanan Android App Links sisteminde, android:autoVerify=”true” ayarının yanlış yapılması veya sunucu tarafındaki assetlinks.json dosyasının eksik/hatalı yapılandırılmasıdır.
Etki: Doğrulama başarısız olduğunda, işletim sistemi bu güvenli HTTPS linkini “Custom URL Scheme” gibi jenerik ele almaya başlar. Sistem linki doğrudan meşru uygulamayla açmak yerine yine kullanıcıya uygulama seçici sunar; bu da saldırganın HTTPS link trafiğini bile kendi uygulayabileceği arayüzle çalmasına (hijack) olanak tanır.
5 ) Deep Link Parameter Injection
Deep link handler bileşeninin, URI üzerinden gelen kullanıcı kontrollü parametreleri (?url=, ?path=, ?id= vb.) herhangi bir doğrulama, sanitization veya allowlist kontrolü uygulamadan doğrudan uygulama içi kritik işlemlerde kullanmasıdır.
Etki: Parametrelerin file system, veritabanı, network veya WebView gibi hassas “sink” noktalarına doğrudan aktarılması sonucu path traversal, SQL injection, account takeover gibi zincirleme saldırılar mümkün hale gelir.
Yol Açabileceği Zafiyetler: 1 ) Phishing Saldırıları Deep link üzerinden kontrolsüz şekilde harici bir URL’e yönlendirme yapılması, kullanıcının saldırgan kontrollü sahte bir web sitesine taşınmasına neden olabilir. Bu durumda kullanıcı giriş ekranı, ödeme sayfası veya kimlik doğrulama arayüzü taklit edilerek kullanıcı bilgileri (kullanıcı adı, şifre, OTP vb.) ele geçirilebilir.
2 ) OAuth Token / Authorization Code Sızıntısı OAuth veya benzeri kimlik doğrulama akışlarında redirect URL’lerin kontrolsüz olması, authorization code veya access token gibi hassas verilerin saldırgan tarafından kontrol edilen endpoint’lere yönlendirilmesine yol açabilir. Bu durum hesap ele geçirme (account takeover) riskini doğurur.
3 ) Zararlı Web Sayfası Yüklenmesi ve WebView Exploitation Deep link üzerinden gelen kontrolsüz URL’nin JavaScript aktif WebView içerisine doğrudan yüklenmesi durumunda, saldırgan kontrollü sayfa uygulama sandbox varsayımlarını kırarak zararlı JavaScript çalıştırabilir; bu JavaScript aracılığıyla WebView file access özellikleri açık ise yerel dosyalara erişim sağlanarak token, cache veya uygulama verileri dış bir endpoint’e exfiltrate edilebilir, ayrıca addJavascriptInterface (Android bridge) tanımlıysa JavaScript kodu native metodları çağırarak hassas verilerin okunması, uygulama içi state’in değiştirilmesi gibi kritik işlemleri gerçekleştirebilir.

4 ) Uygulama İçi Path Manipulation ve Yetkisiz İşlem Tetikleme Deep link parametrelerinin uygulama içi route veya path mekanizmalarına bağlanması durumunda, saldırgan kullanıcıyı istemediği ekranlara yönlendirebilir veya arka planda belirli endpoint’lere istek attırabilir. Bu durum yetkisiz işlem tetikleme, API abuse veya path traversal benzeri davranışlarla uygulama akışının manipüle edilmesine neden olabilir.

6 ) Tapjacking / UI Redress via Overlays
Android View katmanında, uygulamanın üstüne çizilen sistem overlay’lerine karşı yeterli dokunma ve görünürlük kontrolü uygulanmaması sonucu oluşan bir UI manipülasyon zafiyetidir. Saldırgan, TYPE_APPLICATION_OVERLAY izni ile uygulamanın üzerine şeffaf veya yanıltıcı bir katman yerleştirerek kullanıcı etkileşimlerini kontrol edebilir.
Etki: Kullanıcı, meşru bir arayüzle etkileşimde bulunduğunu düşünürken aslında saldırgan tarafından yerleştirilmiş overlay katmanına tıklamaktadır. Bu durum kritik butonların (örneğin “izin ver”, “onayla”, “para gönder”) istem dışı tetiklenmesine, kullanıcı farkında olmadan yetki verilmesine veya işlem başlatılmasına yol açar (UI redressing / tapjacking).
Önlem olarak uygulama tarafında setFilterTouchesWhenObscured(true) kullanılarak, view’ların başka bir pencere tarafından örtülmesi durumunda touch event’lerinin engellenmesi sağlanmalıdır. Ayrıca kritik ekranlarda (ödeme, yetkilendirme, izin verme gibi) android:filterTouchesWhenObscured=”true” aktif edilmelidir.

7 ) Intent-Based Data Leakage via Broadcasts
Android BroadcastReceiver mekanizmasının korumasız şekilde kullanılması sonucu, uygulamanın hassas verileri sendBroadcast() ile tüm sisteme açık şekilde yayınlamasıdır. Bu yayın sırasında alıcı kısıtlaması (permission, package restriction veya explicit intent) belirtilmemesi, broadcast mesajının cihaz üzerindeki tüm uyumlu uygulamalar tarafından yakalanabilmesine neden olur.
Etki: Cihazda aynı intent action’ını dinleyen (implicit intent-filter tanımlamış) herhangi bir zararlı uygulama, bu broadcast mesajını yakalayarak OTP, session token veya kişisel kullanıcı verilerini ele geçirebilir (broadcast sniffing). Bu durum uygulama içi veri izolasyonunun kırılmasına ve hassas bilgilerin inter-app communication üzerinden sızmasına yol açar.

8 ) Unprotected Broadcast Receiver Abuse
Android BroadcastReceiver bileşeninin android:exported=”true” olacak şekilde dış dünyaya açık bırakılması ve gelen Intent içeriklerinin gönderici doğrulaması yapılmadan işlenmesi sonucu oluşan bir yetkisiz erişim zafiyetidir. Bu durumda uygulama, kritik iş mantığını tetikleyen broadcast mesajlarını dış uygulamalardan gelen güvenilmeyen girdilerle çalıştırır.
Etki: Saldırgan uygulama, hedef BroadcastReceiver’a sahte Intent göndererek uygulama içi durum değişikliklerini manipüle edebilir, veri senkronizasyonunu bozabilir veya yetkilendirme gerektiren işlemleri tetikleyebilir. Bu durum uygulama davranışının dışarıdan kontrol edilmesine, iş akışlarının bozulmasına ve yetkisiz işlem yürütülmesine yol açar.
Her ne kadar memory zafiyetleri kullanıcı etkileşimi gerektirmeden tam sistem kontrolü sağlayabilse de, IPC zafiyetleri tek bir tıklamayla hesap ele geçirme, veri sızıntısı veya uygulama davranışının manipüle edilmesi gibi ciddi sonuçlar doğurabiliyor.
İlginizi çekebilecek kaynaklar:
- Intro to Intent Redirections and How to Exploit Them
- OAuth in Mobile Apps: How Custom Schemes Can Leak Your Tokens
- Evernote: Universal XSS, theft of all cookies from all sites and more
- Attacking Broadcast Receivers
- Android WebView Vulnerabilities
Faydasının olması dileğiyle
메타데이터
- post_id
- 28b92c5eb98e
- slug
- android-uygulamalarında-ipc-ve-bileşen-güvenliği-28b92c5eb98e
- url
- https://medium.com/@uaybora/android-uygulamalar%C4%B1nda-ipc-ve-bile%C5%9Fen-g%C3%BCvenli%C4%9Fi-28b92c5eb98e
- canonical_url
- https://medium.com/@uaybora/android-uygulamalar%C4%B1nda-ipc-ve-bile%C5%9Fen-g%C3%BCvenli%C4%9Fi-28b92c5eb98e
- author_url
- https://medium.com/@uaybora
- status
- ok
- fetched_at
- 2026-06-09 15:37:30