iOS Custom URI Handlers / Deeplinks / Custom Schemes
Il s'agit d'un résumé des informations connexes provenant de https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/
Informations de base
Les schémas d'URL personnalisés permettent aux applications de communiquer en utilisant un protocole personnalisé, comme détaillé dans la Documentation du développeur Apple. Ces schémas doivent être déclarés par l'application, qui gère ensuite les URL entrantes suivant ces schémas. Il est crucial de valider tous les paramètres d'URL et de rejeter tout URL malformée pour prévenir les attaques via ce vecteur.
Un exemple est donné où l'URI myapp://hostname?data=123876123
invoque une action spécifique de l'application. Une vulnérabilité notée était dans l'application mobile Skype, qui permettait des actions d'appel non autorisées via le protocole skype://
. Les schémas enregistrés peuvent être trouvés dans le fichier Info.plist
de l'application sous CFBundleURLTypes
. Les applications malveillantes peuvent exploiter cela en réenregistrant des URIs pour intercepter des informations sensibles.
Enregistrement des schémas de requête d'application
À partir d'iOS 9.0, pour vérifier si une application est disponible, canOpenURL:
nécessite de déclarer des schémas d'URL dans le fichier Info.plist
sous LSApplicationQueriesSchemes
. Cela limite les schémas qu'une application peut interroger à 50, renforçant la confidentialité en empêchant l'énumération des applications.
Testing de la Gestion et de la Validation des URL
Les développeurs devraient inspecter des méthodes spécifiques dans le code source pour comprendre la construction et la validation du chemin des URL, telles que application:didFinishLaunchingWithOptions:
et application:openURL:options:
. Par exemple, Telegram utilise diverses méthodes pour ouvrir des URL :
Tester les demandes d'URL vers d'autres applications
Des méthodes telles que openURL:options:completionHandler:
sont cruciales pour ouvrir des URL afin d'interagir avec d'autres applications. Identifier l'utilisation de telles méthodes dans le code source de l'application est essentiel pour comprendre les communications externes.
Tester les méthodes obsolètes
La gestion des méthodes obsolètes d'ouverture d'URL, telles que application:handleOpenURL:
et openURL:
, doit être identifiée et examinée pour ses implications en matière de sécurité.
Fuzzing des schémas d'URL
Le fuzzing des schémas d'URL peut identifier des bugs de corruption de mémoire. Des outils comme Frida peuvent automatiser ce processus en ouvrant des URL avec des charges utiles variables pour surveiller les plantages, comme illustré par la manipulation des URL dans l'application iGoat-Swift:
Références
Last updated