Catégorie OWASP : MASVS-PLATFORM : interaction avec la plate-forme
Présentation
La faille liée au piratage informatique de l'intent implicite se produit lorsqu'une application ne spécifie pas de nom de classe de composant complet ni de package lorsqu'elle appelle un intent. Cela permet à une application malveillante d'enregistrer un filtre d'intent pour intercepter l'intent à la place de l'application souhaitée.
Selon le contenu de l'intent, les pirates informatiques peuvent lire des informations sensibles ou interagir avec des objets modifiables, tels que des modifiables PendingIntents ou des liaisons.
Impact
Le piratage d'un intent implicite permet à un pirate informatique de lire ou de modifier le contenu de l'intent et d'intercepter l'intent pour effectuer une action. Cela peut avoir des conséquences, telles que la fuite d'informations ou de données sensibles, ou le lancement de composants contrôlés par des pirates.
Stratégies d'atténuation
Rendez les intents explicites en appelant setPackage()
, comme indiqué dans l'extrait de code suivant :
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);
Si vous devez utiliser des intents implicites, omettez les informations sensibles ou les objets modifiables que vous ne souhaitez pas exposer. Les intents implicites peuvent être utiles lorsqu'une appli ne sait pas exactement quelle appli va résoudre l'action (par exemple, rédiger un e-mail, prendre une photo, etc.).