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.

더 알고 싶으신가요?

응용 프로그램 보안 연구원 - R&D 엔지니어 - 박사 후보

더 알아보세요

Secure Code Warrior 귀사의 조직이 소프트웨어 개발 라이프사이클 전반에 걸쳐 코드를 보호하고 사이버보안을 최우선으로 하는 문화를 조성하도록 Secure Code Warrior . AppSec 관리자, 개발자, CISO 또는 보안 관련 담당자라면 누구든, 저희는 귀사의 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.

데모 예약하기
공유하기:
링크드인 브랜드사회적x 로고
저자
피터 드 크레머
게시일: 2017년 9월 15일

응용 프로그램 보안 연구원 - R&D 엔지니어 - 박사 후보

공유하기:
링크드인 브랜드사회적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 오류 아이콘
양식을 보내려면 '분석' 쿠키를 활성화하세요. 완료 후에는 언제든지 다시 비활성화해도 됩니다.

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 귀사의 조직이 소프트웨어 개발 라이프사이클 전반에 걸쳐 코드를 보호하고 사이버보안을 최우선으로 하는 문화를 조성하도록 Secure Code Warrior . AppSec 관리자, 개발자, CISO 또는 보안 관련 담당자라면 누구든, 저희는 귀사의 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.

보고서 보기데모 예약하기
리소스 보기
공유하기:
링크드인 브랜드사회적x 로고
더 알고 싶으신가요?

공유하기:
링크드인 브랜드사회적x 로고
저자
피터 드 크레머
게시일: 2017년 9월 15일

응용 프로그램 보안 연구원 - R&D 엔지니어 - 박사 후보

공유하기:
링크드인 브랜드사회적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 다운로드
리소스 보기
더 알고 싶으신가요?

응용 프로그램 보안 연구원 - R&D 엔지니어 - 박사 후보

더 알아보세요

Secure Code Warrior 귀사의 조직이 소프트웨어 개발 라이프사이클 전반에 걸쳐 코드를 보호하고 사이버보안을 최우선으로 하는 문화를 조성하도록 Secure Code Warrior . AppSec 관리자, 개발자, CISO 또는 보안 관련 담당자라면 누구든, 저희는 귀사의 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.

데모 예약하기다운로드
공유하기:
링크드인 브랜드사회적x 로고
자원 센터

시작하기 위한 자료

더 많은 게시물
자원 센터

시작하기 위한 자료

더 많은 게시물