Aller au contenu

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

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