Este es el segundo artículo de una serie dirigida a la gestión de Seguridad de la Información para startups. En la primera publicación, vimos que una mala gestión puede ocasionar diversos riesgos al negocio y las consecuencias pueden ser graves, llegando incuso a impedir su continuidad.
la seguridad debe estar presente desde el principio, al diseñar los proyectos
Ya sea que se trate de un sitio web completo o solo del backend, las startups dependen especialmente de soluciones en línea, tanto para sostener sus negocios como para cumplir sus requisitos de escalabilidad.
Sin embargo, existen diversas amenazas relacionadas con este enfoque, que pueden provocar el lucro cesante de la empresa, daños en su reputación y otros inconvenientes.
El objetivo de este artículo es mostrar cómo los ciberdelincuentes explotan todas las vulnerabilidades, desde explotaciones directas (por ejemplo: inyección SQL) hasta formas organizadas (por ejemplo: exploit kit), también en las startups.
Amenazas de Internet
No se puede escribir sobre la seguridad de las aplicaciones web sin citar a la lista OWASP Top 10, que incluye las 10 principales fallas de seguridad web. También describe cómo evitar y corregir las fallas, además de poner a disposición algunas herramientas open source para permitir el análisis.
De esta forma, la OWASP Top 10 se destaca como una importante fuente de información de seguridad y como una guía para probar aplicaciones web.
La lista es divulgada por OWASP Foundation luego de una recopilación de estadísticas de vulnerabilidades web de la industria. La última publicación tuvo lugar en 2013 y ahora se está planificando una nueva entre 2016 y 2017.
OWASP Top 10
Las 10 principales fallas de seguridad, de acuerdo con el informe de OWASP Top 10 de 2013, se presentan en el siguiente gráfico:
En base a este informe, vamos a comentar sobre dos amenazas que debe enfrentar una aplicación cuando se la expone en Internet: la inyección SQL y los exploit kits.
SQL Injection: robo de datos, acceso no autorizado y comando remoto
En la parte superior de la lista se encuentra la inyección de código malicioso en sitios web, responsable de buena parte de los incidentes relacionados con el robo de datos. Sin embargo, también se puede explotar esta falla para obtener acceso privilegiado a sistemas o incluso ejecutar comandos remotos en el servidor de base de datos.
A pesar de que existen otras formas de inyección, la más común y notoria es SQL Injection (SQLi), utilizada para inyectar comandos SQL en variables de URL que se procesarán, para ejecutar ese comando en la base de datos de la aplicación. De este modo, si se realiza con éxito, el adversario obtiene la capacidad de ejecutar remotamente comandos en la base de datos.
Dependiendo de cómo se encuentre la configuración de esta base de datos, es posible que el usuario, que ahora puede ser controlado por el atacante, tenga permisos suficientes en las tablas y en las bases de datos para realizar comandos como DUMP y DROP.
No prestar atención a este tipo de ataque puede causar riesgos de exposición de datos (por ejemplo: DUMP) o downtimes (por ejemplo: DROP), que pueden ser muy perjudiciales para las operaciones e imagen de la startup en el mercado.
A pesar de contar con casi dos décadas de existencia, SQLi es una forma de ataque que continúa siendo bastante predominante hoy en día. De acuerdo con el informe IBM X-Force Threat Intelligence de 2016, SQLi es responsable del 4,1% de todos los ciberataques.
Este ataque es tan común que, irónicamente, hasta MySQL.com ya fue su víctima. De la misma manera, otras muchas ya tienen un lugar ganado en el SQLi Hall-of-Shame.
Exploit kits: una industria del delito informático
Una amenaza muy común, sobre todo en Brasil, es el uso de exploit kits por parte de los ciberdelincuentes para ejecutar exploits en la computadora del usuario, con el objeto de cumplir algún fin malicioso (hablaremos mejor sobre estos fines maliciosos en el próximo artículo de la serie). Ni bien el usuario accede al sitio malicioso, el navegador realiza la descarga de un malware en su equipo y lo ejecuta de forma silenciosa. Es lo que usualmente se llama drive-by download.
Para atraer víctimas a sus sitios maliciosos, los ciberdelincuentes explotan con frecuencia vulnerabilidades en sitios legítimos con el fin de inyectar pequeñas páginas o scripts que redirigen el navegador de la víctima hacia el sitio malicioso, usurpando de esta manera la reputación del sitio legítimo para propagar ataques.
A veces, simplemente realizan la carga del malware en el sitio legítimo y luego realizan campañas de phishing, con enlaces que redirigen las víctimas hacia la URL recién creada en el sitio legítimo.
En ambos casos, estos delincuentes explotan fallas de seguridad para incluir contenidos maliciosos en el sitio legítimo, ya sea accediendo a páginas administrativas expuestas en Internet [A2, en el esquema anterior], por el uso inseguro de FTP para la administración de contenido del sitio [A5], por la explotación de vulnerabilidades de la infraestructura o aplicación [A9] o por otras fallas enumeradas en OWASP Top 10.
Las consecuencias negativas que puede tener una startup cuando se inyectan códigos maliciosos en su sitio comienzan cuando su dominio se agrega en listas negras de sitios maliciosos. A partir de ese momento, los visitantes que hacen uso de soluciones de seguridad basadas en esas listas negras comenzarán a encontrar mensajes de aviso sobre contenido malicioso en el sitio web y, según cómo esté configurado el filtro de contenido, no podrán acceder al mismo.
De esta forma, no solo se ve afectada la credibilidad de la marca, sino que también es posible que haya un impacto financiero directo, tanto en los negocios como en el e-commerce. Dado el impacto potencial de esta amenaza, el propio Chrome posee de forma predeterminada este tipo de protección, que se aplica al 48,64% del market share de los navegadores.
¿Cómo combatir las amenazas? Seguridad por diseño y buenas práticas
Uno de los principales requisitos para que una startup tenga éxito es la escalabilidad. Por lo tanto, la seguridad debe estar presente desde el principio.
La seguridad por diseño (o seguridad por proyecto) tiene como objeto construir aplicaciones que sean inherentemente seguras a partir de un enfoque bottom-up. De este modo, al incluir nuevas funcionalidades en la aplicación, se heredan diversas propiedades de seguridad de los módulos e infraestructura que brindan soporte a esa nueva funcionalidad.
Los principios de arquitectura de software, tales como modularidad, separación de conceptos (segregation of concerns) y concepto de crosscutting (crossecutting concern), deben tenerse en cuenta al momento de diseñar la solución de seguridad de la aplicación. Con este enfoque, la aplicación tendrá una línea base de seguridad bien definida, además de mayor escalabilidad, agilidad y facilidad de mantenimiento.
No obstante, la seguridad por diseño por sí sola no es suficiente para garantizar la inviabilidad de la aplicación. Es necesario conocer las principales amenazas de la Web (por ejemplo: OWASP Top 10) y adoptar buenas prácticas de seguridad durante la implementación de la aplicación, probando su seguridad a través de la visión de un atacante al final de cada ciclo de desarrollo.