La seguridad de la aplicación abarca las medidas tomadas a lo largo del ciclo de vida del código para evitar lagunas en la política de seguridad de una aplicación o el sistema subyacente a través de fallas en el diseño, desarrollo, implementación, actualización o mantenimiento o base de datos de la aplicación. Las aplicaciones solo controlan el tipo de recursos que se les otorgan, y no qué recursos se les otorgan, ellas, a su vez, determinan el uso de estos recursos por parte de los usuarios de la aplicación a través de la seguridad de la aplicación.
Si revisara y analizara los principales problemas de seguridad en muchas aplicaciones web, vería un patrón de problemas. Al organizar estos problemas en categorías, puede abordarlos sistemáticamente. Estas áreas problemáticas son las categorías de vulnerabilidad de su aplicación.
Categorías de vulnerabilidad de aplicación
- Ingeniería de software: ¿cómo podría Snapchat haber evitado la fuga de datos a través de una arquitectura o diseño de aplicaciones más seguro?
- ¿La tecnología SGX de Intel (o similar) es la próxima gran novedad en computación segura?
- ¿Cuáles son algunos problemas de seguridad relacionados con la seguridad del sistema operativo?
- ¿Estamos haciendo lo suficiente para fortalecer la ciberseguridad?
- ¿Cuál es el estado actual del arte en la investigación de malware?
¿Qué mejor manera de medir la seguridad de un sistema que evaluar sus puntos débiles potenciales? Para medir la resistencia de seguridad de su aplicación, puede evaluar las categorías de vulnerabilidad de la aplicación. Cuando hace esto, puede crear perfiles de seguridad de aplicaciones y luego usar estos perfiles para determinar la fortaleza de seguridad de una aplicación.
Estas categorías se utilizan como marco en toda esta guía. Debido a que las categorías representan las áreas donde los errores de seguridad se cometen con mayor frecuencia, se utilizan para ilustrar la orientación para los desarrolladores y arquitectos de aplicaciones. Las categorías también se utilizan como marco de referencia cuando se evalúa la seguridad de una aplicación web. Con estas categorías, puede concentrarse constantemente en el diseño clave y las opciones de implementación que más afectan la seguridad de su aplicación. Las categorías de vulnerabilidad de la aplicación se describen a continuación.
Validación de entrada
¿Cómo sabe que la entrada que recibe su solicitud es válida y segura? La validación de entrada se refiere a cómo su aplicación filtra, elimina o rechaza la entrada antes del procesamiento adicional.
Autenticación
“¿Quién eres tú?” La autenticación es el proceso en el que una entidad prueba la identidad de otra entidad, generalmente a través de credenciales, como un nombre de usuario y contraseña.
Autorización
“¿Qué puedes hacer?” La autorización es cómo su aplicación proporciona controles de acceso para recursos y operaciones.
Gestión de la configuración
¿A quién se ejecuta su aplicación? ¿A qué bases de datos se conecta? ¿Cómo se administra su solicitud? ¿Cómo se aseguran estas configuraciones? La gestión de la configuración se refiere a cómo su aplicación maneja estos problemas operativos.
Informacion delicada
Los datos confidenciales se refieren a cómo su aplicación maneja los datos que deben protegerse en la memoria, a través del cable o en almacenes persistentes.
Manejo de sesiones
Una sesión se refiere a una serie de interacciones relacionadas entre un usuario y su aplicación web. La administración de sesiones se refiere a cómo su aplicación maneja y protege estas interacciones.
Criptografía
¿Cómo guardas secretos, secretos (confidencialidad)? ¿Cómo está manipulando sus datos o bibliotecas (integridad)? ¿Cómo proporciona semillas para valores aleatorios que deben ser criptográficamente fuertes? La criptografía se refiere a cómo su aplicación hace cumplir la confidencialidad y la integridad.
Manipulación de parámetros
Los campos de formulario, los argumentos de cadena de consulta y los valores de cookies se usan con frecuencia como parámetros para su aplicación. La manipulación de parámetros se refiere tanto a cómo su aplicación protege la alteración de estos valores como a cómo su aplicación procesa los parámetros de entrada.
Gestión de excepciones
Cuando falla una llamada de método en su aplicación, ¿qué hace su aplicación? ¿Cuánto revelas? ¿Devuelve información amigable de error a los usuarios finales? ¿Le devuelve valiosa información de excepción a la persona que llama? ¿Su aplicación falla con gracia?
Auditoría y registro
¿Quién hizo qué y cuándo? La auditoría y el registro se refieren a cómo su aplicación registra eventos relacionados con la seguridad.
Principios de seguridad
Las recomendaciones utilizadas en esta guía se basan en principios de seguridad que han demostrado su eficacia a lo largo del tiempo. La seguridad, como muchos aspectos de la ingeniería de software, se presta a un enfoque basado en principios, donde los principios básicos se pueden aplicar independientemente de la tecnología de implementación o el escenario de aplicación. Los principales principios de seguridad utilizados en esta guía se resumen a continuación.
Compartimentar
Reduce la superficie de ataque. Pregúntese cómo contendrá un problema. Si un atacante se hace cargo de su aplicación, ¿a qué recursos puede acceder? ¿Puede un atacante acceder a los recursos de la red? ¿Cómo estás restringiendo el daño potencial? Los firewalls, las cuentas menos privilegiadas y el código menos privilegiado son ejemplos de compartimentación.
Use el menor privilegio
Al ejecutar procesos usando cuentas con privilegios mínimos y derechos de acceso, usted reduce significativamente las capacidades de un atacante si el atacante logra comprometer la seguridad y ejecutar el código.
Aplicar defensa en profundidad
Usa múltiples guardianes para mantener a raya a los atacantes. La defensa en profundidad significa que no confía en una sola capa de seguridad, o considera que una de sus capas puede ser ignorada o comprometida.
No confíes en la entrada del usuario
La entrada de usuario de su aplicación es el arma principal del atacante cuando apunta a su aplicación. Suponga que todas las entradas son maliciosas hasta que se demuestre lo contrario, y aplique una estrategia de defensa en profundidad para la validación de entradas, tomando precauciones particulares para asegurarse de que la entrada se valida cada vez que se cruza un límite de confianza en su aplicación.
Revisa en la puerta
Autentique y autorice a las personas que llaman temprano, en la primera puerta.
Fallar de forma segura
Si una aplicación falla, no deje accesibles los datos confidenciales. Devuelve errores amigables a los usuarios finales que no exponen detalles internos del sistema. No incluya detalles que puedan ayudar a un atacante a explotar vulnerabilidades en su aplicación.
Asegure el eslabón más débil
¿Existe una vulnerabilidad en la capa de red que un atacante puede explotar? ¿Qué hay del anfitrión? ¿Es segura su aplicación? Cualquier eslabón débil en la cadena es una oportunidad para la seguridad violada.
Crear valores predeterminados seguros
¿La cuenta predeterminada está configurada con el menor privilegio? ¿La cuenta predeterminada está deshabilitada de manera predeterminada y luego explícitamente habilitada cuando es necesario? ¿La configuración utiliza una contraseña en texto sin formato? Cuando se produce un error, ¿se filtra información confidencial al cliente para ser utilizada potencialmente contra el sistema?
Reduce tu superficie de ataque
Si no lo usa, elimínelo o desactívelo. Reduzca el área de superficie de ataque deshabilitando o eliminando servicios, protocolos y funcionalidades no utilizados. ¿Su servidor necesita todos esos servicios y puertos? ¿Su aplicación necesita todas esas características?
Un número cada vez mayor de ataques apunta a su aplicación. Pasan directamente a través de la puerta principal de su entorno mediante HTTP. El modelo de fortaleza convencional y la dependencia del firewall y las defensas del host no son suficientes cuando se usan de forma aislada. Asegurar su aplicación implica aplicar seguridad en tres capas: la capa de red, la capa de host y la capa de aplicación. Una red segura y una infraestructura de plataforma de host es imprescindible. Además, sus aplicaciones deben diseñarse y construirse utilizando pautas de diseño y desarrollo seguras siguiendo principios de seguridad obsoletos. Avani Technology Solutions Inc es un proveedor líder de soluciones de seguridad de TI.