Tema 7 Flashcards

1
Q

¿Cómo se puede saber si una app es vulnerable a inyección?

A

La mejor manera de saber si una aplicación es vulnerable a inyección es verificar que todo uso de los intérpretes claramente separe datos no confiables del comando o consulta
– Para consultas SQL, esto significa utilizar variables parametrizadas en todas las consultas preparadas y procedimientos almacenados, como así también evitar consultas dinámicas

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Cómo se puede evitar la inyección?

A

– 1. La opción preferida es utilizar una API segura que evite el uso del
intérprete completamente o provea una interfaz parametrizada
– 2. Si una no se encuentra disponible API parametrizada,se debe eliminar los caracteres especiales utilizando una sintaxis de escape especial para dicho intérprete
– 3. Una validación positiva de entradas con una apropiada canonicalización está también recomendado, pero no es una defensa completa ya que muchas aplicaciones requieren caracteres especiales en sus entradas. OWASP’s ESAPI tiene una librería extensible de rutinas de validación de entradas para Java

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Cómo se sabe si hay vulnerabilidades para Pérdida de autenticación y gestión de sesiones?

A

– 1. ¿Están siempre las credenciales protegidas cuando se
almacenan utilizando un hash o cifrado? (Consulte el punto A7)
– 2. ¿Se pueden adivinar o sobrescribir las credenciales a través de funciones débiles de gestión de la cuenta (por ejemplo, registro de usuarios, cambiar contraseñas, recuperación de contraseñas, identificadores débiles de sesión)?
– 3. ¿Se muestran los identificadores de sesión en la dirección URL (por ejemplo, re-escritura de la dirección)?
– 4. ¿Son los identificadores de sesión vulnerables a ataques de
fijación de la sesión?
– 5. ¿Caducan las sesiones y pueden los usuarios cerrar sus sesiones?
– 6. ¿Se rotan los identificadores de sesiones después de una autenticación correcta?
– 7. ¿Se envían las contraseñas, identificadores de sesión y otras credenciales únicamente mediante conexiones TLS? (Consulte la sección A9)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Cómo se puede proteger de Pérdida de autenticación y gestión de sesiones?

A

– 1. Un único conjunto de controles de autenticación fuerte y gestión de
sesiones. Dichos controles deberán conseguir:
o a) Reunir todos los requisitos de gestión de sesiones y autenticación definidos en el Application Security Verification Standard (ASVS) de OWASP, secciones V2 (Autenticación) y V3(Gestión de sesiones)
o b) Tener un interfaz simple para los desarrolladores. Considerar ESAPI Authenticator y las APIs de usuario como buenos ejemplos a emular, utilizar o sobre los que partir
– 2. Se debe hacer especial hincapié en evitar vulnerabilidades de XSS que podrían ser utilizadas para robar identificadores de sesión.(Consulte el apartado A2)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué hay que cuidar en Cross-Site Scripting?

A

Es necesario asegurarse que todos los datos de entrada suministrados por el usuario enviados al navegador sean seguros (a través de validación de entradas) y que las entradas de usuario sean escapadas de manera apropiada antes de que sean incluidas en la página de salida
• Una apropiada codificación de salida asegura que los datos de entrada sean siempre tratados como texto en el navegador, en lugar de contenido activo que puede ser ejecutado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Cómo se puede proteger de Cross-Site Scripting?

A

– 1. La opción preferida es escapar todos los datos no confiables basados en el contexto HTML (cuerpo, atributo, JavaScript, CSS, o URL) donde los serán ubicados.
oLos desarrolladores necesitan incluir esta técnica en sus aplicaciones al menos que el framework de intefaz de usuario lo realice por ellos (véase la Hoja de Trucos de Prevención XSS para mayor información sobre técnicas de escape de datos)
– 2. Una validación de entradas positiva o whitelist con apropiada canonicalización y decodificación es también recomendable ya que ayuda a proteger contra XSS, pero no es una defensa completa ya que muchas aplicaciones requieren caracteres especiales en sus entradas
o Tal validación debería, tanto como sea posible, decodificar cualquier entrada codificada y luego validar la longitud, caracteres, formato, y cualquier regla de negocio en dichos datos antes de aceptar la entrada

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Cómo saber si mi app es vulnerable a Referencia directa insegura a objetos?

A

La mejor manera de poder comprobar si una aplicación es vulnerable a referencias inseguras a objetos es verificar que todas las referencias a objetos tienen las protecciones apropiadas

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Cómo proteger una app para Referencia directa insegura a objetos

A

– 1. Utilizar referencias indirectas por usuario o sesión:
o Esto evitaría que los atacantes accedieran directamente a recursos no autorizados
o Por ejemplo, en vez de utilizar la clave del recurso de base de datos, se podría utilizar una lista de 6 recursos que utilizase los números del 1 al 6 para indicar cuál es el valor elegido por el usuario.
» La aplicación tendría que realizar la correlación entre la referencia indirecta con la clave de la base de datos correspondiente en el servidor. ESAPI de OWASP incluye relaciones tanto secuenciales como aleatorias de referencias de acceso que los desarrolladores pueden utilizar para eliminar las referencias directas a objetos

– 2. Comprobar el acceso
– Cada uso de una referencia directa a un objeto de una fuente que no es de confianza debe incluir una comprobación de control de acceso para asegurar que el usuario está autorizado a acceder al objeto solicitado

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Cuáles son los principales peligros de Configuración de seguridad incorrecta?

A

– 1. ¿Tiene implementados procesos que permitan mantener actualizado el software de su organización?. Esto incluye el sistema operativo, los servidores web/aplicación, los sistemas DBMS, las aplicaciones y todas las bibliotecas de código
– 2. ¿Todo lo innecesario ha sido deshabilitado, eliminado o desinstalado (p.e. puertos, servicios, páginas, cuentas de usuario, privilegios)?
– 3. ¿Ha cambiado, o deshabilitado, las contraseñas de las cuentas predeterminadas?
– 4. ¿Ha configurado el sistema de gestión de errores para prevenir que se acceda de forma no autorizada a los mensajes de error?
– 5. ¿Se han comprendido y configurado de forma adecuada las características de seguridad de las bibliotecas y ambientes de desarrollo (p.e. Struts, Spring, SEAM, ASP.NET)?
– Se requiere un proceso concertado, repetible y replicable; para desarrollar y mantener una correcta configuración de seguridad de la aplicación

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

¿Qué se recomienda para evitar Configuración de seguridad incorrecta?

A

– 1. Un proceso repetible que permita configurar, rápida y fácilmente, entornos asegurados. Los entornos de desarrollo, pruebas y producción deben estar configurados de la misma forma. Este proceso debe ser automatizado para minimizar el esfuerzo requerido en la configuración de un nuevo entorno
– 2. Un proceso para mantener y desplegar todas actualizaciones y parches de software de manera oportuna. Este proceso debe seguirse en cada uno de los ambientes de trabajo. Es necesario que se incluya las actualizaciones de todas las bibliotecas de código
– 3. Una arquitectura robusta de la aplicación que provea una buena separación y seguridad entre los componentes
– 4. Considerar la realización periódica de exploraciones (scan) y auditorías para ayudar a detectar fallos en la configuración o parches faltantes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Qué aspectos facilitan la Exposición de datos sensibles?

A

– 1. ¿Se almacenan en texto claro a largo plazo, incluyendo sus respaldos?
– 2. ¿Se transmite en texto claro, interna o externamente. El tráfico por Internet es especialmente peligroso?
– 3. ¿Se utiliza algún algoritmo criptográfico débil/antiguo?
– 4. ¿Se generan claves criptográficas débiles, falta una adecuada rotación o
gestión de claves?
– 5. ¿Se utilizan tanto cabezales como directivas de seguridad del navegador cuando son enviados o provistos por él mismo?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Cómo se puede evitar la Exposición de datos sensibles?

A

– 1. Considere las amenazas de las cuáles protegerá los datos (ej: atacante interno, usuario externo), asegúrese de cifrar los datos sensibles almacenados o en tráfico de manera como manera de defenderse de estas amenazas
– 2. No almacene datos sensibles innecesariamente. Descártelos apenas sea posible. Datos que no se poseen no pueden ser robados
– 3. Asegúrese de aplicar algoritmos de cifrado fuertes y estándar, así como claves fuertes y gestiónelas de forma segura
– 4. Asegúrese que las claves se almacenan con un algoritmo especialmente diseñado para protegerlas
– 5. Deshabilite el autocompletar en los formularios que recolectan datos sensibles. Deshabilite también el cacheado de páginas que contengan datos sensibles

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Qué aspectos demuestran Ausencia de control de acceso a las funciones?

A

– 1. ¿La interfaz de usuario muestra la navegación hacia funcionalidades no
autorizadas?
– 2. ¿Existe autenticación del lado del servidor o se han perdido las comprobaciones de autorización?
– 3. ¿Los controles del lado del servidor se basan exclusivamente en la información proporcionada por el atacante?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Cómo se evita la Ausencia de control de acceso a las funciones?

A
    1. El proceso para gestión de accesos y permisos debería ser actualizable y auditable fácilmente. No lo implementes directamente en el código sin utilizar parametrizaciones
    1. La implementación del mecanismo debería negar todo acceso por defecto, requiriendo el establecimiento explícito de permisos a roles específicos para acceder a cada funcionalidad
    1. Si la funcionalidad forma parte de un workflow, verifica y asegúrate que las condiciones del flujo se encuentren en el estado apropiado para permitir el acceso
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Cómo se sabe si existe vulnerabilidad a Falsificación de peticiones en sitios cruzados (CSRF)?

A

• La forma más sencilla de revisar la vulnerabilidad en una aplicación es verificando si cada enlace, y formulario contiene un testigo (token) no predecible para cada usuario:
– Si no se tiene dicho testigo, los atacantes pueden falsificar peticiones. Se debe concentrar el análisis en enlaces y formularios que invoquen funciones que permitan cambiar estados
– Tales funciones son los objetivos más importantes que persiguen los ataques CSRF

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

¿Cómo se evita la Falsificación de peticiones en sitios cruzados (CSRF)?

A

– 1. La opción preferida es incluir el testigo en un campo oculto. Esto genera que el valor sea enviado en el cuerpo de la petición HTTP evitando su inclusión en la URL, lo cual está sujeto a una mayor exposición
– 2. El testigo único también puede ser incluido en la URL misma, o en un parámetro de la URL. Sin embargo, este enfoque presenta el riesgo que la URL sea expuesta a un atacante, y por lo tanto exponiendo al testigo

17
Q

¿Cómo se puede evitar el Uso de componentes con vulnerabilidades conocidas?

A

– 1. Identificar todos los componentes y la versión que están
utilizando, incluyendo dependencias
– 2. Revisar la seguridad del componente en bases de datos públicas, lista de correos del proyecto y listas de correo de seguridad, y mantenerlos actualizados
– 3. Establecer políticas de seguridad que regulen el uso de componentes como requerir ciertas prácticas en el desarrollo de software, pasar test de seguridad, y licencias aceptables
– 4. Sería apropiado, considerar agregar capas de seguridad alrededor del componente para deshabilitar funcionalidades no utilizadas y/o asegurar aspectos débiles o vulnerables del componente

18
Q

¿Qué facilita Redirecciones y reenvíos no validados?

A

– 1. Se revisa el código para detectar el uso de redirecciones o reenvíos (llamados transferencias en .NET). Para cada uso, identificar si la URL objetivo se incluye en el valor de algún parámetro. Si es así, verificar que el parámetro se comprueba para que contenga únicamente un destino, o un recurso de un destino, válido
– 2. Además, recorrer la aplicación para observar si genera cualquier redirección (códigos de respuesta HTTP 300-307, típicamente 302). Analizar los parámetros facilitados antes de la redirección para ver si parecen ser una URL de destino o un recurso de dicha URL. Si es así, modificar la URL de destino y observar si la aplicación redirige al nuevo destino
– 3. Si el código no está disponible se deben analizar todos los parámetros para ver si pudieran formar parte de una redirección o destino y modificarlos para comprobar su comportamiento

19
Q

¿Cómo se pueve evitar Redirecciones y reenvíos no validados?

A

– 1.Simplemente,evitandoelusoderedireccionesyreenvíos
– 2. Si se utiliza, no involucrar parámetros manipulables por el usuario para definir el destino. Generalmente, esto puede realizarse
– 3. Si los parámetros de destino no pueden evitarse, hay que asegurarse de que el valor facilitado es válido y autorizado para el usuario:
o Se recomienda que el valor de cualquier parámetro de destino sea un valor de mapeo, en lugar de la dirección, o parte de la dirección, de la URL y en el código del servidor traducir dicho valor a la dirección URL de destino
o Las aplicaciones pueden utilizar ESAPI para sobrescribir el método “sendRedirect()” y asegurarse de que todos los destinos redirigidos son seguros

• Como mínimo se debería aplicar lo siguiente:
– 1. Requerir SSL para todas las páginas sensibles. Las peticiones sin
SSL a estas páginas deben ser redirigidas a las páginas con SSL
– 2. Establecer el atributo «secure» en todas las cookies sensibles
– 3. Configurar el servidor SSL para que acepte únicamente algoritmos considerados fuertes (por ejemplo, que cumpla FIPS 140-2)
– 4. Verificar que el certificado sea válido, no se encuentre expirado o revocado y que se ajuste a todos los dominios utilizados por la aplicación
– 5. Conexiones a sistemas finales (back-end) y otros sistemas también deben utilizar SSL u otras tecnologías de cifrado