Aperçu
Bootstrap est un framework HTML, CSS et JS pour le développement de sites web et d'applications réactifs et mobiles.
Une vulnérabilité de type cross-site scripting (XSS) a été identifiée dans le composant Bootstrap 3 Button.
Selon l' OWASP: Les attaques de type Cross-Site Scripting sont un type d'injection, dans lequel des scripts malveillants sont injectés dans des sites web par ailleurs bénins et de confiance. Les attaques XSS se produisent lorsqu'un pirate utilise une application web pour envoyer un code malveillant, généralement sous la forme d'un script côté navigateur, à un autre utilisateur final. Un pirate peut utiliser XSS pour envoyer un script malveillant à un utilisateur qui ne se doute de rien.
Détails
Informations sur le module
- Gestionnaire de paquets : npm
- Composant affecté : bouton
- Affected versions: >=2.0.0 <=3.4.1
- Lien vers le dossier publié : https://www.npmjs.com/package/bootstrap
- Github repo : https://github.com/twbs/bootstrap/
Informations sur les vulnérabilités
L'utilisation d'un attribut data-*-text (c'est-à-dire data-complete-text) associé à la fonction d'état d' un bouton n'est pas soumise à l'assainissement du contenu. Par conséquent, aucune restriction n'est appliquée au code HTML qui peut être affiché à l'intérieur du bouton. Cela peut entraîner l'injection de scripts malveillants (XSS) qui peuvent conduire à l'exfiltration de données sensibles vers des serveurs distants.
Étapes de la reproduction
Le code du composant "bouton" n'assainit pas correctement le contenu qui peut être placé dans les attributs qui suivent le format data-[string]-text et qui sont utilisés en conjonction avec la méthode .button(). Un bouton qui lie son attribut data à des paramètres d'URL ou à des champs de saisie permettrait à un pirate d'injecter du code malveillant. Voir la preuve de concept dans la section suivante.
Exemple de code
<input
id="firstName"
type="text"
value="<script>alert('XSS Input Success')</script><span>Loading XSS</span>"
/>
<button
class="btn btn-primary input-test"
data-loading-text="<span>I'm Loading</span>"
type="button"
>
Click Me
</button>
<script>
$(function () {
$('.input-test').click(function () {
var inputValue = $('#firstName').val();
$(this).data('loadingText', inputValue);
$(this).button('loading', inputValue);
});
});
</script>
Preuve de concept
Une preuve de concept complète avec le code peut être consultée ici.
Crédits
- K (trouveur)
Atténuation
Bootstrap 3 a atteint sa fin de vie. Les utilisateurs des composants concernés doivent appliquer l'une des mesures d'atténuation suivantes :
- Migrer vers une version plus récente de Bootstrap
- Appliquer son propre correctif
- Faites appel à un partenaire commercial comme HeroDevs pour l'assistance à la sécurité après la fin de vie.
S'attaquer au problème
Bootstrap 3 a atteint sa fin de vie et une migration vers une version plus récente de Bootstrap est recommandée.
HeroDevs propose également un remplacement sécurisé de Bootstrap 3.
Bien que la version 3 de Bootstrap arrive en fin de vie, HeroDevs a décidé de fournir un correctif critique pour remédier à cette vulnérabilité. Ce correctif garantit que les attributs de données sont correctement assainis, bloquant ainsi le potentiel d'attaques XSS par ce vecteur.
Les clients de HeroDevs qui paient pour le Bootstrap Never-Ending Support ont reçu la correction de ce problème dans la dernière version NES de Bootstrap 3 (bootstrap@3.4.5). Si vous n'avez pas encore installé la dernière version ou si vous avez besoin d'aide, veuillez contacter notre équipe d'assistance pour obtenir de l'aide.
Pour tous les autres utilisateurs de Bootstrap 3, veuillez envisager une migration rapide de Bootstrap 3. Sinon, n'hésitez pas à nous contacter pour découvrir à quel point il est facile de recevoir des mises à jour sécurisées de Bootstrap 3 de la part de HeroDevs.
Apprentissage et prévention
Pour aider davantage la communauté, HeroDevs offre des conseils détaillés sur la prévention de vulnérabilités similaires à l'avenir. Les stratégies clés comprennent l'assainissement des entrées de données, en particulier celles qui interagissent avec des composants critiques tels que le contenu des boutons dynamiques. Nous recommandons également d'examiner et de mettre à jour régulièrement les bibliothèques tierces afin de détecter et de corriger les failles de sécurité potentielles avant qu'elles ne puissent être exploitées.
Conclusion
CVE-2024-6485 rappelle l'importance de la maintenance et de la sécurisation des logiciels, même après leur fin de vie. Grâce à des mesures proactives et au soutien de la communauté, nous pouvons garantir un environnement numérique plus sûr pour tous les utilisateurs.
Si vous souhaitez bénéficier d'une assistance en matière de sécurité, de conformité et de compatibilité pour Bootstrap 3 et les bibliothèques correspondantes, veuillez nous contacter.
Restez en sécurité et assurez-vous que vos systèmes sont mis à jour avec les derniers correctifs de HeroDevs. Suivez notre blog pour plus d'informations et de mises à jour de sécurité.
Soyez alerté chaque fois qu'une nouvelle vulnérabilité est corrigée dans les logiciels open source que nous soutenons.