Blog

Comment évoluent les directives de codage sécurisé

September 15, 2017
Pieter De Cremer

La semaine dernière, je faisais des recherches sur les vulnérabilités de Java Spring afin de mettre à jour nos directives de codage sécurisé. J'étais en train de passer en revue les défis existants sur notre plateforme et j'en ai remarqué quelques-uns sur XSS en affichant les 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 bonne solution consistait à supprimer complètement le paramètre URL et la description indique qu'il est également sûr d'échapper au paramètre URL de la bonne manière.

Maintenant, mon travail consiste à formuler les directives de codage sécurisé de manière à ce qu'elles soient claires pour les développeurs et à les restreindre le moins possible tout en continuant à écrire du code sécurisé. Dans ce cas, je préférerais laisser les développeurs conserver les fonctionnalités prévues et leur recommander de le faire en toute sécurité en échappant au paramètre URL. De cette façon, 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)}">

Et c'était notre directive de codage sécurisé pendant quelques jours, jusqu'à ce que je tombe sur un Page de l'OWASP sur l'injection de langage d'expression. Cette page décrit comment le Spring Expression Language (SPel) peut être utilisé de manière abusive pour l'injection avec de graves conséquences, notamment pour l'exécution de code à distance. C'était à moi de déterminer s'il pouvait y avoir des cas où le code respectant nos directives de codage sécurisé pouvait toujours ê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 Xml s'échappant pour voir si je pouvais trouver des scénarios qui ne seraient pas détectés. Et je l'ai fait, il existe des expressions malveillantes qui ne contiennent aucun caractère détecté 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 directive de codage sécurisé qui se lit désormais comme suit : « Ne pas afficher ni évaluer les paramètres d'URL à l'aide du Spring Expression Language (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'applications. - Accès non autorisé aux données et aux fonctionnalités, ainsi que piratage de compte et exécution de code à distance. - Problèmes de confidentialité et d'intégrité liés à une attaque réussie.

https://www.owasp.org/index.php/Expression_Language_Injection

Slogan

Govern AI-driven development before it ships

Measure AI-assisted risk, enforce secure coding policy at commit, and accelerate secure delivery across your SDLC.

book a demo
Slogan

Explore more blogs

Lorem ipsum diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis.

browse all
Case Study
Filter Label
This is some text inside of a div block.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

Learn More
Case Study
Filter Label
This is some text inside of a div block.

One Culture of Security: How Sage built their security champions program with agile secure code learning

Discover how Sage enhanced security with a flexible, relationship-focused approach, creating 200+ security champions and achieving measurable risk reduction.

Learn More
Blog
Filter Label
This is some text inside of a div block.

Enabler 7: Developer Recognition

Recognition fuels participation. Enabler 7 celebrates developer achievement loudly, with rewards and exclusive swag that mark real, earned secure coding wins.

Learn More
Blog
Filter Label
This is some text inside of a div block.

Named in the Gartner® Hype Cycle™ for Application Security 2026

Secure Code Warrior is named in the Gartner® Hype Cycle™ for Application Security, 2026 for Agentic Coding Security and Secure Coding Training. Here's why.

Learn More
Blog
Filter Label
This is some text inside of a div block.

Are you a CISO or Engineering Leader worried about the Security and Cost of LLM code generation?

Review the SCW AI Trust Index, our proprietary LLM benchmarking data, before going all-in on an AI model.

Learn More

Secure AI-driven development before it ships

See developer risk, enforce policy, and prevent vulnerabilities across your software development lifecycle.

Réserver une démo
trust score
No items found.