Blog

Nueva categoría de riesgo en el Top Ten de OWASP: Esperar lo inesperado

Publicado el 01 de diciembre de 2025
Última actualización: 01 de diciembre de 2025

Con la publicación por parte de OWASP de su Top Ten 2025, las empresas tienen un par de nuevas categorías de riesgo a las que prestar especial atención, incluida una categoría completamente nueva que demuestra, de una vez por todas, que lo que no sabes puede hacerte daño.

La nueva categoría, Mishandling of Exceptional Conditions, describe lo que puede salir mal cuando las organizaciones no están preparadas para prevenir, detectar y responder a situaciones inusuales o impredecibles. Según OWASP, esta vulnerabilidad puede desencadenarse cuando una aplicación no evita que ocurra algo inusual, no identifica un problema cuando surge y/o responde mal o no responde en absoluto cuando se produce una situación inesperada. 

La idea de que las empresas deben estar preparadas para lo que no vieron venir refleja la realidad de los sistemas actuales, altamente distribuidos e interconectados. Y no es que OWASP esté hablando de problemas desconocidos: el manejo incorrecto de circunstancias excepcionales contiene 24 enumeraciones de debilidades comunes (CWE). Es sólo que esas CWEs, que implican un manejo inadecuado de errores, fallos en la apertura de eventos, errores lógicos y otros escenarios, pueden ocurrir bajo condiciones anormales. Esto puede resultar, por ejemplo, de una validación de entrada inadecuada, errores de alto nivel en el manejo de funciones y el manejo inconsistente (o inexistente) de excepciones. Como afirma OWASP, "Cada vez que una aplicación no está segura de su siguiente instrucción, una condición excepcional ha sido mal manejada".

Esas circunstancias excepcionales pueden hacer que los sistemas caigan en un estado impredecible, provocando caídas del sistema, comportamientos inesperados y vulnerabilidades de seguridad duraderas. La clave para prevenir este tipo de interrupciones es, esencialmente, esperar lo peor y planificar estar preparado para cuando ocurra lo inesperado.

[VER VÍDEO]

Circunstancias excepcionales y evolución del Top Ten

La composición de la lista cuatrienal de los diez riesgos más graves para la seguridad de las aplicaciones web se ha mantenido bastante estable a lo largo de los años, con algunas categorías que se desplazan por la lista y quizá una o dos incorporaciones cada cuatro años. La iteración de 2025 cuenta con dos nuevas entradas, entre las que se encuentra la Gestión incorrecta de condiciones excepcionales, en el número 10. La otra, Fallos en la cadena de suministro de software, se encuentra en el número 11. La otra, Fallos en la cadena de suministro de software, que ocupa el nº 3, es una ampliación de una categoría anterior, Componentes vulnerables y obsoletos (nº 6 en 2021), que ahora incluye una amplia gama de problemas de software. (Para los que lleven la cuenta, el control de acceso defectuoso sigue siendo el riesgo número 1). 

Las condiciones excepcionales que constituyen la categoría más reciente pueden crear toda una serie de vulnerabilidades, desde fallos lógicos hasta desbordamientos, pasando por transacciones fraudulentas y problemas de memoria, temporización, autenticación, autorización y otros factores. Estos tipos de vulnerabilidades pueden afectar a la confidencialidad, disponibilidad e integridad de un sistema o de sus datos. Permiten a un atacante manipular la gestión defectuosa de errores de una aplicación, por ejemplo, para explotar la vulnerabilidad, dijo OWASP. 

Un ejemplo de fallo en la gestión de condiciones inesperadas es cuando una aplicación identifica excepciones mientras se cargan archivos durante un ataque de denegación de servicio, pero luego no libera los recursos. Cuando esto ocurre, los recursos permanecen bloqueados o no disponibles, lo que provoca el agotamiento de los recursos. Si un atacante se inmiscuye en una transacción financiera de varios pasos, un sistema que no revierta la transacción una vez detectado un error podría permitir al atacante vaciar la cuenta del usuario. Si se detecta un error en mitad de una transacción, es muy importante "cerrar en caso de error", es decir, revertir toda la transacción y empezar de nuevo. Intentar recuperar una transacción a mitad de camino puede crear errores irrecuperables.

Fallo cerrado frente a fallo abierto

Entonces, ¿cuál es la diferencia entre estas dos acciones? Aclaremos:

Falla abierto: Si un sistema "falla abierto", sigue funcionando o permanece "abierto" cuando algo va mal. Esto es útil cuando mantener las cosas en funcionamiento es muy importante, pero puede ser arriesgado para la seguridad.

Fallo cerrado: Si un sistema "falla cerrado", se apaga automáticamente o se vuelve seguro cuando hay un problema. Esto es más seguro desde el punto de vista de la seguridad porque ayuda a evitar accesos no autorizados.

Errores imprevistos

La prevención de este tipo de riesgos empieza por planificar lo desconocido. Y eso implica ser capaz de detectar cualquier posible error del sistema cuando se produzca y tomar medidas para resolver el problema. Tienes que ser capaz de informar adecuadamente al usuario (sin revelar información crítica al atacante), registrar el evento y, si es necesario, emitir una alerta. 

He aquí un ejemplo de la revelación de un error de consulta SQL, junto con la ruta de instalación del sitio, que puede utilizarse para identificar un punto de inyección:

Advertencia: odbc_fetch_array() espera que el parámetro /1 sea un recurso, dado booleano en D:\app\index_new.php en la línea 188

Lo ideal sería que un sistema dispusiera de un gestor de excepciones global para detectar errores que se pasan por alto, junto con funciones como herramientas de supervisión u observabilidad, o una función que detecte errores repetidos o patrones que podrían indicar un ataque en curso. Esto puede ayudar a defenderse contra los ataques que pretenden aprovecharse de cualquier debilidad que la empresa pueda tener en el manejo de errores.

Para una aplicación web Java estándar, por ejemplo, se puede configurar un gestor de errores global a nivel del descriptor de despliegue web.xml -en este caso, una configuración utilizada a partir de la especificación Servlet versión 2.5 y superiores-.

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

ns="http://java.sun.com/xml/ns/javaee"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

version="3.0">
...
  <error-page>
     <exception-type>java.lang.Exception</exception-type>
     <location>/error.jsp</location>
</error-page>
...
</web-app>

Este pequeño bloque de código indica a una aplicación web Java qué hacer cuando algo va mal entre bastidores. En lugar de mostrar a los usuarios un mensaje de error confuso o una pantalla en blanco, detecta silenciosamente el problema y los envía a una página de error personalizada. En este caso, esa página sería error.jsp.

Debido a que está configurado para manejar los tipos generales de java.lang.Exception, actúa como un manejador de errores maestro para toda la aplicación. Eso significa que no importa dónde se produzca un error, los usuarios serán redirigidos a la misma página de error amigable y consistente en lugar de ver detalles técnicos en bruto.

Prevenir lo inesperado

Lo ideal sería que las organizaciones trabajaran para evitar, en la medida de lo posible, que se produzcan situaciones excepcionales. Implantar límites de velocidad, cuotas de recursos, estrangulamiento y otros límites puede ayudar contra los ataques de denegación de servicio y de fuerza bruta, por ejemplo. Es posible que desee identificar errores repetidos idénticos e incluirlos sólo como estadísticas, para que no interfieran con el registro y la supervisión automatizados. Un sistema también debería incluir:

Validación estricta de la entrada de datos, para garantizar que sólo se introducen en el flujo de trabajo datos correctamente formados y depurados. Debe realizarse al principio del flujo de datos, idealmente en cuanto se reciben los datos.

Mejores prácticas de gestión de errores, para detectar los errores justo donde se producen. Deben tratarse con eficacia: Diga claramente a los usuarios que deben mantener un registro y enviar alertas si es necesario. Un gestor de errores global también es ideal para detectar cualquier error que se haya pasado por alto. 

La seguridad general de las transacciones también es imprescindible. Siempre "a prueba de fallos": si algo va mal, deshaga toda la transacción. Y no intentes arreglar una transacción a medias: puede causar problemas mayores.

Registro, supervisión y alerta centralizados, junto con un gestor de excepciones global, que permite una investigación rápida de las incidencias y un proceso uniforme de gestión de los eventos, al tiempo que facilita el cumplimiento de los requisitos de conformidad.

Modelado de amenazas y/o revisión del diseño seguro, realizado en la fase de diseño de los proyectos.

Revisión del código o análisis estático, así como pruebas de estrés, rendimiento y penetración realizadas en el sistema final.

La gestión incorrecta de condiciones excepcionales puede ser una nueva categoría, pero implica algunos principios básicos de ciberseguridad y pone de relieve por qué las empresas deben estar preparadas para lo que no necesariamente están anticipando. Puede que no sepas qué forma tomarán las condiciones excepcionales, pero sabes que ocurrirán. La clave está en estar preparado para manejarlas todas de la misma manera, lo que facilitará la detección y respuesta a esas condiciones cuando surja lo inevitable. 

Nota para los usuarios deSCW Trust Score™ :

A medida que actualizamos el contenido de nuestra Learning Platform para alinearlo con el estándar OWASP Top 10 2025, es posible que observe pequeños ajustes en la puntuación de confianza de sus desarrolladores Full Stack. Póngase en contacto con su representante de Customer Success si tiene alguna pregunta o necesita ayuda.

Ver recurso
Ver recurso

OWASP Top 10 2025 añade la gestión incorrecta de condiciones excepcionales en el número 10. Mitigue los riesgos mediante una lógica "fail closed", gestores de errores globales y una estricta validación de entradas.

¿Quiere saber más?

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ón
Compartir en:
Autor
Publicado el 01 de diciembre de 2025

Compartir en:

Con la publicación por parte de OWASP de su Top Ten 2025, las empresas tienen un par de nuevas categorías de riesgo a las que prestar especial atención, incluida una categoría completamente nueva que demuestra, de una vez por todas, que lo que no sabes puede hacerte daño.

La nueva categoría, Mishandling of Exceptional Conditions, describe lo que puede salir mal cuando las organizaciones no están preparadas para prevenir, detectar y responder a situaciones inusuales o impredecibles. Según OWASP, esta vulnerabilidad puede desencadenarse cuando una aplicación no evita que ocurra algo inusual, no identifica un problema cuando surge y/o responde mal o no responde en absoluto cuando se produce una situación inesperada. 

La idea de que las empresas deben estar preparadas para lo que no vieron venir refleja la realidad de los sistemas actuales, altamente distribuidos e interconectados. Y no es que OWASP esté hablando de problemas desconocidos: el manejo incorrecto de circunstancias excepcionales contiene 24 enumeraciones de debilidades comunes (CWE). Es sólo que esas CWEs, que implican un manejo inadecuado de errores, fallos en la apertura de eventos, errores lógicos y otros escenarios, pueden ocurrir bajo condiciones anormales. Esto puede resultar, por ejemplo, de una validación de entrada inadecuada, errores de alto nivel en el manejo de funciones y el manejo inconsistente (o inexistente) de excepciones. Como afirma OWASP, "Cada vez que una aplicación no está segura de su siguiente instrucción, una condición excepcional ha sido mal manejada".

Esas circunstancias excepcionales pueden hacer que los sistemas caigan en un estado impredecible, provocando caídas del sistema, comportamientos inesperados y vulnerabilidades de seguridad duraderas. La clave para prevenir este tipo de interrupciones es, esencialmente, esperar lo peor y planificar estar preparado para cuando ocurra lo inesperado.

[VER VÍDEO]

Circunstancias excepcionales y evolución del Top Ten

La composición de la lista cuatrienal de los diez riesgos más graves para la seguridad de las aplicaciones web se ha mantenido bastante estable a lo largo de los años, con algunas categorías que se desplazan por la lista y quizá una o dos incorporaciones cada cuatro años. La iteración de 2025 cuenta con dos nuevas entradas, entre las que se encuentra la Gestión incorrecta de condiciones excepcionales, en el número 10. La otra, Fallos en la cadena de suministro de software, se encuentra en el número 11. La otra, Fallos en la cadena de suministro de software, que ocupa el nº 3, es una ampliación de una categoría anterior, Componentes vulnerables y obsoletos (nº 6 en 2021), que ahora incluye una amplia gama de problemas de software. (Para los que lleven la cuenta, el control de acceso defectuoso sigue siendo el riesgo número 1). 

Las condiciones excepcionales que constituyen la categoría más reciente pueden crear toda una serie de vulnerabilidades, desde fallos lógicos hasta desbordamientos, pasando por transacciones fraudulentas y problemas de memoria, temporización, autenticación, autorización y otros factores. Estos tipos de vulnerabilidades pueden afectar a la confidencialidad, disponibilidad e integridad de un sistema o de sus datos. Permiten a un atacante manipular la gestión defectuosa de errores de una aplicación, por ejemplo, para explotar la vulnerabilidad, dijo OWASP. 

Un ejemplo de fallo en la gestión de condiciones inesperadas es cuando una aplicación identifica excepciones mientras se cargan archivos durante un ataque de denegación de servicio, pero luego no libera los recursos. Cuando esto ocurre, los recursos permanecen bloqueados o no disponibles, lo que provoca el agotamiento de los recursos. Si un atacante se inmiscuye en una transacción financiera de varios pasos, un sistema que no revierta la transacción una vez detectado un error podría permitir al atacante vaciar la cuenta del usuario. Si se detecta un error en mitad de una transacción, es muy importante "cerrar en caso de error", es decir, revertir toda la transacción y empezar de nuevo. Intentar recuperar una transacción a mitad de camino puede crear errores irrecuperables.

Fallo cerrado frente a fallo abierto

Entonces, ¿cuál es la diferencia entre estas dos acciones? Aclaremos:

Falla abierto: Si un sistema "falla abierto", sigue funcionando o permanece "abierto" cuando algo va mal. Esto es útil cuando mantener las cosas en funcionamiento es muy importante, pero puede ser arriesgado para la seguridad.

Fallo cerrado: Si un sistema "falla cerrado", se apaga automáticamente o se vuelve seguro cuando hay un problema. Esto es más seguro desde el punto de vista de la seguridad porque ayuda a evitar accesos no autorizados.

Errores imprevistos

La prevención de este tipo de riesgos empieza por planificar lo desconocido. Y eso implica ser capaz de detectar cualquier posible error del sistema cuando se produzca y tomar medidas para resolver el problema. Tienes que ser capaz de informar adecuadamente al usuario (sin revelar información crítica al atacante), registrar el evento y, si es necesario, emitir una alerta. 

He aquí un ejemplo de la revelación de un error de consulta SQL, junto con la ruta de instalación del sitio, que puede utilizarse para identificar un punto de inyección:

Advertencia: odbc_fetch_array() espera que el parámetro /1 sea un recurso, dado booleano en D:\app\index_new.php en la línea 188

Lo ideal sería que un sistema dispusiera de un gestor de excepciones global para detectar errores que se pasan por alto, junto con funciones como herramientas de supervisión u observabilidad, o una función que detecte errores repetidos o patrones que podrían indicar un ataque en curso. Esto puede ayudar a defenderse contra los ataques que pretenden aprovecharse de cualquier debilidad que la empresa pueda tener en el manejo de errores.

Para una aplicación web Java estándar, por ejemplo, se puede configurar un gestor de errores global a nivel del descriptor de despliegue web.xml -en este caso, una configuración utilizada a partir de la especificación Servlet versión 2.5 y superiores-.

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

ns="http://java.sun.com/xml/ns/javaee"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

version="3.0">
...
  <error-page>
     <exception-type>java.lang.Exception</exception-type>
     <location>/error.jsp</location>
</error-page>
...
</web-app>

Este pequeño bloque de código indica a una aplicación web Java qué hacer cuando algo va mal entre bastidores. En lugar de mostrar a los usuarios un mensaje de error confuso o una pantalla en blanco, detecta silenciosamente el problema y los envía a una página de error personalizada. En este caso, esa página sería error.jsp.

Debido a que está configurado para manejar los tipos generales de java.lang.Exception, actúa como un manejador de errores maestro para toda la aplicación. Eso significa que no importa dónde se produzca un error, los usuarios serán redirigidos a la misma página de error amigable y consistente en lugar de ver detalles técnicos en bruto.

Prevenir lo inesperado

Lo ideal sería que las organizaciones trabajaran para evitar, en la medida de lo posible, que se produzcan situaciones excepcionales. Implantar límites de velocidad, cuotas de recursos, estrangulamiento y otros límites puede ayudar contra los ataques de denegación de servicio y de fuerza bruta, por ejemplo. Es posible que desee identificar errores repetidos idénticos e incluirlos sólo como estadísticas, para que no interfieran con el registro y la supervisión automatizados. Un sistema también debería incluir:

Validación estricta de la entrada de datos, para garantizar que sólo se introducen en el flujo de trabajo datos correctamente formados y depurados. Debe realizarse al principio del flujo de datos, idealmente en cuanto se reciben los datos.

Mejores prácticas de gestión de errores, para detectar los errores justo donde se producen. Deben tratarse con eficacia: Diga claramente a los usuarios que deben mantener un registro y enviar alertas si es necesario. Un gestor de errores global también es ideal para detectar cualquier error que se haya pasado por alto. 

La seguridad general de las transacciones también es imprescindible. Siempre "a prueba de fallos": si algo va mal, deshaga toda la transacción. Y no intentes arreglar una transacción a medias: puede causar problemas mayores.

Registro, supervisión y alerta centralizados, junto con un gestor de excepciones global, que permite una investigación rápida de las incidencias y un proceso uniforme de gestión de los eventos, al tiempo que facilita el cumplimiento de los requisitos de conformidad.

Modelado de amenazas y/o revisión del diseño seguro, realizado en la fase de diseño de los proyectos.

Revisión del código o análisis estático, así como pruebas de estrés, rendimiento y penetración realizadas en el sistema final.

La gestión incorrecta de condiciones excepcionales puede ser una nueva categoría, pero implica algunos principios básicos de ciberseguridad y pone de relieve por qué las empresas deben estar preparadas para lo que no necesariamente están anticipando. Puede que no sepas qué forma tomarán las condiciones excepcionales, pero sabes que ocurrirán. La clave está en estar preparado para manejarlas todas de la misma manera, lo que facilitará la detección y respuesta a esas condiciones cuando surja lo inevitable. 

Nota para los usuarios deSCW Trust Score™ :

A medida que actualizamos el contenido de nuestra Learning Platform para alinearlo con el estándar OWASP Top 10 2025, es posible que observe pequeños ajustes en la puntuación de confianza de sus desarrolladores Full Stack. Póngase en contacto con su representante de Customer Success si tiene alguna pregunta o necesita ayuda.

Ver recurso
Ver recurso

Rellene el siguiente formulario para descargar el informe

Nos gustaría contar con su permiso para enviarle información sobre nuestros productos y/o temas relacionados con la codificación segura. Siempre trataremos sus datos personales con el máximo cuidado y nunca los venderemos a otras empresas con fines de marketing.

Enviar
Para enviar el formulario, habilite las cookies "Analytics". Siéntase libre de desactivarlas de nuevo una vez que haya terminado.

Con la publicación por parte de OWASP de su Top Ten 2025, las empresas tienen un par de nuevas categorías de riesgo a las que prestar especial atención, incluida una categoría completamente nueva que demuestra, de una vez por todas, que lo que no sabes puede hacerte daño.

La nueva categoría, Mishandling of Exceptional Conditions, describe lo que puede salir mal cuando las organizaciones no están preparadas para prevenir, detectar y responder a situaciones inusuales o impredecibles. Según OWASP, esta vulnerabilidad puede desencadenarse cuando una aplicación no evita que ocurra algo inusual, no identifica un problema cuando surge y/o responde mal o no responde en absoluto cuando se produce una situación inesperada. 

La idea de que las empresas deben estar preparadas para lo que no vieron venir refleja la realidad de los sistemas actuales, altamente distribuidos e interconectados. Y no es que OWASP esté hablando de problemas desconocidos: el manejo incorrecto de circunstancias excepcionales contiene 24 enumeraciones de debilidades comunes (CWE). Es sólo que esas CWEs, que implican un manejo inadecuado de errores, fallos en la apertura de eventos, errores lógicos y otros escenarios, pueden ocurrir bajo condiciones anormales. Esto puede resultar, por ejemplo, de una validación de entrada inadecuada, errores de alto nivel en el manejo de funciones y el manejo inconsistente (o inexistente) de excepciones. Como afirma OWASP, "Cada vez que una aplicación no está segura de su siguiente instrucción, una condición excepcional ha sido mal manejada".

Esas circunstancias excepcionales pueden hacer que los sistemas caigan en un estado impredecible, provocando caídas del sistema, comportamientos inesperados y vulnerabilidades de seguridad duraderas. La clave para prevenir este tipo de interrupciones es, esencialmente, esperar lo peor y planificar estar preparado para cuando ocurra lo inesperado.

[VER VÍDEO]

Circunstancias excepcionales y evolución del Top Ten

La composición de la lista cuatrienal de los diez riesgos más graves para la seguridad de las aplicaciones web se ha mantenido bastante estable a lo largo de los años, con algunas categorías que se desplazan por la lista y quizá una o dos incorporaciones cada cuatro años. La iteración de 2025 cuenta con dos nuevas entradas, entre las que se encuentra la Gestión incorrecta de condiciones excepcionales, en el número 10. La otra, Fallos en la cadena de suministro de software, se encuentra en el número 11. La otra, Fallos en la cadena de suministro de software, que ocupa el nº 3, es una ampliación de una categoría anterior, Componentes vulnerables y obsoletos (nº 6 en 2021), que ahora incluye una amplia gama de problemas de software. (Para los que lleven la cuenta, el control de acceso defectuoso sigue siendo el riesgo número 1). 

Las condiciones excepcionales que constituyen la categoría más reciente pueden crear toda una serie de vulnerabilidades, desde fallos lógicos hasta desbordamientos, pasando por transacciones fraudulentas y problemas de memoria, temporización, autenticación, autorización y otros factores. Estos tipos de vulnerabilidades pueden afectar a la confidencialidad, disponibilidad e integridad de un sistema o de sus datos. Permiten a un atacante manipular la gestión defectuosa de errores de una aplicación, por ejemplo, para explotar la vulnerabilidad, dijo OWASP. 

Un ejemplo de fallo en la gestión de condiciones inesperadas es cuando una aplicación identifica excepciones mientras se cargan archivos durante un ataque de denegación de servicio, pero luego no libera los recursos. Cuando esto ocurre, los recursos permanecen bloqueados o no disponibles, lo que provoca el agotamiento de los recursos. Si un atacante se inmiscuye en una transacción financiera de varios pasos, un sistema que no revierta la transacción una vez detectado un error podría permitir al atacante vaciar la cuenta del usuario. Si se detecta un error en mitad de una transacción, es muy importante "cerrar en caso de error", es decir, revertir toda la transacción y empezar de nuevo. Intentar recuperar una transacción a mitad de camino puede crear errores irrecuperables.

Fallo cerrado frente a fallo abierto

Entonces, ¿cuál es la diferencia entre estas dos acciones? Aclaremos:

Falla abierto: Si un sistema "falla abierto", sigue funcionando o permanece "abierto" cuando algo va mal. Esto es útil cuando mantener las cosas en funcionamiento es muy importante, pero puede ser arriesgado para la seguridad.

Fallo cerrado: Si un sistema "falla cerrado", se apaga automáticamente o se vuelve seguro cuando hay un problema. Esto es más seguro desde el punto de vista de la seguridad porque ayuda a evitar accesos no autorizados.

Errores imprevistos

La prevención de este tipo de riesgos empieza por planificar lo desconocido. Y eso implica ser capaz de detectar cualquier posible error del sistema cuando se produzca y tomar medidas para resolver el problema. Tienes que ser capaz de informar adecuadamente al usuario (sin revelar información crítica al atacante), registrar el evento y, si es necesario, emitir una alerta. 

He aquí un ejemplo de la revelación de un error de consulta SQL, junto con la ruta de instalación del sitio, que puede utilizarse para identificar un punto de inyección:

Advertencia: odbc_fetch_array() espera que el parámetro /1 sea un recurso, dado booleano en D:\app\index_new.php en la línea 188

Lo ideal sería que un sistema dispusiera de un gestor de excepciones global para detectar errores que se pasan por alto, junto con funciones como herramientas de supervisión u observabilidad, o una función que detecte errores repetidos o patrones que podrían indicar un ataque en curso. Esto puede ayudar a defenderse contra los ataques que pretenden aprovecharse de cualquier debilidad que la empresa pueda tener en el manejo de errores.

Para una aplicación web Java estándar, por ejemplo, se puede configurar un gestor de errores global a nivel del descriptor de despliegue web.xml -en este caso, una configuración utilizada a partir de la especificación Servlet versión 2.5 y superiores-.

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

ns="http://java.sun.com/xml/ns/javaee"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

version="3.0">
...
  <error-page>
     <exception-type>java.lang.Exception</exception-type>
     <location>/error.jsp</location>
</error-page>
...
</web-app>

Este pequeño bloque de código indica a una aplicación web Java qué hacer cuando algo va mal entre bastidores. En lugar de mostrar a los usuarios un mensaje de error confuso o una pantalla en blanco, detecta silenciosamente el problema y los envía a una página de error personalizada. En este caso, esa página sería error.jsp.

Debido a que está configurado para manejar los tipos generales de java.lang.Exception, actúa como un manejador de errores maestro para toda la aplicación. Eso significa que no importa dónde se produzca un error, los usuarios serán redirigidos a la misma página de error amigable y consistente en lugar de ver detalles técnicos en bruto.

Prevenir lo inesperado

Lo ideal sería que las organizaciones trabajaran para evitar, en la medida de lo posible, que se produzcan situaciones excepcionales. Implantar límites de velocidad, cuotas de recursos, estrangulamiento y otros límites puede ayudar contra los ataques de denegación de servicio y de fuerza bruta, por ejemplo. Es posible que desee identificar errores repetidos idénticos e incluirlos sólo como estadísticas, para que no interfieran con el registro y la supervisión automatizados. Un sistema también debería incluir:

Validación estricta de la entrada de datos, para garantizar que sólo se introducen en el flujo de trabajo datos correctamente formados y depurados. Debe realizarse al principio del flujo de datos, idealmente en cuanto se reciben los datos.

Mejores prácticas de gestión de errores, para detectar los errores justo donde se producen. Deben tratarse con eficacia: Diga claramente a los usuarios que deben mantener un registro y enviar alertas si es necesario. Un gestor de errores global también es ideal para detectar cualquier error que se haya pasado por alto. 

La seguridad general de las transacciones también es imprescindible. Siempre "a prueba de fallos": si algo va mal, deshaga toda la transacción. Y no intentes arreglar una transacción a medias: puede causar problemas mayores.

Registro, supervisión y alerta centralizados, junto con un gestor de excepciones global, que permite una investigación rápida de las incidencias y un proceso uniforme de gestión de los eventos, al tiempo que facilita el cumplimiento de los requisitos de conformidad.

Modelado de amenazas y/o revisión del diseño seguro, realizado en la fase de diseño de los proyectos.

Revisión del código o análisis estático, así como pruebas de estrés, rendimiento y penetración realizadas en el sistema final.

La gestión incorrecta de condiciones excepcionales puede ser una nueva categoría, pero implica algunos principios básicos de ciberseguridad y pone de relieve por qué las empresas deben estar preparadas para lo que no necesariamente están anticipando. Puede que no sepas qué forma tomarán las condiciones excepcionales, pero sabes que ocurrirán. La clave está en estar preparado para manejarlas todas de la misma manera, lo que facilitará la detección y respuesta a esas condiciones cuando surja lo inevitable. 

Nota para los usuarios deSCW Trust Score™ :

A medida que actualizamos el contenido de nuestra Learning Platform para alinearlo con el estándar OWASP Top 10 2025, es posible que observe pequeños ajustes en la puntuación de confianza de sus desarrolladores Full Stack. Póngase en contacto con su representante de Customer Success si tiene alguna pregunta o necesita ayuda.

Ver el seminario web
Empezar a trabajar

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ón
Ver recurso
Compartir en:
¿Quiere saber más?

Compartir en:
Autor
Publicado el 01 de diciembre de 2025

Compartir en:

Con la publicación por parte de OWASP de su Top Ten 2025, las empresas tienen un par de nuevas categorías de riesgo a las que prestar especial atención, incluida una categoría completamente nueva que demuestra, de una vez por todas, que lo que no sabes puede hacerte daño.

La nueva categoría, Mishandling of Exceptional Conditions, describe lo que puede salir mal cuando las organizaciones no están preparadas para prevenir, detectar y responder a situaciones inusuales o impredecibles. Según OWASP, esta vulnerabilidad puede desencadenarse cuando una aplicación no evita que ocurra algo inusual, no identifica un problema cuando surge y/o responde mal o no responde en absoluto cuando se produce una situación inesperada. 

La idea de que las empresas deben estar preparadas para lo que no vieron venir refleja la realidad de los sistemas actuales, altamente distribuidos e interconectados. Y no es que OWASP esté hablando de problemas desconocidos: el manejo incorrecto de circunstancias excepcionales contiene 24 enumeraciones de debilidades comunes (CWE). Es sólo que esas CWEs, que implican un manejo inadecuado de errores, fallos en la apertura de eventos, errores lógicos y otros escenarios, pueden ocurrir bajo condiciones anormales. Esto puede resultar, por ejemplo, de una validación de entrada inadecuada, errores de alto nivel en el manejo de funciones y el manejo inconsistente (o inexistente) de excepciones. Como afirma OWASP, "Cada vez que una aplicación no está segura de su siguiente instrucción, una condición excepcional ha sido mal manejada".

Esas circunstancias excepcionales pueden hacer que los sistemas caigan en un estado impredecible, provocando caídas del sistema, comportamientos inesperados y vulnerabilidades de seguridad duraderas. La clave para prevenir este tipo de interrupciones es, esencialmente, esperar lo peor y planificar estar preparado para cuando ocurra lo inesperado.

[VER VÍDEO]

Circunstancias excepcionales y evolución del Top Ten

La composición de la lista cuatrienal de los diez riesgos más graves para la seguridad de las aplicaciones web se ha mantenido bastante estable a lo largo de los años, con algunas categorías que se desplazan por la lista y quizá una o dos incorporaciones cada cuatro años. La iteración de 2025 cuenta con dos nuevas entradas, entre las que se encuentra la Gestión incorrecta de condiciones excepcionales, en el número 10. La otra, Fallos en la cadena de suministro de software, se encuentra en el número 11. La otra, Fallos en la cadena de suministro de software, que ocupa el nº 3, es una ampliación de una categoría anterior, Componentes vulnerables y obsoletos (nº 6 en 2021), que ahora incluye una amplia gama de problemas de software. (Para los que lleven la cuenta, el control de acceso defectuoso sigue siendo el riesgo número 1). 

Las condiciones excepcionales que constituyen la categoría más reciente pueden crear toda una serie de vulnerabilidades, desde fallos lógicos hasta desbordamientos, pasando por transacciones fraudulentas y problemas de memoria, temporización, autenticación, autorización y otros factores. Estos tipos de vulnerabilidades pueden afectar a la confidencialidad, disponibilidad e integridad de un sistema o de sus datos. Permiten a un atacante manipular la gestión defectuosa de errores de una aplicación, por ejemplo, para explotar la vulnerabilidad, dijo OWASP. 

Un ejemplo de fallo en la gestión de condiciones inesperadas es cuando una aplicación identifica excepciones mientras se cargan archivos durante un ataque de denegación de servicio, pero luego no libera los recursos. Cuando esto ocurre, los recursos permanecen bloqueados o no disponibles, lo que provoca el agotamiento de los recursos. Si un atacante se inmiscuye en una transacción financiera de varios pasos, un sistema que no revierta la transacción una vez detectado un error podría permitir al atacante vaciar la cuenta del usuario. Si se detecta un error en mitad de una transacción, es muy importante "cerrar en caso de error", es decir, revertir toda la transacción y empezar de nuevo. Intentar recuperar una transacción a mitad de camino puede crear errores irrecuperables.

Fallo cerrado frente a fallo abierto

Entonces, ¿cuál es la diferencia entre estas dos acciones? Aclaremos:

Falla abierto: Si un sistema "falla abierto", sigue funcionando o permanece "abierto" cuando algo va mal. Esto es útil cuando mantener las cosas en funcionamiento es muy importante, pero puede ser arriesgado para la seguridad.

Fallo cerrado: Si un sistema "falla cerrado", se apaga automáticamente o se vuelve seguro cuando hay un problema. Esto es más seguro desde el punto de vista de la seguridad porque ayuda a evitar accesos no autorizados.

Errores imprevistos

La prevención de este tipo de riesgos empieza por planificar lo desconocido. Y eso implica ser capaz de detectar cualquier posible error del sistema cuando se produzca y tomar medidas para resolver el problema. Tienes que ser capaz de informar adecuadamente al usuario (sin revelar información crítica al atacante), registrar el evento y, si es necesario, emitir una alerta. 

He aquí un ejemplo de la revelación de un error de consulta SQL, junto con la ruta de instalación del sitio, que puede utilizarse para identificar un punto de inyección:

Advertencia: odbc_fetch_array() espera que el parámetro /1 sea un recurso, dado booleano en D:\app\index_new.php en la línea 188

Lo ideal sería que un sistema dispusiera de un gestor de excepciones global para detectar errores que se pasan por alto, junto con funciones como herramientas de supervisión u observabilidad, o una función que detecte errores repetidos o patrones que podrían indicar un ataque en curso. Esto puede ayudar a defenderse contra los ataques que pretenden aprovecharse de cualquier debilidad que la empresa pueda tener en el manejo de errores.

Para una aplicación web Java estándar, por ejemplo, se puede configurar un gestor de errores global a nivel del descriptor de despliegue web.xml -en este caso, una configuración utilizada a partir de la especificación Servlet versión 2.5 y superiores-.

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

ns="http://java.sun.com/xml/ns/javaee"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

version="3.0">
...
  <error-page>
     <exception-type>java.lang.Exception</exception-type>
     <location>/error.jsp</location>
</error-page>
...
</web-app>

Este pequeño bloque de código indica a una aplicación web Java qué hacer cuando algo va mal entre bastidores. En lugar de mostrar a los usuarios un mensaje de error confuso o una pantalla en blanco, detecta silenciosamente el problema y los envía a una página de error personalizada. En este caso, esa página sería error.jsp.

Debido a que está configurado para manejar los tipos generales de java.lang.Exception, actúa como un manejador de errores maestro para toda la aplicación. Eso significa que no importa dónde se produzca un error, los usuarios serán redirigidos a la misma página de error amigable y consistente en lugar de ver detalles técnicos en bruto.

Prevenir lo inesperado

Lo ideal sería que las organizaciones trabajaran para evitar, en la medida de lo posible, que se produzcan situaciones excepcionales. Implantar límites de velocidad, cuotas de recursos, estrangulamiento y otros límites puede ayudar contra los ataques de denegación de servicio y de fuerza bruta, por ejemplo. Es posible que desee identificar errores repetidos idénticos e incluirlos sólo como estadísticas, para que no interfieran con el registro y la supervisión automatizados. Un sistema también debería incluir:

Validación estricta de la entrada de datos, para garantizar que sólo se introducen en el flujo de trabajo datos correctamente formados y depurados. Debe realizarse al principio del flujo de datos, idealmente en cuanto se reciben los datos.

Mejores prácticas de gestión de errores, para detectar los errores justo donde se producen. Deben tratarse con eficacia: Diga claramente a los usuarios que deben mantener un registro y enviar alertas si es necesario. Un gestor de errores global también es ideal para detectar cualquier error que se haya pasado por alto. 

La seguridad general de las transacciones también es imprescindible. Siempre "a prueba de fallos": si algo va mal, deshaga toda la transacción. Y no intentes arreglar una transacción a medias: puede causar problemas mayores.

Registro, supervisión y alerta centralizados, junto con un gestor de excepciones global, que permite una investigación rápida de las incidencias y un proceso uniforme de gestión de los eventos, al tiempo que facilita el cumplimiento de los requisitos de conformidad.

Modelado de amenazas y/o revisión del diseño seguro, realizado en la fase de diseño de los proyectos.

Revisión del código o análisis estático, así como pruebas de estrés, rendimiento y penetración realizadas en el sistema final.

La gestión incorrecta de condiciones excepcionales puede ser una nueva categoría, pero implica algunos principios básicos de ciberseguridad y pone de relieve por qué las empresas deben estar preparadas para lo que no necesariamente están anticipando. Puede que no sepas qué forma tomarán las condiciones excepcionales, pero sabes que ocurrirán. La clave está en estar preparado para manejarlas todas de la misma manera, lo que facilitará la detección y respuesta a esas condiciones cuando surja lo inevitable. 

Nota para los usuarios deSCW Trust Score™ :

A medida que actualizamos el contenido de nuestra Learning Platform para alinearlo con el estándar OWASP Top 10 2025, es posible que observe pequeños ajustes en la puntuación de confianza de sus desarrolladores Full Stack. Póngase en contacto con su representante de Customer Success si tiene alguna pregunta o necesita ayuda.

Índice

Descargar PDF
Ver recurso
¿Quiere saber más?

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ónDescargar
Compartir en:
Centro de recursos

Recursos para empezar

Más entradas
Centro de recursos

Recursos para empezar

Más entradas