S08 - Evaluación de seguridad de sistemas de información

Contenido

Este servicio se ejecuta siguiendo el proceso publicado en el catálogo de servicios estándar según el modelo de calidad de la Agencia.

 

Se puede consultar en el siguiente enlace: S08 - Evaluación de seguridad de sistemas de información

Para esta Oficina de Calidad, el servicio tiene como alcance la verificación de aplicaciones web (53 verificaciones), la verificación de servicios web (15 verificaciones) y la verificación de aplicaciones móviles (68 verificaciones). Estas verificaciones están alineadas con las medidas de seguridad del ENS, pudiéndose consultar las correspondencias en el apartado "Documentación".

Las vulnerabilidades están asociadas al CVSS* siguiendo las pautas establecidas en "https://www.incibe-cert.es/blog/cvss3-0" a través del formulario "https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator" en su versión 3.0 conforme a ellas, se puede ver la siguiente correlación entre Puntuación y Severidad.

*Nota: el valor de CVSS que se muestra en la descripción del servicio es orientativo. El CVSS final puede cambiar dependiendo de la gravedad de la situación a la que la vulnerabilidad expone a la aplicación.

 

A continuación, se detallan cada una de estas verificaciones para evaluar el Servicio en aplicaciones web:

IdentificadorDescripciónSeveridadCVSS
SEG-01La aplicación tiene una robustez suficiente contra ataques de fuerza bruta o de diccionario.Media6.0
SEG-02Existe un control en la aplicación para evitar el acceso tras un tiempo inactivo.Media5.7
SEG-03La desconexión de la sesión debe ser controlada desde la aplicación tras un tiempo de inactividad.Baja3.8
SEG-04La aplicación tiene implementado funcionalidad para salir de la misma y evitar robo de identidad.Media5.9
SEG-05Identificación de escenarios de denegación de servicio por bloqueo de cuentas de usuarios tras un número determinado de intentos de acceso fallidos.Baja3.9
SEG-06La aplicación controla la reflexión inmediata y los ataques almacenados. Protegiendo de la inyección del tipo "Cross-Site Scripting".Alta7.7
SEG-07La inyección SQL es evitada por la aplicación.Alta7.9
SEG-08La inyección LDAP es evitada por la aplicación.Alta7.0
SEG-09La inyección XML es evitada por la aplicación.Media5.6
SEG-10Verificar que la aplicación no permite inyección de comandos en el sistema operativo.Media6.5
SEG-11El espacio de claves utilizados debe ser suficiente grande para prevenir ataques de fuerza bruta.Alta7.1
SEG-12Verificar que la aplicación genera automáticamente contraseñas de autenticación fuertes.Media5.7
SEG-13Verificar que en la operación de cambio de contraseña se solicita el valor antiguo del mismo.Media5.7
SEG-14Los algoritmos de cifrado deben cumplir con la normativa de seguridad.Alta7.1
SEG-15Comprobar que los datos sensibles se almacenan en el sistema encriptados.Media5.5
SEG-16Comprobar que la información sensible es tratada sin cifrar solo en las ocasiones en la que es imprescindible desencriptarla.Baja3.8
SEG-17Verificar que no existe una protección insuficiente en la capa de transporte que revele datos críticos, como contraseñas.Alta8.0
SEG-18No deben mostrarse parámetros en la URL.Baja3.8
SEG-19No deben mostrarse en la URL parámetros cuyo nombre pueda indicar la información que contienen.Baja3.8
SEG-20Las referencias cruzadas de páginas no deben contener información de direcciones IP físicas.Baja3.8
SEG-21Comprobar que no se pueden realizar ataques por fijación de sesión, ni se revela el o los parámetros que identifican la sesión en la URL.Alta7.8
SEG-22Comprobar que el o los parámetros que identifican la sesión no se generan mediante algoritmos predecibles.Media5.7
SEG-23Verificar que no existe un inapropiado manejo de la información y de errores que puedan ayudar a aumentar el riesgo de otras vulnerabilidades.Media4.3
SEG-24Verificar que no se utilizan cuentas y usuarios predeterminados o predecibles.Baja3.9
SEG-25Verificar que no es posible realizar escalado de privilegios.Alta7.6
SEG-26Verificar que se registra los accesos de los usuarios al sistema.Baja3.8
SEG-27Comprobar que no se puede realizar una ejecución maliciosa de archivos en el lado del servidor pudiéndose perder el control total sobre la máquina.Alta7.1
SEG-28Comprobar que no existen referencias a objetos inseguras, ni que se pueden realizar ataques por transversal path.Alta7.1
SEG-29Verificar que las peticiones más críticas de la aplicación no son susceptibles de ataques CSRF (Cross-site request forgery).Alta7.6
SEG-30Verificar que no se pueden realizar ataques de manipulación de "proxys" o "caches" (por ejemplo mediante http response splitting).Media5.7
SEG-31Verificar que no existen fallos a la hora de restringir el acceso a las URLs.Media4.6
SEG-32Verificar que no se puede acceder a la información mediante protocolos con niveles de seguridad diferentes (por ejemplo http y https).Media5.7
SEG-33Verificar que no es posible acceder sin permisos a los ficheros de configuración del entorno web.Media4.4
SEG-34Verificar que no se almacenan archivos obsoletos en directorios de la aplicación dentro del servidor de aplicaciones.Baja2.8
SEG-35Verificar que los documentos publicados no contienen metadatos relevantes.Baja3.8
SEG-36Verificar que no se utilizan campos HTML ocultos que almacenan información sensible sin establecer mecanismos de seguridad.Media4.0
SEG-37Verificar el uso del doble factor de autenticación en la aplicaciónAlta7.0
SEG-38Verificar que no es posible evitar los controles de seguridad que evalúan si el usuario no es un proceso automático (captcha, etc).Baja3.7
SEG-39Verificar que existen controles de seguridad efectivos que evitan ataques por desbordamiento de buffers.Baja2.7
SEG-40Verificación de las vulnerabilidades públicas existentes para los productos utilizados o integrados en la aplicación.**
SEG-41Verificación de vulnerabilidades especificas del aplicativo auditado, como puede ser por ejemplo en un servicio de webmail, no poder enviar mensajes suplantando la identidad de otro usuario.**
SEG-42Verificar el uso correcto de métodos HTTP para el envío de información entre el cliente y el servidorMedia6.3
SEG-43Verificar el uso del atributo "autocomplete" en el campo de contraseña de la aplicación.Baja3.8
SEG-44Comprobar que existe un tiempo de expiración para las cookies de autenticaciónMedia4.1
SEG-45Comprobar que existe un manejo adecuado de roles y permisos en la aplicaciónAlta7.5
SEG-46Comprobar que existe un manejo adecuado de los atributos de las cookies de sesiónMedia6.4
SEG-47Verificar el cierre de todas las sesiones abiertas al cambiar la contraseñaBaja3.9
SEG-48La inyección HTTP es evitada por la aplicaciónMedia5.0
SEG-49Comprobar que la aplicación rechaza cualquier dato inesperado (Inyección de código)Alta7.5
SEG-50Autentificar y autorizar al usuario antes de cargar o descargar cualquier archivoBaja3.6
SEG-51Comprobar que no es posible renombrar archivos dentro de la aplicaciónMedia5.0
SEG-52Comprobar que existe un tiempo de expiración para las transaccionesBaja3.9
SEG-53Utilización de la información almacenada en la caché.Media4.6

*NOTA: SEG-40: El mapeo no se ha podido llevar a cabo, debido a que el mapeo depende de las vulnerabilidades conocidas de los productos o componentes empleados por el sistema.

*NOTA: SEG-41: Este mapeo no se ha podido realizar porque depende de las vulnerabilidades específicas del sistema auditado.

A continuación, se detallan cada una de estas verificaciones para evaluar el Servicio en Servicios web:

IdentificadorDescripciónSeveridadCVSS
SEG-01El servicio web tiene una robustez suficiente contra ataques de fuerza bruta o de diccionario.Alta6
SEG-02El servicio web tiene implementado una petición específica para cerrar la sesión y evitar robo de identidad.Media4.6
SEG-03Existe un control en el servicio web para evitar el envío de peticiones tras un tiempo inactivo.Media4.6
SEG-04Verificar en el servicio web que no existe un inapropiado manejo de la información y de errores que puedan ayudar a aumentar el riesgo de otras vulnerabilidades.Baja3.2
SEG-05Verificar en el servicio web que no se produce un comportamiento inesperado al realizar peticiones con elementos duplicados.Media5.2
SEG-06Verificar en el servicio web que no se produce un comportamiento inesperado al omitir elementos en las peticiones.Media5.2
SEG-07Verificar en el servicio web que no se produce un comportamiento inesperado al realizar peticiones con elementos mal formados.Media5.2
SEG-08Verificar en el servicio web que no se produce un comportamiento inesperado al sobrecargar los elementos en las peticiones.Media5.2
SEG-09La inyección XPath es evitada por el servicio web.Alta5.3
SEG-10La inyección SQL es evitada por el servicio web.Alta7.6
SEG-11Verificar en el servicio web que no se produce un comportamiento inesperado al realizar peticiones con inyección de valores aleatorios en los campos.Baja3.2
SEG-12Verificar en los servicios web que no es posible obtener información útil del sistema al violar la restricción de tipos de datos.Media4.6
SEG-13Verificar en los servicios web que no es posible obtener información útil del sistema al violar los valores límites de los campos.Media5.2
SEG-14Los servicios web controlan la reflexión inmediata y los ataques almacenados. Protegiendo de la inyección del tipo "Cross-Site Scripting".Alta7.4
SEG-15Verificación de vulnerabilidades especificas del aplicativo auditado, como puede ser por ejemplo en un servicio de webmail, no poder enviar mensajes suplantando la identidad de otro usuario.N/AN/A

En la metodología definida para la auditoría de seguridad de aplicaciones móviles, los test se basan en el estándar establecido por OWASP para este tipo de aplicaciones y que incluyen las siguientes verificaciones (61 pautas, incluidas en el Top TEN de OWASP para aplicaciones móviles, revisión 2016):

A continuación, se detallan cada una de estas verificaciones para evaluar el Servicio en aplicaciones móviles:

  • M1 - Uso inapropiado de la Plataforma
  • M2 - Almacenamiento de Datos Inseguro
  • M3 - Comunicación Insegura
  • M4 - Autenticación Insegura
  • M5 - Criptografía Insuficiente
  • M6 - Autorización Insegura
  • M7 - Calidad del Código en el Cliente
  • M8 - Manipulación de Código
  • M9 - Ingeniería Inversa
  • M10 - Funcionalidades Extrañas

1. Interacción con la plataforma (M1 - Uso inapropiado de la Plataforma)

IdentificadorDescripciónSeveridadCVSS
SEG-1.1Verificar que la aplicación solo requiera el conjunto mínimo de permisos necesarios.Alta7.4
SEG-1.2Verificar que todas las entradas de fuentes externas y el usuario estén validados y, si es necesario, desinfectados. Esto incluye datos recibidos a través de la interfaz de usuario, mecanismos de IPC como intentos, URLs personalizadas y fuentes de red.Media6.4
SEG-1.3Verificar que la aplicación no exporta funcionalidad sensible a través de esquemas de URL personalizados, a menos que estos mecanismos estén protegidos adecuadamente.Baja3.1
SEG-1.4Verificar que la aplicación no exporta funcionalidad sensible a través de las instalaciones de IPC, a menos que estos mecanismos estén protegidos adecuadamente.Media6.0
SEG-1.5Verificar que JavaScript esté deshabilitado en WebViews a menos que se requiera explícitamente.Media5.3
SEG-1.6Verificar que las WebViews estén configuradas para permitir sólo el conjunto mínimo de handlers de protocolos necesarios (idealmente, solo https).  Los handlers potencialmente peligrosos, como archivo, teléfono y aplicación-id, están deshabilitados.Baja3.1
SEG-1.7Si los métodos nativos de la aplicación están expuestos a la WebView, verificar que la WebView sólo presente JavaScript dentro del paquete de la aplicación.Baja3.5
SEG-1.8Verificar que la serialización de objetos, si la hay, se implementa utilizando las API seguras de serialización.Media4.2

 

2. Almacenamiento de datos y privacidad (M2 - Almacenamiento de Datos Inseguro)
IdentificadorDescripciónSeveridadCVSS
SEG-2.1Verificar que las instalaciones de almacenamiento de credenciales del sistema se utilicen de forma adecuada para almacenar datos confidenciales, como credenciales de usuario o claves criptográficas.Media5.3
SEG-2.2Verificar que no se escriban datos confidenciales en los registros de la aplicación (logs).Media4.2
SEG-2.3Verificar que no se compartan datos confidenciales con terceros a menos que sea una parte necesaria de la arquitectura.Baja2.6
SEG-2.4Verificar que la memoria caché del teclado esté desactivada en las entradas de texto que procesan datos confidenciales.Media6.8
SEG-2.5Verificar que el portapapeles esté desactivado en los campos de texto que pueden contener datos confidenciales.Baja2.4
SEG-2.6Verificar que no haya datos sensibles expuestos a través de los mecanismos de IPC.Media4.9
SEG-2.7Verificar que no se muestren datos confidenciales, como contraseñas y números de tarjetas de crédito, a través de la interfaz del usuario o que se filtren capturas de pantalla.Media4.6
SEG-2.8Verificar que no se incluyan datos confidenciales en las copias de seguridad.Media5.7
SEG-2.9Verificar que la aplicación elimine los datos confidenciales de las vistas cuando están en segundo plano.Baja2.4
SEG-2.10Verificar que la aplicación no contenga datos confidenciales en la memoria más tiempo de lo necesario y que la memoria se borra explícitamente después de su uso.Media4.7
SEG-2.11Verificar que la aplicación aplique una política mínima de seguridad de acceso al dispositivo, como solicitar al usuario que establezca un código de acceso del dispositivo.Baja3.8
SEG-2.12Verificar que la aplicación eduque al usuario sobre los tipos de información de identificación personal procesada, así como sobre las mejores prácticas de seguridad que el usuario debe seguir para usar la aplicación.Baja1.6

 

3. Comunicación de red (M3 - Comunicación Insegura)
IdentificadorDescripciónSeveridadCVSS
SEG-3.1Verificar que los datos estén encriptados en la red usando TLS. El canal seguro se usa de manera consistente en toda la aplicación.Alta7.5
SEG-3.2Verificar que la configuración de TLS esté en línea con las mejores prácticas actuales, en la medida en que sean compatibles con el sistema operativo móvil.Media5.9
SEG-3.3Verificar que la aplicación comprueba el certificado X.509 del punto extremo remoto cuando se establezca el canal seguro. Sólo se aceptan certificados firmados por una CA válida.Alta8.5
SEG-3.4Verificar que la aplicación utiliza su propio almacén de certificados o fija el endpoint o la clave pública y, posteriormente, no establece conexiones con los puntos finales que ofrecen un certificado o clave diferente, incluso si está firmado por una CA confiable.Baja3.7
SEG-3.5Verificar que la aplicación no dependa de un solo canal de comunicación inseguro (correo electrónico o SMS) para operaciones críticas, como inscripciones y recuperación de cuentas.Alta7.1
SEG-3.6Verificar que la aplicación solo dependa de bibliotecas actualizadas de conectividad y seguridad.Media6.5

 

4. Autenticación y administración de sesiones (M4 - Autenticación Insegura y M6 -Autorización Insegura)
IdentificadorDescripciónSeveridadCVSS
SEG-4.1Verificar que si la aplicación proporciona a los usuarios acceso a un servicio remoto, se realiza una forma de autenticación aceptable, como la autenticación de nombre de usuario / contraseña en el endpoint remoto.Alta8.1
SEG-4.2Verifique que el punto extremo remoto use identificadores de sesión generados aleatoriamente, si se usa la administración clásica de sesiones del lado del servidor, para autenticar las solicitudes del cliente sin enviar las credenciales del usuario.Media5.6
SEG-4.3Verifique que el punto extremo remoto utilice tokens firmados del lado del servidor, si se utiliza la autenticación sin estado, para autenticar las solicitudes del cliente sin enviar las credenciales del usuario.Alta7.3
SEG-4.4Verificar que el punto extremo remoto finaliza la sesión existente cuando el usuario cierra la sesión.Media6.6
SEG-4.5Verificar que exista una política de contraseñas y se aplique en el punto final remoto.Media5.6
SEG-4.6Verificar que el punto extremo remoto implemente un retroceso exponencial o que bloquee temporalmente la cuenta de usuario cuando se envían credenciales de autenticación incorrectas una cantidad excesiva de veces.Alta7.3
SEG-4.7Verificar que las sesiones finalicen en el punto final remoto después de un período de inactividad predefinido.  Media4.1
SEG-4.8Verificar que la autenticación biométrica, si la hay, no está unida a un evento (es decir, que utiliza una API que simplemente devuelve "true" o "false"). En cambio, se basa en desbloquear el llavero / almacén de claves. Media5.0
SEG-4.9Verificar que exista un segundo factor de autenticación en el punto extremo remoto y que el requisito 2FA se aplique de manera coherente.Media4.2
SEG-4.10
Verificar que se requiera autenticación incremental para habilitar acciones que se ocupen de datos o transacciones confidenciales.
Media6.2
SEG-4.11Verificar que la aplicación informe al usuario de todas las actividades de inicio de sesión con su cuenta. Los usuarios pueden ver una lista de los dispositivos utilizados para acceder a la cuenta y bloquear dispositivos específicos.N/AN/A

 

5. Criptografía (M5 - Criptografía Insuficiente)
IdentificadorDescripciónSeveridadCVSS
SEG-5.1Verificar que la aplicación no dependa de la criptografía simétrica con claves codificadas como único método de encriptación.Media4.6
SEG-5.2Verificar que la aplicación utiliza implementaciones comprobadas de primitivas criptográficas.Media5.9
SEG-5.3Verificar que la aplicación utiliza primitivas criptográficas que son apropiadas para el caso de uso particular, configuradas con parámetros que se adhieren a las mejores prácticas de la industria.Media5.9
SEG-5.4Verificar que la aplicación no utiliza protocolos criptográficos o algoritmos que, en general, se consideran obsoletos por motivos de seguridad.Media5.9
SEG-5.5Verificar que la aplicación no vuelva a utilizar la misma clave criptográfica para múltiples propósitos.Baja3.1
SEG-5.6Verificar que todos los valores aleatorios se generen utilizando un generador de números aleatorios suficientemente seguro.Baja3.7

 

6. Calidad del código y configuraciones de compilación (M7 - Calidad de código en el Cliente)
IdentificadorDescripciónSeveridadCVSS
SEG-6.1Verificar que la aplicación esté firmada y provista con un certificado válido.Alta7.5
SEG-6.2Verificar que la aplicación se haya creado en modo de lanzamiento, con las configuraciones apropiadas para una compilación de lanzamiento (p. Ej., non-debuggable).Media4.3
SEG-6.3Verificar que los símbolos de depuración se hayan eliminado de los binarios nativos.N/AN/A
SEG-6.4Verificar que se haya eliminado el código de depuración y que la aplicación no registre errores detallados ni mensajes de depuración.Baja2.4
SEG-6.5Verificar que todos los componentes de terceros usados por la aplicación, como librerías y frameworks, estén identificados y verificados para detectar vulnerabilidades conocidas.N/AN/A
SEG-6.6Verificar que la aplicación capte y maneje posibles excepciones.Baja3.7
SEG-6.7Verificar que la lógica de manejo de errores en los controles de seguridad niega el acceso por defecto.Baja3.7
SEG-6.8Verificar que en el código no administrado, la memoria se asigna, libera y usa de forma segura.Baja1.8
SEG-6.9Verificar que las funciones de seguridad gratuitas que ofrece la cadena de herramientas, como byte-code minification, stack protection, PIE support y el conteo automático de referencias, estén activadas.Alta7.5

 

7. Impedir el análisis dinámico y la manipulación (M8 - Manipulación de Código y M9 - Ingeniería Inversa)
IdentificadorDescripciónSeveridadCVSS

SEG-7.1

Verificar que la aplicación implemente dos o más métodos funcionalmente independientes de detección de root y responda a la presencia de un dispositivo rooteado ya sea alertando al usuario o finalizando la aplicación.Baja3.7
SEG-7.2La ofuscación es aplicada a las defensas programáticas, lo que a su vez impide la des-ofuscación mediante el análisis dinámico.Baja3.9

 

8. Arquitectura, diseño y modelado de amenazas (M10 - Funcionalidades extrañas)
IdentificadorDescripciónSeveridadCVSS
SEG-8.1Verificar que todos los componentes de la aplicación estén identificados y se sepa que son necesarios.N/AN/A
SEG-8.2Verificar que los controles de seguridad nunca se apliquen solo en el lado del cliente, sino en los respectivos enpdpoints remotos.N/AN/A
SEG-8.3Verificar que se haya definido una arquitectura de alto nivel para la aplicación móvil y todos los servicios remotos conectados y que la seguridad se haya abordado en esa arquitectura.N/AN/A
SEG-8.4Verificar que los datos considerados sensibles en el contexto de la aplicación móvil estén claramente identificados.N/AN/A
SEG-8.5Verificar que todos los componentes de la aplicación estén definidos en términos de las funciones de negocio y / o funciones de seguridad que proporcionan.N/AN/A
SEG-8.6Verificar que existe un mecanismo para aplicar las actualizaciones de la aplicación móvil.N/AN/A
SEG-8.7Verificar que las pruebas de seguridad se realicen como parte del ciclo de vida de desarrollo.N/AN/A
Índice