Monday, February 25, 2019

Pruebas de seguridad para minimizar amenazas en aplicaciones

Para la mayoría de las compañías, el momento de realizar o contratar pruebas de seguridad de la información asociados al análisis de aplicaciones (DAST) y/o evaluación de código (SAST) es cuando se produce un incidente de seguridad; esto se debe a que en la mayoría de casos no existe un apoyo técnico entre las áreas de seguridad y el equipo de desarrollo durante las fases del ciclo de vida del desarrollo de software (SDLC).
En la academia, generalmente  las materias de programación están enfocadas en el desarrollo funcional y poco se tienen en cuenta los aspectos de seguridad en el ciclo de vida del desarrollo,  este problema es evidenciado con frecuencia en entornos productivos. ¿Alguna vez se han preocupado en revisar si el desarrollo realizado puede comprometer los datos de la compañía, sus clientes o empleados?
De acuerdo con el reporte “Web Application Vulnerability 2019” de Acunetix, las vulnerabilidades en las aplicaciones web se convierten en amenazas críticas para una compañía.
De un escaneo realizado sobre 10.000 sitios web se encontró que el 46% de estos contienen vulnerabilidades de severidad alta y el 87% contienen vulnerabilidades de severidad media.
A continuación se ilustra los tipos de vulnerabilidad encontrados en la categoría de severidad alta:
Fuente: Acunetix
Por esta razón y preocupados por la seguridad en las aplicaciones web, a continuación, mencionamos puntos básicos o controles de seguridad que deberían estar implementados junto con las pruebas de software ya conocidas en la industria (unitarias, integración, funcionales, rendimiento):
1. Validación de datos de entrada y salida:
La incorrecta validación de datos es la principal causa de las vulnerabilidades en aplicaciones web (OWASP Top 10 2017-A1). Todas las entradas de datos en las aplicaciones deben ser inspeccionadas, el objetivo de estas pruebas es conocer si existe un punto de entrada para la ejecución de ataques como XSS, inyección SQL, direccionamiento abierto y manipulación de parámetros.
2. Identificación, autenticación y control de acceso
Falencias en la configuración del proceso de autenticación y gestión de sesión permite a un atacante comprometer usuarios, contraseñas o explotar fallas de implementación para asumir otra identidad.
En este punto se recomienda revisar el cumplimiento de la política de contraseña segura, el uso del doble factor de autenticación (si se requiere) y el acceso a cada uno de las opciones de la aplicación con y sin autorización.
Más información:
3. Métodos de Cifrado
El objetivo es proteger información confidencial o sensible, por lo cual, se debe identificar la necesidad de proteger los datos en tránsito y almacenamiento.
• ¿Hay datos que se transmiten en texto claro?
• ¿Se utiliza un algoritmo criptográfico obsoleto o débil?
• ¿Es necesario que todos los datos sensibles sean almacenados? ¿Están cifrados?
4. Uso de componentes externos
Todas las aplicaciones y servicios web que utilizan componentes externos (API, librerías, entre otros) heredan las vulnerabilidades que pueda tener dicho componente. Por esta razón, se recomienda verificar que estos componentes se carguen de fuentes confiables y que cuente con mecanismos de verificación de integridad.
5. Aseguramiento de bases de datos
Para que exista un correcta administración de la base de datos, en términos seguridad, se debe mantener la integridad evitando datos duplicados, faltantes, alterados o incorrectos, para ello se debe contar con:
• Triggers (disparadores) y procedimientos almacenados
• Gestión de perfiles y acceso de usuarios
• Consultas parametrizadas
• Validación de datos y caracteres nulos
6. Protección de datos personales y sensibles
Los datos personales hace referencia a toda aquella información asociada a una persona y que permite su identificación.
Se debe verificar el acceso a la aplicación y que el dueño de la información sea el único que pueda ver, actualizar y/o eliminar sus propios datos.
Conclusiones:
• La implementación de pruebas de seguridad desde la fase del desarrollo, aseguran que el producto final resulte seguro para los clientes y gran parte de los costos se reducen al evitar múltiples ciclos de pruebas y parches.
• Para la ejecución de las pruebas se requieren de conocimientos en seguridad por esta razón, se recomienda contar con el apoyo de un profesional en el tema.
Glosario: