Auditoría de código de una aplicación con la herramienta de HP Fortify
Transformando MéxicoEnsayo6 de Enero de 2020
3.073 Palabras (13 Páginas)1.043 Visitas
Trabajo: Auditoría de código de una aplicación con la herramienta de HP Fortify
Materia: Seguridad en el software
Nombre Alumno: Victor Andres Frias Benitez
Nombre Maestra: Rosa Barba Varela
UNIR México[pic 1]
Fecha: 26 de agosto de 2019
Contenido
Vulnerabilidades 3
1. Contraseña codificada 4
= Explicación del código = 4
= Grafica = 5
= Posible solución = 5
2. Configuración incorrecta de Spring Boot: Actuator Endpoint Security Disabled 6
= Explicación del código = 6
= Grafica = 7
= Posible solución = 7
3. Manipulación de encabezado: SMTP 7
= Explicación del código = 7
= Grafica = 8
= Posible solución = 9
4. Evaluación dinámica de código: deserialización insegura 9
= Explicación del código = 9
= Grafica = 10
= Posible solución = 10
5. Gestión de claves: clave de cifrado codificada 11
= Explicación del código = 11
= Grafica = 12
= Posible solución = 12
6. Gestión de contraseñas: contraseña vacía 12
= Explicación del código = 12
= Grafica = 13
= Posible solución = 14
7. Credenciales de una tienda Android WebView 14
= Explicación del código = 14
= Grafica = 15
= Posible solución = 15
8. Conectarse a una base de datos con una contraseña vacía. 15
= Explicación del código = 15
= Grafica = 16
= Posible solución = 16
9. Usuario y contraseña codificados para configurar la autenticación 16
= Explicación del código = 17
= Grafica = 17
= Posible solución = 17
10. Almacenamiento de cache 18
= Explicación del código = 18
= Grafica = 18
= Posible solución = 18
Vulnerabilidades
En esta sección se describirán las vulnerabilidades críticas que fueron escaneadas con la herramienta HP Fortify SCA la cual es la encargada de reducir los riesgos del software identificando las vulnerabilidades de seguridad que representan las mayores amenazas para su organización. Determina la causa raíz de la vulnerabilidad, correlaciona y prioriza los resultados y proporciona prácticas recomendadas para que los desarrolladores puedan crear el código de una forma más segura.
Contraseña codificada
Las contraseñas codificadas pueden comprometer la seguridad del sistema de una manera que no se puede remediar fácilmente.
= Explicación del código =
Este código se ejecutará con éxito, pero cualquiera que tenga acceso a él tendrá acceso a la contraseña. Después de que el programa se haya enviado, es probable que no haya forma de cambiar el usuario de la base de datos "scott" con una contraseña de "tigre" a menos que el programa esté parcheado. Un empleado con acceso a esta información puede usarla para ingresar al sistema. Peor aún, si los atacantes tienen acceso al código de bytes de la aplicación, pueden usar el comando javap -c para acceder al código desensamblado, que contendrá los valores de las contraseñas utilizadas. El resultado de esta operación podría ser similar al siguiente para el ejemplo anterior:
javap -c ConnMngr.class
22: ldc #36; //String jdbc:mysql://ixne.com/rxsql
24: ldc #38; //String scott
26: ldc #17; //String tiger
En el entorno móvil, la administración de contraseñas es especialmente importante dado que existe un nivel tan alto posibilidad de pérdida de dispositivo.
= Grafica = [pic 2]
= Posible solución =
Las contraseñas nunca deben estar codificadas y generalmente deben ofuscarse y administrarse en una fuente externa. El almacenamiento de contraseñas en texto sin formato en cualquier parte del sistema permite a cualquier persona con permisos suficientes leer y potencialmente usar mal la contraseña. Como mínimo, las contraseñas se deben cifrar antes de almacenarlas.
Algunos productos de terceros reclaman la capacidad de administrar contraseñas de una manera más segura. Por ejemplo, WebSphere Application Server 4.x utiliza un algoritmo de cifrado XOR simple para ofuscar valores, pero sea escéptico acerca de tales facilidades. WebSphere y otros servidores de aplicaciones ofrecen mecanismos de cifrado obsoletos y relativamente débiles que son insuficientes para entornos sensibles a la seguridad. Hoy, la mejor opción para una solución genérica segura es crear un mecanismo propietario usted mismo.
Para Android, así como cualquier otra plataforma que use la base de datos SQLite, SQLCipher es una buena alternativa. SQLCipher es una extensión de la base de datos SQLite que proporciona un cifrado AES transparente de 256 bits de los archivos de la base de datos. Por lo tanto, las credenciales se pueden almacenar en una base de datos cifrada.
Configuración incorrecta de Spring Boot: Actuator Endpoint Security Disabled
La aplicación Spring Boot utiliza puntos finales de Actuator que no requieren autenticación.
= Explicación del código =
Las aplicaciones Spring Boot se pueden configurar para implementar Actuadores, que son puntos finales REST que permiten a los usuarios monitorear diferentes aspectos de la aplicación. Hay diferentes actuadores integrados que pueden exponer datos confidenciales y están etiquetados como "confidenciales". De manera predeterminada, todos los puntos finales HTTP confidenciales están protegidos de modo que solo los usuarios que tengan un rol ACTUADOR puedan acceder a ellos.
Esta aplicación está desactivando el requisito de autenticación para puntos finales sensibles:
endpoints.health.sensitive=false
O un Actuador personalizado se configura como no sensible:
@Component
public class CustomEndpoint implements Endpoint> {
public String getId() {
return "customEndpoint";
}
public boolean isEnabled() {
return true;
}
public boolean isSensitive() {
return false;
}
public List%lt;String> invoke() {
// Custom logic to build the output
...
}
}
}
= Grafica =
[pic 3]
= Posible solución =
Todos los puntos finales que exponen información u operaciones confidenciales deben protegerse con los niveles correctos de autenticación y autorización. Siempre es una buena práctica requerir autenticación incluso para servidores internos como un mecanismo de seguridad en profundidad. Tenga en cuenta que incluso en el caso de que la aplicación se implemente internamente, detrás de un cortafuegos, un atacante aún puede llegar a ella utilizando una vulnerabilidad de falsificación de solicitudes del lado del servidor que se encuentra en una aplicación diferente.
...