SCW图标
英雄背景无分隔线
博客

Cómo evolucionan las directrices de codificación segura

皮特-德-克雷默
发表于 2017 年 9 月 15 日
最后更新于 2026年3月6日

La semana pasada estuve investigando las vulnerabilidades en Java Spring para actualizar nuestras directrices de codificación segura. Estaba analizando los desafíos existentes en nuestra plataforma y me di cuenta de que había algunos en XSS al mostrar los parámetros de URL en las páginas JSP. El ejemplo de código incorrecto tendría un aspecto similar al 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 del parámetro URL de la manera correcta también es seguro.

Ahora, mi trabajo consiste en formular la guía de codificación segura de una manera que sea clara para los desarrolladores y las restrinja lo menos posible mientras sigo escribiendo código seguro. En este caso, preferiría dejar que los desarrolladores conserven la funcionalidad deseada y recomendarles que lo hagan de forma segura evitando el parámetro URL. De esta forma, el código ya no contiene una vulnerabilidad de XSS. El ejemplo anterior se puede proteger de la siguiente manera:

<input type="text" name="username" value="${fn:escapeXml(param.username)}">

Y esta fue nuestra guía 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 se puede abusar del Spring Expression Language (SpEL) para inyectarlo con graves consecuencias, incluida la ejecución remota de código. Yo tenía que averiguar si había casos en los que el código que cumplía nuestra directriz de codificación segura pudiera seguir viéndose afectado por esta vulnerabilidad. Así que escribí una aplicación de prueba rápida para evaluar las expresiones de SpEl y probé las entradas con y sin Xml para ver si podía encontrar algunos escenarios que no se detectaran. Y lo hice, hay expresiones maliciosas que no contienen ningún carácter detectado por XMLescape. He publicado la demostración funcional en nuestro github, que puedes encontrar aquí.

Y, por supuesto, he actualizado nuestra guía de codificación segura, que ahora dice: «No muestre ni evalúe los parámetros de URL con el Spring Expression Language (SpEL)».

El impacto general de este problema es elevado, por las siguientes razones: - Un atacante podría modificar e invocar funciones en el servidor de aplicaciones. - Acceso no autorizado a datos y funciones, así como secuestro de cuentas y ejecución remota de código. - Problemas de confidencialidad e integridad derivados de un ataque exitoso.

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

查看资源
查看资源

La semana pasada estuve investigando las vulnerabilidades en Java Spring para actualizar nuestras directrices de codificación segura.

感兴趣了解更多吗?

应用安全研究员-研发工程师-博士生

了解更多

Secure Code Warrior 您的组织在软件开发全生命周期中保护代码安全,并营造将网络安全置于首位的企业文化。无论您是应用安全管理员、开发人员、首席信息安全官,还是任何与安全相关的工作人员,我们都能助力您的组织降低不安全代码带来的风险。

预约演示
分享到:
领英品牌社交x 标志
作者
皮特-德-克雷默
发表于2017年9月15日

应用安全研究员-研发工程师-博士生

分享到:
领英品牌社交x 标志

La semana pasada estuve investigando las vulnerabilidades en Java Spring para actualizar nuestras directrices de codificación segura. Estaba analizando los desafíos existentes en nuestra plataforma y me di cuenta de que había algunos en XSS al mostrar los parámetros de URL en las páginas JSP. El ejemplo de código incorrecto tendría un aspecto similar al 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 del parámetro URL de la manera correcta también es seguro.

Ahora, mi trabajo consiste en formular la guía de codificación segura de una manera que sea clara para los desarrolladores y las restrinja lo menos posible mientras sigo escribiendo código seguro. En este caso, preferiría dejar que los desarrolladores conserven la funcionalidad deseada y recomendarles que lo hagan de forma segura evitando el parámetro URL. De esta forma, el código ya no contiene una vulnerabilidad de XSS. El ejemplo anterior se puede proteger de la siguiente manera:

<input type="text" name="username" value="${fn:escapeXml(param.username)}">

Y esta fue nuestra guía 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 se puede abusar del Spring Expression Language (SpEL) para inyectarlo con graves consecuencias, incluida la ejecución remota de código. Yo tenía que averiguar si había casos en los que el código que cumplía nuestra directriz de codificación segura pudiera seguir viéndose afectado por esta vulnerabilidad. Así que escribí una aplicación de prueba rápida para evaluar las expresiones de SpEl y probé las entradas con y sin Xml para ver si podía encontrar algunos escenarios que no se detectaran. Y lo hice, hay expresiones maliciosas que no contienen ningún carácter detectado por XMLescape. He publicado la demostración funcional en nuestro github, que puedes encontrar aquí.

Y, por supuesto, he actualizado nuestra guía de codificación segura, que ahora dice: «No muestre ni evalúe los parámetros de URL con el Spring Expression Language (SpEL)».

El impacto general de este problema es elevado, por las siguientes razones: - Un atacante podría modificar e invocar funciones en el servidor de aplicaciones. - Acceso no autorizado a datos y funciones, así como secuestro de cuentas y ejecución remota de código. - Problemas de confidencialidad e integridad derivados de un ataque exitoso.

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

查看资源
查看资源

请填写以下表格以下载报告

我们希望获得您的许可,以便向您发送有关我们产品或安全编码相关主题的信息。我们将始终以最高标准谨慎处理您的个人数据,绝不会出于营销目的将其出售给其他公司。

发送
scw 成功图标
SCW 错误图标
要提交表单,请启用「分析」cookie。完成后请随时将其重新禁用。

La semana pasada estuve investigando las vulnerabilidades en Java Spring para actualizar nuestras directrices de codificación segura. Estaba analizando los desafíos existentes en nuestra plataforma y me di cuenta de que había algunos en XSS al mostrar los parámetros de URL en las páginas JSP. El ejemplo de código incorrecto tendría un aspecto similar al 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 del parámetro URL de la manera correcta también es seguro.

Ahora, mi trabajo consiste en formular la guía de codificación segura de una manera que sea clara para los desarrolladores y las restrinja lo menos posible mientras sigo escribiendo código seguro. En este caso, preferiría dejar que los desarrolladores conserven la funcionalidad deseada y recomendarles que lo hagan de forma segura evitando el parámetro URL. De esta forma, el código ya no contiene una vulnerabilidad de XSS. El ejemplo anterior se puede proteger de la siguiente manera:

<input type="text" name="username" value="${fn:escapeXml(param.username)}">

Y esta fue nuestra guía 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 se puede abusar del Spring Expression Language (SpEL) para inyectarlo con graves consecuencias, incluida la ejecución remota de código. Yo tenía que averiguar si había casos en los que el código que cumplía nuestra directriz de codificación segura pudiera seguir viéndose afectado por esta vulnerabilidad. Así que escribí una aplicación de prueba rápida para evaluar las expresiones de SpEl y probé las entradas con y sin Xml para ver si podía encontrar algunos escenarios que no se detectaran. Y lo hice, hay expresiones maliciosas que no contienen ningún carácter detectado por XMLescape. He publicado la demostración funcional en nuestro github, que puedes encontrar aquí.

Y, por supuesto, he actualizado nuestra guía de codificación segura, que ahora dice: «No muestre ni evalúe los parámetros de URL con el Spring Expression Language (SpEL)».

El impacto general de este problema es elevado, por las siguientes razones: - Un atacante podría modificar e invocar funciones en el servidor de aplicaciones. - Acceso no autorizado a datos y funciones, así como secuestro de cuentas y ejecución remota de código. - Problemas de confidencialidad e integridad derivados de un ataque exitoso.

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

观看网络研讨会
开始
了解更多

点击下方链接,下载此资源的PDF文件。

Secure Code Warrior 您的组织在软件开发全生命周期中保护代码安全,并营造将网络安全置于首位的企业文化。无论您是应用安全管理员、开发人员、首席信息安全官,还是任何与安全相关的工作人员,我们都能助力您的组织降低不安全代码带来的风险。

查看报告预约演示
查看资源
分享到:
领英品牌社交x 标志
感兴趣了解更多吗?

分享到:
领英品牌社交x 标志
作者
皮特-德-克雷默
发表于2017年9月15日

应用安全研究员-研发工程师-博士生

分享到:
领英品牌社交x 标志

La semana pasada estuve investigando las vulnerabilidades en Java Spring para actualizar nuestras directrices de codificación segura. Estaba analizando los desafíos existentes en nuestra plataforma y me di cuenta de que había algunos en XSS al mostrar los parámetros de URL en las páginas JSP. El ejemplo de código incorrecto tendría un aspecto similar al 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 del parámetro URL de la manera correcta también es seguro.

Ahora, mi trabajo consiste en formular la guía de codificación segura de una manera que sea clara para los desarrolladores y las restrinja lo menos posible mientras sigo escribiendo código seguro. En este caso, preferiría dejar que los desarrolladores conserven la funcionalidad deseada y recomendarles que lo hagan de forma segura evitando el parámetro URL. De esta forma, el código ya no contiene una vulnerabilidad de XSS. El ejemplo anterior se puede proteger de la siguiente manera:

<input type="text" name="username" value="${fn:escapeXml(param.username)}">

Y esta fue nuestra guía 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 se puede abusar del Spring Expression Language (SpEL) para inyectarlo con graves consecuencias, incluida la ejecución remota de código. Yo tenía que averiguar si había casos en los que el código que cumplía nuestra directriz de codificación segura pudiera seguir viéndose afectado por esta vulnerabilidad. Así que escribí una aplicación de prueba rápida para evaluar las expresiones de SpEl y probé las entradas con y sin Xml para ver si podía encontrar algunos escenarios que no se detectaran. Y lo hice, hay expresiones maliciosas que no contienen ningún carácter detectado por XMLescape. He publicado la demostración funcional en nuestro github, que puedes encontrar aquí.

Y, por supuesto, he actualizado nuestra guía de codificación segura, que ahora dice: «No muestre ni evalúe los parámetros de URL con el Spring Expression Language (SpEL)».

El impacto general de este problema es elevado, por las siguientes razones: - Un atacante podría modificar e invocar funciones en el servidor de aplicaciones. - Acceso no autorizado a datos y funciones, así como secuestro de cuentas y ejecución remota de código. - Problemas de confidencialidad e integridad derivados de un ataque exitoso.

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

目录

下载PDF
查看资源
感兴趣了解更多吗?

应用安全研究员-研发工程师-博士生

了解更多

Secure Code Warrior 您的组织在软件开发全生命周期中保护代码安全,并营造将网络安全置于首位的企业文化。无论您是应用安全管理员、开发人员、首席信息安全官,还是任何与安全相关的工作人员,我们都能助力您的组织降低不安全代码带来的风险。

预约演示下载
分享到:
领英品牌社交x 标志
资源中心

入门资源

更多出版物
资源中心

入门资源

更多出版物