Dolaylı intent saldırısı
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
OWASP kategorisi: MASVS-PLATFORM: Platform Etkileşimi
Genel Bakış
implicit intent saldırısı güvenlik açığı, bir uygulama niyeti çağırırken tam nitelikli bileşen sınıf adı veya paket belirtmediğinde ortaya çıkar. Bu, kötü amaçlı bir uygulamanın istenen uygulama yerine amacı yakalamak için bir intent filtresi kaydetmesine olanak tanır.
Saldırıcılar, intent içeriğine bağlı olarak hassas bilgileri okuyabilir veya değiştirebilir ya da değişken
PendingIntents veya Binders gibi değişken nesnelerle etkileşim kurabilir.
Bir örtülü intent'in ele geçirilmesi, saldırganın saldırgan tarafından kontrol edilen bileşenleri başlatma gibi keyfi işlemler gerçekleştirmesine de olanak tanıyabilir.
Etki
Hassas verileri işleyen bir örtülü intent, WebView açmak için ek bir URL dizesi içinde oturum jetonu iletirse uygun intent filtrelerini belirten tüm uygulamalar bu jetonu okuyabilir. Bu durum, cihazdaki düzgün yapılandırılmış tüm uygulamaların intent'i durdurmasına ve içindeki hassas verileri okumasına olanak tanıyabilir. Bu da saldırganların kimliği tanımlayabilecek bilgiler (PII) veya oturum jetonları gibi verileri sızdırmasına olanak tanır.
Çözümler
Uygulama gerektirmediği sürece setPackage()
'ü çağırarak amaçları açıkça belirtin. Bu, intent'in yalnızca belirli bir bileşen (uygulama içi veya diğer uygulamalardan) tarafından yorumlanmasına olanak tanır. Böylece, güvenilmeyen uygulamaların intent ile birlikte gönderilen verileri engellemesi önlenir. Aşağıdaki snippet'te, bir intent'in nasıl açık hale getirileceği gösterilmektedir:
Kotlin
val intent = Intent("android.intent.action.CREATE_DOCUMENT").apply {
addCategory("android.intent.category.OPENABLE")
setPackage("com.some.packagename")
setType("*/*")
putExtra("android.intent.extra.LOCAL_ONLY", true)
putExtra("android.intent.extra.TITLE", "Some Title")
}
startActivity(intent)
Java
Intent intent = new Intent("android.intent.action.CREATE_DOCUMENT");
intent.addCategory("android.intent.category.OPENABLE");
intent.setPackage("com.some.packagename");
intent.setType("*/*");
intent.putExtra("android.intent.extra.LOCAL_ONLY", true);
intent.putExtra("android.intent.extra.TITLE", "Some Title");
startActivity(intent);
Örtük intent'ler kullanmanız gerekiyorsa göstermek istemediğiniz hassas bilgileri veya değişken nesneleri çıkarın. Bir uygulama, işlemi (ör. e-posta oluşturma, fotoğraf çekme vb.) hangi uygulamanın çözeceği hakkında tam bilgiye sahip olmadığında, örtülü intent'lerin kullanılması gerekebilir.
Kaynaklar
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-26 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-26 UTC."],[],[],null,["# Implicit intent hijacking\n\n\u003cbr /\u003e\n\n**OWASP category:** [MASVS-PLATFORM: Platform Interaction](https://mas.owasp.org/MASVS/09-MASVS-PLATFORM)\n\nOverview\n--------\n\nThe [implicit intent](/guide/components/intents-filters#Types) hijacking vulnerability occurs when an application does\nnot specify a fully-qualified component class name or package when invoking an\nintent. This allows a malicious application to register an intent filter to\nintercept the intent instead of the intended application.\n\nDepending on the intent content, attackers could read or modify sensitive\ninformation or interact with mutable objects, such as [mutable](/reference/android/app/PendingIntent#FLAG_MUTABLE)\n[PendingIntents](/reference/android/app/PendingIntent) or [Binders](/reference/android/os/Binder).\n\nHijacking an implicit intent can also allow an attacker to perform arbitrary\nactions such as launching attacker-controlled components.\n\nImpact\n------\n\nIf an implicit intent handling sensitive data passes a session token within an\nextra URL string to open a WebView, any application specifying the proper intent\nfilters can read this token. This can allow any properly-configured application\non the device to intercept the intent and read the sensitive data within,\nallowing attackers to exfiltrate data such as PII or session tokens.\n\nMitigations\n-----------\n\nUnless the application requires it, make intents explicit by calling\n`setPackage()`. This allows the intent to be interpreted only by a specific\ncomponent (either in-app or from other applications), preventing untrusted\napplications from intercepting the data sent along with the intent. The\nfollowing snippet shows how to make an intent explicit: \n\n### Kotlin\n\n val intent = Intent(\"android.intent.action.CREATE_DOCUMENT\").apply {\n addCategory(\"android.intent.category.OPENABLE\")\n setPackage(\"com.some.packagename\")\n setType(\"*/*\")\n putExtra(\"android.intent.extra.LOCAL_ONLY\", true)\n putExtra(\"android.intent.extra.TITLE\", \"Some Title\")\n }\n startActivity(intent)\n\n### Java\n\n Intent intent = new Intent(\"android.intent.action.CREATE_DOCUMENT\");\n intent.addCategory(\"android.intent.category.OPENABLE\");\n intent.setPackage(\"com.some.packagename\");\n intent.setType(\"*/*\");\n intent.putExtra(\"android.intent.extra.LOCAL_ONLY\", true);\n intent.putExtra(\"android.intent.extra.TITLE\", \"Some Title\");\n startActivity(intent);\n\nIf you need to use implicit intents, omit any sensitive information or mutable\nobjects that you don't want to expose. Implicit intents may need to be used when\nan app does not have exact knowledge about which app will resolve the action\n(e.g. composing an email, taking a picture, etc.).\n\nResources\n---------\n\n- [Manifest intent-filter element](/guide/topics/manifest/intent-filter-element)\n- [Privileged Permission Allowlisting](https://source.android.com/devices/tech/config/perms-allowlist)\n- [Intents and Intent filters](/guide/components/intents-filters)\n- [Forcing chooser for implicit intents](/guide/components/intents-filters#ForceChooser)\n- [Common implicit intents](/guide/components/intents-common)"]]