08.-Análisis de los códigos de error
Cuando una aplicación web no maneja correctamente los errores, puede revelar información sensible a los usuarios. Los mensajes de error pueden exponer detalles internos de la aplicación, como:
- Tecnologías y frameworks utilizados.
- Estructura de bases de datos (nombres de tablas y campos).
- Detalles sobre errores internos del servidor.
Los atacantes pueden utilizar esta información para diseñar ataques más dirigidos y efectivos contra la aplicación.
Códigos de Error HTTP¶
El estándar HTTP define códigos de estado que indican el resultado de una petición. Algunos de estos códigos pueden proporcionar información no deseada a un atacante:
- Errores del Cliente (4xx)
400 Bad Request
: La solicitud tiene un formato incorrecto.403 Forbidden
: El acceso al recurso está denegado.404 Not Found
: El recurso solicitado no existe.- Errores del Servidor (5xx)
500 Internal Server Error
: Error genérico del servidor.502 Bad Gateway
: Problemas en el servidor intermedio.503 Service Unavailable
: El servidor está temporalmente inactivo.
Información Expuesta en el Cuerpo del Mensaje de Error¶
Además del código de estado HTTP, el cuerpo de la respuesta puede contener detalles técnicos sobre el error:
Ejemplo 1: Error de Base de Datos¶
ERROR: syntax error at or near "admin"
LINE 1: SELECT * FROM users WHERE username = 'admin'
📌 Riesgo: Expone estructura y nombres de tablas de la base de datos, facilitando ataques de inyección SQL.
Ejemplo 2: Información del Servidor¶
Apache/2.4.41 (Ubuntu) Server at ejemplo.com Port 80
📌 Riesgo: Un atacante puede utilizar esta información para buscar vulnerabilidades conocidas en la versión del servidor.
Prevención¶
🔹 Manejo seguro de errores
- Configurar respuestas de error
genéricas
para los usuarios:
- ❌
ERROR: syntax error at or near "admin"
- ✅
Ocurrió un error. Inténtelo más tarde.
🔹 No exponer detalles del servidor
- Desactivar mensajes de error detallados en producción.
- Configurar el servidor para ocultar información del software (
ServerTokens Prod
en Apache,server_tokens off;
en Nginx).
Autoevaluación¶
Pregunta: ¿Cuál de las siguientes actividades es considerada una vulnerabilidad de cliente?
✅ Cross-Site Scripting Reflejado (Correcto) ❌ Inyección SQL (Ataque al servidor). ❌ Ejecución remota de código (Ataque al servidor). ❌ Vulnerabilidades IDOR (Ataque a la autorización).
📌 Explicación: XSS reflejado afecta al navegador del usuario, permitiendo la ejecución de scripts maliciosos. Las demás opciones afectan al servidor o al sistema de autorización.
Conclusión¶
El manejo incorrecto de errores puede proporcionar información valiosa a los atacantes. Configurar respuestas de error seguras y ocultar información del servidor ayuda a proteger la aplicación contra ataques dirigidos.