Blog B-SECURE

Herramientas y principios para la seguridad de aplicaciones ¿Qué funciona y que...no tanto?

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.

  • Gobierno del desarrollo de aplicaciones:

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ónMuchas 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.

 

Tendencias 2022

  • Ciclo de vida de desarrollo de aplicaciones:

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:

  • SAST (Static application security testing): las herramientas de prueba de seguridad de aplicaciones estáticas analizan pasivamente el código fuente o el código binario de una aplicación en busca de vulnerabilidades conocidas. 
  • DAST (Dynamic application security testing): las herramientas dinámicas de pruebas de seguridad ayudan a las personas a probar y analizar una aplicación en ejecución en busca de comportamientos que indiquen posibles vulnerabilidades. 
  • RASP (Runtime application self-protection): las herramientas de autoprotección están integradas en la aplicación durante su ejecución, por lo que la aplicación puede monitorearse a sí misma para evitar ataques en tiempo real. Esta es una categoría relativamente nueva de herramientas diseñadas para mejorar la seguridad de las aplicaciones.
  • SCA (Software composition analysis): las herramientas de análisis de composición de software ayudan a identificar componentes de terceros que pueden contener vulnerabilidades. Las vulnerabilidades pueden ser introducidas a lo largo de la cadena de suministro del software, y las herramientas SCA lo ayudan a evaluar y monitorear todos sus componentes. 

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:

  • Las herramientas por sí solas no lo salvarán. Hay prerrequisitos fundamentales (por ejemplo, tiene un SDLC maduro), prerequisitos organizacionales (por ejemplo, su administración acepta financiar, respaldar y requerir seguridad de aplicaciones) y prerequisitos de habilidades (por ejemplo, sus desarrolladores reciben capacitación sobre seguridad, no solo capacitación en herramientas). Si es débil en cualquiera de estas áreas, asegúrese de mejorar su estrategia. 
  • Necesita un conjunto de herramientas. Cada tipo de herramienta (SAST, DAST, etc.) identifica ciertos tipos de vulnerabilidades. Aunque habrá cierta superposición, necesita múltiples herramientas para encontrar el superconjunto de posibles vulnerabilidades. Luego puede correlacionar y priorizar los hallazgos, y complementar los hallazgos de cada herramienta con revisiones de códigos manuales expertos. 
  • Seguridad antes y después. No desea confiar su aplicación debidamente protegida a una plataforma vulnerable; ni debe esperar que una plataforma correctamente asegurada proteja a su aplicación de su propio código inseguro. Necesita seguridad desde el momento de creación y protección adicional una vez finalizado el desarrollo.  
  • Aproveche sus proveedores. Los proveedores de seguridad de aplicaciones son expertos en la materia, no solo expertos en herramientas. Considérelos una extensión de su equipo. Apóyese en ellos para ayudarlo a desarrollar su competencia organizacional en general.

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. 

 

Información tomada de:
Rostick Paul. (2017). TechTarget: Security for applications: What tools and principles work?. http://searchsecurity.techtarget.com/feature/Security-for-applications-What-tools-and-principles-work