addJavaScriptInterface Remote Code Execution.
Exécution de Code à Distance via addJavaScriptInterface
Description
La méthode addJavascriptInterface() sur le niveau d'API JELLY_BEAN ou inférieur peut être exploitée via la réflexion pour exécuter des commandes à distance dans le contexte de l'application en cours d'exécution.
La méthode addJavascriptInterface expose un objet Java fourni depuis une WebView vers JavaScript. Pour les applications compilées ou liées à un niveau d'API inférieur à 17, toutes les méthodes publiques (y compris celles héritées) sont accessibles. Grâce à l'utilisation de la réflexion, il est également possible d'invoquer n'importe quelle autre classe Java non enregistrée.
Recommandation
Ce problème a été résolu dans les applications développées pour Android 4.2 (niveau d'API 17) et supérieur. À partir d'Android 4.2 (niveau d'API 17) et supérieur, seules les méthodes explicitement marquées avec l'annotation @JavascriptInterface sont disponibles pour le code JavaScript dans la WebView. L'annotation @JavascriptInterface doit être ajoutée à toute méthode destinée à être exposée via le pont natif (la méthode doit également être publique). Un exemple est présenté ci-dessous :
@JavascriptInterfacepublic void method() {dostuff();}
Pour résoudre le problème, vous devez compiler votre application pour l'API 17 ou supérieur et la redistribuer. Les utilisateurs devront mettre à jour leurs applications pour utiliser la nouvelle application non vulnérable.
Liens
- DRD13. Do not provide addJavascriptInterface method access in a WebView which could contain untrusted content. (API level JELLY_BEAN or below)
- CVE-2013-4710
- WithSecure Labs
- Metasploit Public Exploit
Normes
- OWASP_MASVS_L1:
- MSTG_PLATFORM_7
- OWASP_MASVS_L2:
- MSTG_PLATFORM_2
- GDPR:
- ART_5
- ART_32
- PCI_STANDARDS:
- REQ_2_2
- REQ_6_2
- REQ_6_3
- REQ_11_3
- OWASP_MASVS_v2_1:
- MASVS_PLATFORM_2
- MASVS_CODE_4
- SOC2_CONTROLS:
- CC_2_1
- CC_4_1
- CC_7_1
- CC_7_2
- CC_7_4
- CC_7_5
- HIPAA_CONTROLS:
- SECURITY212
- SECURITY213
- SECURITY255
- SECURITY258