Hay dos formas de mejorar la seguridad de las aplicaciones: puede diseñar la seguridad mediante el uso de métodos de programación seguros, o puede protegerlas desde afuera mediante la superposición de capas de seguridad. ¿Cual enfoque debería usar? Ambos.
¿Qué es la seguridad de aplicaciones?
De acuerdo al portal whatis.com, el concepto Seguridad de aplicaciones se refiere al uso de software, hardware, y procedimientos para proteger las aplicaciones de amenazas externas.
Si el objetivo de la seguridad de aplicaciones es crear aplicaciones seguras, entonces ¿qué es una aplicación segura?. Es aquella que, se ha comprobado, es resistente a amenazas. Y ¿cómo se comprueba? Probándola.
¿Cómo funciona la seguridad de aplicaciones?
Antes de analizar los detalles de las pruebas de seguridad de aplicaciones, debemos dar un paso atrás y observar el panorama general. La seguridad efectiva para las aplicaciones aborda requisitos relacionados con tres dominios principales. Veamos cada uno de estos.
Comenzamos suponiendo que su organización ya cuenta con una metodología y un proceso de desarrollo de aplicaciones maduros. Si no, su base es débil y será difícil construir y mantener un programa exitoso. Si necesita fortalecer la metodología de su organización, tal vez la necesidad de una mejor seguridad para las aplicaciones lo ayude a construir un caso de negocios para ambos.
La gerencia debe ser conocedora de la seguridad y consciente de los importantes riesgos para los ingresos y la reputación que implica el aumento de las ciberamenazas y deben estar dispuestos a financiar una iniciativa de seguridad de aplicaciones, que incluya personal, capacitación y herramientas. Si los directivos no están convencidos del valor que otorga la seguridad de aplicaciones, el esfuerzo será en vano.
Asimismo deben respaldar el plan para integrar las prácticas de seguridad en todo el ciclo de vida del desarrollo de software (SDLC, por sus siglas en inglés), desde el desarrollo, pasando por las pruebas y producción. Muchas de las prácticas existentes deberán evolucionar, lo que puede crear desafíos organizacionales. La autoridad de la gerencia es necesaria para superar la inercia cultural y proporcionar orientación y arbitraje cuando surgen conflictos.
La gerencia debe hacer responsable a la organización por la creación de aplicaciones seguras y por tanto establecer un protocolo de auditoría para que pueda monitorear, medir e informar la efectividad de las prácticas de seguridad de aplicaciones, e identificar las lecciones aprendidas para mejorar continuamente la práctica.
Como se mencionó anteriormente, se obtiene una aplicación segura diseñando la seguridad al interior de esta y protegiéndola desde afuera. Si comienza con una revisión de los diversos tipos de herramientas utilizadas para construir la seguridad, verá que múltiples proporcionan un enfoque integral.
La herramienta más importante es una persona: un desarrollador con conciencia de seguridad, debidamente capacitado, altamente calificado y experimentado. Hay tres razones para esto:
1. La forma más efectiva de eliminar las vulnerabilidades es no introducirlas en primer lugar, y esto requiere que los desarrolladores entiendan y sigan las prácticas de codificación segura en todo el SDLC.
2. En segundo lugar, las herramientas descubrirán una combinación de vulnerabilidades altamente probables, sospechosas y potenciales de criticidad variable, junto con algunos falsos positivos. Distintas herramientas encuentran conjuntos diferentes de vulnerabilidades. Un analista entrenado debe correlacionar y evaluar estos hallazgos.
3. Ninguna combinación de herramientas encontrará todas las vulnerabilidades, por lo que debe complementarlas con auditorías de código manual. Esto significa tener un ojo experimentado que revise el código de los elementos que las herramientas podrían haber omitido.
Abundan las herramientas no humanas. Aquí hay un resumen de aquellas que debe tener en cuenta y considerar, dependiendo de la situación de su empresa:
Aplicar parches, corregir código vulnerable, también es crucial. No existe tal cosa como una aplicación perfectamente segura, y las vulnerabilidades son inevitables. Cuando se descubren nuevas vulnerabilidades, debe remediarlas de manera proactiva y parcharlas lo más rápido posible. Del mismo modo que los automóviles son intrínsecamente reparables, sus aplicaciones deben ser intrínsecamente parcheables.
Ejecución de aplicaciones:
También necesita alojar su aplicación dentro de un entorno seguro. Primero, considere los firewalls de aplicaciones. Hay tres tipos que debe conocer: Firewall de aplicaciones de red, host application firewall y firewall de aplicaciones web. Aunque funcionan en diferentes contextos, la idea básica detrás de cada uno es la misma: examinar la comunicación de aplicaciones, los flujos de datos, y hacer cumplir las reglas para bloquear tipos comunes de ataques.
El host hardening viene después. Debe eliminar los servicios y protocolos innecesarios e inseguros. Los sistemas operativos como Windows son de uso general. Debe configurarlos para un propósito específico, por ejemplo, un servidor web o un servidor de correo. La mayoría de las organizaciones simplifican la creación de servidores mediante el uso de una imagen base de sistema operativo. Sin embargo, esta puede contener servicios y protocolos que su aplicación no requiere. Tenga cuidado: los servicios y protocolos innecesarios aumentan la superficie de ataque de su aplicación.
Los sistemas operativos también son compatibles con versiones anteriores, para que puede ejecutar aplicaciones nuevas y legacy. Sin embargo, es probable que los servicios y protocolos legacy sean inseguros; ellos también aumentarán tu superficie de ataque.
Considere también la protección avanzada de punto final. El antivirus tradicional basado en firmas ya no es efectivo; debería buscar herramientas avanzadas de protección de endpoints de próxima generación que usen detección y protección basada en comportamiento e inteligencia artificial (AI).
En términos de protección de red, debe tomar medidas para mitigar los ataques distribuidos de denegación de servicio (DDoS). Si aloja una aplicación en línea, los ataques DDoS son una gran amenaza que puede acabar con su aplicación, o incluso su negocio. La protección de DDos es compleja y requiere una enorme arquitectura escalable, por lo que es mejor ponerse en contacto con proveedores establecidos que ofrecen entornos de alojamiento resistentes a DDoS.
Después de haber hecho todo lo posible para diseñar la seguridad al interior y proteger desde afuera, es hora de poner todos sus esfuerzos a la prueba definitiva: una prueba de penetración.
Una prueba de penetración, o pentest, es un ataque autorizado a su aplicación, incluida la red, la plataforma de alojamiento y la aplicación en sí. Una prueba de penetración exhaustiva pondrá a prueba todas las medidas de seguridad que actualmente protegen su aplicación; desde las prácticas de codificación seguras "internas" hasta las medidas de hardening "externas". Cuando su aplicación pase el pentest, tendrá una aplicación comprobadamente segura.
Lo mejor es contratar un tercero, profesional en la realización de pruebas de penetración, pues es una actividad altamente especializada y es deseable contar con una evaluación independiente de sus medidas de seguridad.
No es un secreto que, se pueden eliminar las vulnerabilidades de forma implacable y endurecer meticulosamente todas sus tecnologías de seguridad, pero no puede construir un campo de fuerza impenetrable alrededor de su aplicación.
Para que sea útil y funcional, su aplicación debe interactuar con el mundo y, por lo tanto, siempre estará expuesta a amenazas. Entonces, algún día, alguien quebrantará sus defensas.
Por esto debe estar preparado y organizar su entorno para detectar indicadores de compromiso. Usted debe preguntarse ¿Es un dispositivo sospechoso? ¿Un archivo misterioso? ¿Una credencial robada? Debe evaluar la situación y, si es un ataque real, responder rápidamente para contener y expulsar al atacante. Después de eso, debe remediar cualquier daño a su aplicación y devolverla a un estado totalmente funcional y seguro.
Para lograrlo eficientemente, usted necesitará una combinación de herramientas, como SIEM y distintas herramientas o servicios de respuesta a incidentes.
¿Qué características debería buscar?
Herramientas y servicios. La mayoría de los proveedores más grandes ofrecen herramientas y servicios, e incluso ofrecen sus herramientas como servicios. Debe considerar las ventajas de un modelo de servicios. Deje que el proveedor administre las herramientas, y así usted puede concentrarse en la seguridad de las aplicaciones. Sin embargo, algunas organizaciones tienen inversiones significativas en la administración local de SDLC, por lo que pueden preferir la integración de las herramientas de seguridad de la aplicación en su entorno existente.
Orquestación. En este contexto, la orquestación es la coordinación automatizada de personas, procesos, datos y flujos de trabajo a través de múltiples herramientas. Usar herramientas heterogéneas en su SDLC puede ser un desafío y requerir procedimientos manuales y puntos de control.
Plataformas emergentes. Dependiendo de la estrategia comercial de su organización, puede necesitar ampliar el alcance de las prácticas de seguridad de su aplicación para incluir dispositivos móviles, nube, IoT, Big Data e incluso inteligencia artificial. Afortunadamente, los proveedores de seguridad de aplicaciones están incorporando estas plataformas en sus suites.
Para resumir, los siguientes pasos lo ayudarán a obtener seguridad para las aplicaciones:
Para desarrollar su propia estrategia de seguridad de aplicaciones, tenga en cuenta todo lo mencionado anteriormente, combine diferentes técnicas y no permita que cibercriminales quebranten sus aplicaciones.