
Cómo evolucionan las directrices de codificación segura
La semana pasada estuve investigando vulnerabilidades en Java Spring para poner al día nuestras directrices de codificación segura. Estaba revisando los retos existentes en nuestra plataforma y me di cuenta de unos cuantos sobre XSS a través de la visualización de parámetros url en páginas JSP. El ejemplo de código incorrecto sería algo similar a lo siguiente:
<input type="text" name="username" value="${param.username}">
La solución correcta era eliminar el parámetro URL por completo y la descripción menciona que escapar el parámetro URL de la manera correcta también es seguro.
Ahora, mi trabajo es formular la pauta de codificación segura de una manera que sea clara para los desarrolladores y los restrinja lo menos posible sin dejar de escribir código seguro. En este caso, prefiero dejar que los desarrolladores mantengan su funcionalidad prevista y recomendarles que lo hagan de forma segura escapando del parámetro de la URL. De esta manera, el código ya no contiene una vulnerabilidad XSS. El ejemplo anterior se puede asegurar así:
<input type="text" name="username" value="${fn:escapeXml(param.username)}">
Y esta fue nuestra pauta de codificación segura durante unos días, hasta que me topé con una página de OWASP sobre la inyección de lenguaje de expresión. Esta página describe cómo el Lenguaje de Expresión de Spring (SpEL) puede ser abusado para la inyección con algún impacto serio, incluyendo la ejecución remota de código. Me tocó averiguar si podría haber casos en los que el código que se adhiere a nuestra directriz de codificación segura todavía puede ser afectado por esta vulnerabilidad. Así que escribí una aplicación de prueba rápida para evaluar las expresiones SpEL, y probé la entrada con y sin escape Xml para ver si podía encontrar algunos escenarios que no fueran capturados. Y lo hice, hay expresiones maliciosas que no contienen ningún carácter capturado por XmlEscape. He publicado la demo en nuestro github, que puedes encontrar aquí.
Y, por supuesto, he actualizado nuestra directriz de codificación segura que ahora dice: "No muestre o evalúe los parámetros de la URL utilizando el Lenguaje de Expresión de Spring (SpEL)".
El impacto global de este problema es alto, por las siguientes razones: - Un atacante podría modificar e invocar funcionalidad en el servidor de aplicaciones. - Acceso no autorizado a datos y funcionalidades, así como secuestro de cuentas y ejecución remota de código. - Preocupación por la confidencialidad y la integridad de un ataque exitoso.
https://www.owasp.org/index.php/Expression_Language_Injection


La semana pasada estuve investigando vulnerabilidades en Java Spring para poner al día nuestras directrices de codificación segura.
Investigador de seguridad de aplicaciones - Ingeniero de I+D - Candidato a doctor

Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Reservar una demostraciónInvestigador de seguridad de aplicaciones - Ingeniero de I+D - Candidato a doctor


La semana pasada estuve investigando vulnerabilidades en Java Spring para poner al día nuestras directrices de codificación segura. Estaba revisando los retos existentes en nuestra plataforma y me di cuenta de unos cuantos sobre XSS a través de la visualización de parámetros url en páginas JSP. El ejemplo de código incorrecto sería algo similar a lo siguiente:
<input type="text" name="username" value="${param.username}">
La solución correcta era eliminar el parámetro URL por completo y la descripción menciona que escapar el parámetro URL de la manera correcta también es seguro.
Ahora, mi trabajo es formular la pauta de codificación segura de una manera que sea clara para los desarrolladores y los restrinja lo menos posible sin dejar de escribir código seguro. En este caso, prefiero dejar que los desarrolladores mantengan su funcionalidad prevista y recomendarles que lo hagan de forma segura escapando del parámetro de la URL. De esta manera, el código ya no contiene una vulnerabilidad XSS. El ejemplo anterior se puede asegurar así:
<input type="text" name="username" value="${fn:escapeXml(param.username)}">
Y esta fue nuestra pauta de codificación segura durante unos días, hasta que me topé con una página de OWASP sobre la inyección de lenguaje de expresión. Esta página describe cómo el Lenguaje de Expresión de Spring (SpEL) puede ser abusado para la inyección con algún impacto serio, incluyendo la ejecución remota de código. Me tocó averiguar si podría haber casos en los que el código que se adhiere a nuestra directriz de codificación segura todavía puede ser afectado por esta vulnerabilidad. Así que escribí una aplicación de prueba rápida para evaluar las expresiones SpEL, y probé la entrada con y sin escape Xml para ver si podía encontrar algunos escenarios que no fueran capturados. Y lo hice, hay expresiones maliciosas que no contienen ningún carácter capturado por XmlEscape. He publicado la demo en nuestro github, que puedes encontrar aquí.
Y, por supuesto, he actualizado nuestra directriz de codificación segura que ahora dice: "No muestre o evalúe los parámetros de la URL utilizando el Lenguaje de Expresión de Spring (SpEL)".
El impacto global de este problema es alto, por las siguientes razones: - Un atacante podría modificar e invocar funcionalidad en el servidor de aplicaciones. - Acceso no autorizado a datos y funcionalidades, así como secuestro de cuentas y ejecución remota de código. - Preocupación por la confidencialidad y la integridad de un ataque exitoso.
https://www.owasp.org/index.php/Expression_Language_Injection

La semana pasada estuve investigando vulnerabilidades en Java Spring para poner al día nuestras directrices de codificación segura. Estaba revisando los retos existentes en nuestra plataforma y me di cuenta de unos cuantos sobre XSS a través de la visualización de parámetros url en páginas JSP. El ejemplo de código incorrecto sería algo similar a lo siguiente:
<input type="text" name="username" value="${param.username}">
La solución correcta era eliminar el parámetro URL por completo y la descripción menciona que escapar el parámetro URL de la manera correcta también es seguro.
Ahora, mi trabajo es formular la pauta de codificación segura de una manera que sea clara para los desarrolladores y los restrinja lo menos posible sin dejar de escribir código seguro. En este caso, prefiero dejar que los desarrolladores mantengan su funcionalidad prevista y recomendarles que lo hagan de forma segura escapando del parámetro de la URL. De esta manera, el código ya no contiene una vulnerabilidad XSS. El ejemplo anterior se puede asegurar así:
<input type="text" name="username" value="${fn:escapeXml(param.username)}">
Y esta fue nuestra pauta de codificación segura durante unos días, hasta que me topé con una página de OWASP sobre la inyección de lenguaje de expresión. Esta página describe cómo el Lenguaje de Expresión de Spring (SpEL) puede ser abusado para la inyección con algún impacto serio, incluyendo la ejecución remota de código. Me tocó averiguar si podría haber casos en los que el código que se adhiere a nuestra directriz de codificación segura todavía puede ser afectado por esta vulnerabilidad. Así que escribí una aplicación de prueba rápida para evaluar las expresiones SpEL, y probé la entrada con y sin escape Xml para ver si podía encontrar algunos escenarios que no fueran capturados. Y lo hice, hay expresiones maliciosas que no contienen ningún carácter capturado por XmlEscape. He publicado la demo en nuestro github, que puedes encontrar aquí.
Y, por supuesto, he actualizado nuestra directriz de codificación segura que ahora dice: "No muestre o evalúe los parámetros de la URL utilizando el Lenguaje de Expresión de Spring (SpEL)".
El impacto global de este problema es alto, por las siguientes razones: - Un atacante podría modificar e invocar funcionalidad en el servidor de aplicaciones. - Acceso no autorizado a datos y funcionalidades, así como secuestro de cuentas y ejecución remota de código. - Preocupación por la confidencialidad y la integridad de un ataque exitoso.
https://www.owasp.org/index.php/Expression_Language_Injection

Haga clic en el siguiente enlace y descargue el PDF de este recurso.
Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Ver el informeReservar una demostraciónInvestigador de seguridad de aplicaciones - Ingeniero de I+D - Candidato a doctor
La semana pasada estuve investigando vulnerabilidades en Java Spring para poner al día nuestras directrices de codificación segura. Estaba revisando los retos existentes en nuestra plataforma y me di cuenta de unos cuantos sobre XSS a través de la visualización de parámetros url en páginas JSP. El ejemplo de código incorrecto sería algo similar a lo siguiente:
<input type="text" name="username" value="${param.username}">
La solución correcta era eliminar el parámetro URL por completo y la descripción menciona que escapar el parámetro URL de la manera correcta también es seguro.
Ahora, mi trabajo es formular la pauta de codificación segura de una manera que sea clara para los desarrolladores y los restrinja lo menos posible sin dejar de escribir código seguro. En este caso, prefiero dejar que los desarrolladores mantengan su funcionalidad prevista y recomendarles que lo hagan de forma segura escapando del parámetro de la URL. De esta manera, el código ya no contiene una vulnerabilidad XSS. El ejemplo anterior se puede asegurar así:
<input type="text" name="username" value="${fn:escapeXml(param.username)}">
Y esta fue nuestra pauta de codificación segura durante unos días, hasta que me topé con una página de OWASP sobre la inyección de lenguaje de expresión. Esta página describe cómo el Lenguaje de Expresión de Spring (SpEL) puede ser abusado para la inyección con algún impacto serio, incluyendo la ejecución remota de código. Me tocó averiguar si podría haber casos en los que el código que se adhiere a nuestra directriz de codificación segura todavía puede ser afectado por esta vulnerabilidad. Así que escribí una aplicación de prueba rápida para evaluar las expresiones SpEL, y probé la entrada con y sin escape Xml para ver si podía encontrar algunos escenarios que no fueran capturados. Y lo hice, hay expresiones maliciosas que no contienen ningún carácter capturado por XmlEscape. He publicado la demo en nuestro github, que puedes encontrar aquí.
Y, por supuesto, he actualizado nuestra directriz de codificación segura que ahora dice: "No muestre o evalúe los parámetros de la URL utilizando el Lenguaje de Expresión de Spring (SpEL)".
El impacto global de este problema es alto, por las siguientes razones: - Un atacante podría modificar e invocar funcionalidad en el servidor de aplicaciones. - Acceso no autorizado a datos y funcionalidades, así como secuestro de cuentas y ejecución remota de código. - Preocupación por la confidencialidad y la integridad de un ataque exitoso.
https://www.owasp.org/index.php/Expression_Language_Injection
Índice
Investigador de seguridad de aplicaciones - Ingeniero de I+D - Candidato a doctor

Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Reservar una demostraciónDescargarRecursos para empezar
Trust Agent:AI - Secure and scale AI-Drive development
AI is writing code. Who’s governing it? With up to 50% of AI-generated code containing security weaknesses, managing AI risk is critical. Discover how SCW's Trust Agent: AI provides the real-time visibility, proactive governance, and targeted upskilling needed to scale AI-driven development securely.
El poder de la seguridad de aplicaciones OpenText + Secure Code Warrior
OpenText Application Security and Secure Code Warrior combine vulnerability detection with AI Software Governance and developer capability. Together, they help organizations reduce risk, strengthen secure coding practices, and confidently adopt AI-driven development.
Secure Code Warrior corporate overview
Secure Code Warrior is an AI Software Governance platform designed to enable organizations to safely adopt AI-driven development by bridging the gap between development velocity and enterprise security. The platform addresses the "Visibility Gap," where security teams often lack insights into shadow AI coding tools and the origins of production code.
Temas y contenidos de la formación sobre código seguro
Our industry-leading content is always evolving to fit the ever changing software development landscape with your role in mind. Topics covering everything from AI to XQuery Injection, offered for a variety of roles from Architects and Engineers to Product Managers and QA. Get a sneak peek of what our content catalog has to offer by topic and role.
Recursos para empezar
Observe and Secure the ADLC: A Four-Point Framework for CISOs and Development Teams Using AI
While development teams look to make the most of GenAI’s undeniable benefits, we’d like to propose a four-point foundational framework that will allow security leaders to deploy AI coding tools and agents with a higher, more relevant standard of security best practices. It details exactly what enterprises can do to ensure safe, secure code development right now, and as agentic AI becomes an even bigger factor in the future.





.png)
