Comment évoluent les lignes directrices en matière de codage sécurisé ?
La semaine dernière, j'ai fait des recherches sur les vulnérabilités de Java Spring afin de mettre à jour nos lignes directrices en matière de codage sécurisé. J'ai passé en revue les défis existants sur notre plateforme et j'en ai remarqué quelques-uns concernant les XSS par l'affichage de paramètres d'url dans les pages JSP. L'exemple de code incorrect ressemblerait à ce qui suit :
<input type="text" name="username" value="${param.username}">
La solution correcte consistait à supprimer complètement le paramètre URL et la description mentionne qu'il est également possible d'échapper le paramètre URL de la bonne manière.
Maintenant, mon travail consiste à formuler la ligne directrice sur le codage sécurisé d'une manière qui soit claire pour les développeurs et qui les restreigne le moins possible tout en continuant à écrire du code sécurisé. Dans ce cas, je préférerais laisser les développeurs conserver la fonctionnalité prévue et leur recommander de le faire de manière sécurisée en échappant le paramètre URL. De cette manière, le code ne contient plus de vulnérabilité XSS. L'exemple ci-dessus peut être sécurisé comme suit :
<input type="text" name="username" value="${fn:escapeXml(param.username)}">
C'était notre ligne de conduite en matière de codage sécurisé pendant quelques jours, jusqu'à ce que je tombe sur une page de l'OWASP sur l'injection de langage d'expression. Cette page décrit comment le langage d'expression Spring (SpEL) peut être utilisé de manière abusive à des fins d'injection avec un impact sérieux, y compris l'exécution de code à distance. Il m'incombait de déterminer s'il pouvait y avoir des cas où un code adhérant à notre directive de codage sécurisé pouvait encore être affecté par cette vulnérabilité. J'ai donc écrit une application de test rapide pour évaluer les expressions SpEL, et j'ai testé les entrées avec et sans échappement Xml pour voir si je pouvais trouver des scénarios qui ne seraient pas pris en compte. Et c'est ce que j'ai fait, il y a des expressions malveillantes qui ne contiennent aucun caractère pris en compte par XmlEscape. J'ai publié la démo de travail sur notre github, que vous pouvez trouver ici.
Et bien sûr, j'ai mis à jour notre ligne directrice sur le codage sécurisé, qui se lit désormais comme suit : "N'affichez pas et n'évaluez pas les paramètres d'URL en utilisant le langage d'expression Spring (SpEL).
L'impact global de ce problème est élevé, pour les raisons suivantes : - Un attaquant pourrait modifier et invoquer des fonctionnalités sur le serveur d'application. - Accès non autorisé aux données et aux fonctionnalités, ainsi que détournement de compte et exécution de code à distance. - Problèmes de confidentialité et d'intégrité en cas d'attaque réussie.
https://www.owasp.org/index.php/Expression_Language_Injection


La semaine dernière, j'ai recherché des vulnérabilités dans Java Spring afin de mettre à jour nos lignes directrices en matière de codage sécurisé.
Chercheur en sécurité applicative - Ingénieur R&D - Doctorant

Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Réservez une démonstrationChercheur en sécurité applicative - Ingénieur R&D - Doctorant


La semaine dernière, j'ai fait des recherches sur les vulnérabilités de Java Spring afin de mettre à jour nos lignes directrices en matière de codage sécurisé. J'ai passé en revue les défis existants sur notre plateforme et j'en ai remarqué quelques-uns concernant les XSS par l'affichage de paramètres d'url dans les pages JSP. L'exemple de code incorrect ressemblerait à ce qui suit :
<input type="text" name="username" value="${param.username}">
La solution correcte consistait à supprimer complètement le paramètre URL et la description mentionne qu'il est également possible d'échapper le paramètre URL de la bonne manière.
Maintenant, mon travail consiste à formuler la ligne directrice sur le codage sécurisé d'une manière qui soit claire pour les développeurs et qui les restreigne le moins possible tout en continuant à écrire du code sécurisé. Dans ce cas, je préférerais laisser les développeurs conserver la fonctionnalité prévue et leur recommander de le faire de manière sécurisée en échappant le paramètre URL. De cette manière, le code ne contient plus de vulnérabilité XSS. L'exemple ci-dessus peut être sécurisé comme suit :
<input type="text" name="username" value="${fn:escapeXml(param.username)}">
C'était notre ligne de conduite en matière de codage sécurisé pendant quelques jours, jusqu'à ce que je tombe sur une page de l'OWASP sur l'injection de langage d'expression. Cette page décrit comment le langage d'expression Spring (SpEL) peut être utilisé de manière abusive à des fins d'injection avec un impact sérieux, y compris l'exécution de code à distance. Il m'incombait de déterminer s'il pouvait y avoir des cas où un code adhérant à notre directive de codage sécurisé pouvait encore être affecté par cette vulnérabilité. J'ai donc écrit une application de test rapide pour évaluer les expressions SpEL, et j'ai testé les entrées avec et sans échappement Xml pour voir si je pouvais trouver des scénarios qui ne seraient pas pris en compte. Et c'est ce que j'ai fait, il y a des expressions malveillantes qui ne contiennent aucun caractère pris en compte par XmlEscape. J'ai publié la démo de travail sur notre github, que vous pouvez trouver ici.
Et bien sûr, j'ai mis à jour notre ligne directrice sur le codage sécurisé, qui se lit désormais comme suit : "N'affichez pas et n'évaluez pas les paramètres d'URL en utilisant le langage d'expression Spring (SpEL).
L'impact global de ce problème est élevé, pour les raisons suivantes : - Un attaquant pourrait modifier et invoquer des fonctionnalités sur le serveur d'application. - Accès non autorisé aux données et aux fonctionnalités, ainsi que détournement de compte et exécution de code à distance. - Problèmes de confidentialité et d'intégrité en cas d'attaque réussie.
https://www.owasp.org/index.php/Expression_Language_Injection

La semaine dernière, j'ai fait des recherches sur les vulnérabilités de Java Spring afin de mettre à jour nos lignes directrices en matière de codage sécurisé. J'ai passé en revue les défis existants sur notre plateforme et j'en ai remarqué quelques-uns concernant les XSS par l'affichage de paramètres d'url dans les pages JSP. L'exemple de code incorrect ressemblerait à ce qui suit :
<input type="text" name="username" value="${param.username}">
La solution correcte consistait à supprimer complètement le paramètre URL et la description mentionne qu'il est également possible d'échapper le paramètre URL de la bonne manière.
Maintenant, mon travail consiste à formuler la ligne directrice sur le codage sécurisé d'une manière qui soit claire pour les développeurs et qui les restreigne le moins possible tout en continuant à écrire du code sécurisé. Dans ce cas, je préférerais laisser les développeurs conserver la fonctionnalité prévue et leur recommander de le faire de manière sécurisée en échappant le paramètre URL. De cette manière, le code ne contient plus de vulnérabilité XSS. L'exemple ci-dessus peut être sécurisé comme suit :
<input type="text" name="username" value="${fn:escapeXml(param.username)}">
C'était notre ligne de conduite en matière de codage sécurisé pendant quelques jours, jusqu'à ce que je tombe sur une page de l'OWASP sur l'injection de langage d'expression. Cette page décrit comment le langage d'expression Spring (SpEL) peut être utilisé de manière abusive à des fins d'injection avec un impact sérieux, y compris l'exécution de code à distance. Il m'incombait de déterminer s'il pouvait y avoir des cas où un code adhérant à notre directive de codage sécurisé pouvait encore être affecté par cette vulnérabilité. J'ai donc écrit une application de test rapide pour évaluer les expressions SpEL, et j'ai testé les entrées avec et sans échappement Xml pour voir si je pouvais trouver des scénarios qui ne seraient pas pris en compte. Et c'est ce que j'ai fait, il y a des expressions malveillantes qui ne contiennent aucun caractère pris en compte par XmlEscape. J'ai publié la démo de travail sur notre github, que vous pouvez trouver ici.
Et bien sûr, j'ai mis à jour notre ligne directrice sur le codage sécurisé, qui se lit désormais comme suit : "N'affichez pas et n'évaluez pas les paramètres d'URL en utilisant le langage d'expression Spring (SpEL).
L'impact global de ce problème est élevé, pour les raisons suivantes : - Un attaquant pourrait modifier et invoquer des fonctionnalités sur le serveur d'application. - Accès non autorisé aux données et aux fonctionnalités, ainsi que détournement de compte et exécution de code à distance. - Problèmes de confidentialité et d'intégrité en cas d'attaque réussie.
https://www.owasp.org/index.php/Expression_Language_Injection

Cliquez sur le lien ci-dessous et téléchargez le PDF de cette ressource.
Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Voir le rapportRéservez une démonstrationChercheur en sécurité applicative - Ingénieur R&D - Doctorant
La semaine dernière, j'ai fait des recherches sur les vulnérabilités de Java Spring afin de mettre à jour nos lignes directrices en matière de codage sécurisé. J'ai passé en revue les défis existants sur notre plateforme et j'en ai remarqué quelques-uns concernant les XSS par l'affichage de paramètres d'url dans les pages JSP. L'exemple de code incorrect ressemblerait à ce qui suit :
<input type="text" name="username" value="${param.username}">
La solution correcte consistait à supprimer complètement le paramètre URL et la description mentionne qu'il est également possible d'échapper le paramètre URL de la bonne manière.
Maintenant, mon travail consiste à formuler la ligne directrice sur le codage sécurisé d'une manière qui soit claire pour les développeurs et qui les restreigne le moins possible tout en continuant à écrire du code sécurisé. Dans ce cas, je préférerais laisser les développeurs conserver la fonctionnalité prévue et leur recommander de le faire de manière sécurisée en échappant le paramètre URL. De cette manière, le code ne contient plus de vulnérabilité XSS. L'exemple ci-dessus peut être sécurisé comme suit :
<input type="text" name="username" value="${fn:escapeXml(param.username)}">
C'était notre ligne de conduite en matière de codage sécurisé pendant quelques jours, jusqu'à ce que je tombe sur une page de l'OWASP sur l'injection de langage d'expression. Cette page décrit comment le langage d'expression Spring (SpEL) peut être utilisé de manière abusive à des fins d'injection avec un impact sérieux, y compris l'exécution de code à distance. Il m'incombait de déterminer s'il pouvait y avoir des cas où un code adhérant à notre directive de codage sécurisé pouvait encore être affecté par cette vulnérabilité. J'ai donc écrit une application de test rapide pour évaluer les expressions SpEL, et j'ai testé les entrées avec et sans échappement Xml pour voir si je pouvais trouver des scénarios qui ne seraient pas pris en compte. Et c'est ce que j'ai fait, il y a des expressions malveillantes qui ne contiennent aucun caractère pris en compte par XmlEscape. J'ai publié la démo de travail sur notre github, que vous pouvez trouver ici.
Et bien sûr, j'ai mis à jour notre ligne directrice sur le codage sécurisé, qui se lit désormais comme suit : "N'affichez pas et n'évaluez pas les paramètres d'URL en utilisant le langage d'expression Spring (SpEL).
L'impact global de ce problème est élevé, pour les raisons suivantes : - Un attaquant pourrait modifier et invoquer des fonctionnalités sur le serveur d'application. - Accès non autorisé aux données et aux fonctionnalités, ainsi que détournement de compte et exécution de code à distance. - Problèmes de confidentialité et d'intégrité en cas d'attaque réussie.
https://www.owasp.org/index.php/Expression_Language_Injection
Table des matières
Chercheur en sécurité applicative - Ingénieur R&D - Doctorant

Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Réservez une démonstrationTéléchargerRessources pour vous aider à démarrer
Le pouvoir de la marque dans l'AppSec DevSec DevSecOps (Qu'y a-t-il dans un acrynème ?)
Dans le domaine de l'AppSec, l'impact durable d'un programme exige plus que de la technologie : il faut une marque forte. Une identité forte garantit que vos initiatives trouvent un écho et suscitent un engagement durable au sein de votre communauté de développeurs.
Trust Agent : AI by Secure Code Warrior
Ce document présente le SCW Trust Agent : AI, un nouvel ensemble de fonctionnalités qui fournissent une observabilité et une gouvernance approfondies sur les outils de codage de l'IA. Découvrez comment notre solution établit une corrélation unique entre l'utilisation des outils d'IA et les compétences des développeurs pour vous aider à gérer les risques, à optimiser votre SDLC et à garantir que chaque ligne de code générée par l'IA est sécurisée.
Vibe Coding : Guide pratique pour la mise à jour de votre stratégie AppSec pour l'IA
Regardez à la demande pour apprendre comment permettre aux responsables AppSec de devenir des facilitateurs de l'IA, plutôt que des bloqueurs, grâce à une approche pratique, axée sur la formation. Nous vous montrerons comment tirer parti de Secure Code Warrior (SCW) pour actualiser votre stratégie AppSec à l'ère des assistants de codage IA.
AI Coding Assistants : Un guide de navigation sécurisée pour la prochaine génération de développeurs
Les grands modèles linguistiques offrent des avantages irrésistibles en termes de rapidité et de productivité, mais ils présentent également des risques indéniables pour l'entreprise. Les garde-fous traditionnels ne suffisent pas à contrôler le déluge. Les développeurs ont besoin de compétences précises et vérifiées en matière de sécurité pour identifier et prévenir les failles de sécurité dès le début du cycle de développement du logiciel.
Ressources pour vous aider à démarrer
Pourquoi le mois de la sensibilisation à la cybersécurité doit-il évoluer à l'ère de l'IA ?
Les RSSI ne peuvent pas s'appuyer sur le même vieux manuel de sensibilisation. À l'ère de l'IA, ils doivent adopter des approches modernes pour protéger le code, les équipes et les organisations.
SCW Trust Agent : AI - Visibilité et gouvernance pour votre SDLC assisté par l'IA
Découvrez comment Trust Agent : AI offre une visibilité et une gouvernance approfondies sur le code généré par l'IA, ce qui permet aux entreprises d'innover plus rapidement et de manière plus sécurisée.
Codage sécurisé à l'ère de l'IA : essayez nos nouveaux défis interactifs en matière d'IA
Le codage assisté par l'IA est en train de changer le développement. Essayez nos nouveaux défis IA de type Copilot pour réviser, analyser et corriger le code en toute sécurité dans des flux de travail réalistes.