Les scripts JavaScript peuvent parfois contenir des informations sensibles qui permettent à un attaquant d'obtenir des informations utiles pour accéder à des ressources protégées de l'application. Par exemple, si une authentification est implémentée en JavaScript (ce qui est évidemment à proscrire), il sera possible pour un attaquant de “reverse” le code, c'est à dire l'analyser pour en comprendre le fonctionnement, et ainsi s'authentifier de manière illégitime. Les scripts JavaScript peuvent parfois contenir des mots de passe obfusqués ou des clefs d'API, qu'un utilisateur malveillant pourrait utiliser.
Pour exploiter cette vulnérabilité, il est nécessaire d’avoir accès à une application qui utilise du JavaScript contenant des informations sensibles.
Naviguer sur l’application pour énumérer les endpoints et/ou pages de l’application, puis identifier les scripts JavaScript embarqués dans chaque page.
Analyser les scripts identifiés et essayer de les désobusquer si nécessaire afin de découvrir d'éventuelles informations sensibles.
Une exploitation réussie de ce type de vulnérabilité peut permettre :
Les contre-mesures suivantes peuvent être mises en œuvre :
Les scénarios suivants peuvent être joués via l’exploitation de cette vulnérabilité :
<script type="text/javascript"> function login(){ pass=prompt("Enter password"); if ( pass == "pass123456789" ) { window.location="/admin"; else { alert("Wrong password !"); } } </script>
Dans cet exemple, le code source de l'application expose un mot de passe d'authentification en clair dans le JavaScript. Un attaquant peut facilement récupérer ces informations sensibles et les utiliser pour accéder au système.
URL :