Los ciberataques están aumentando, especialmente entre las pequeñas y medianas empresas. Un informe puso de manifiesto que el 70 % de las empresas de menor tamaño han sufrido un ataque.
Un gran número de pequeñas y medianas empresas no están preparadas para el aumento de las amenazas a la seguridad. De hecho, el 45 % de estas empresas afirman no disponer de medidas de seguridad suficientes para prevenir los ciberataques. En este artículo se analiza uno de los puntos débiles más comunes: las superficies de ataque en las aplicaciones de software.
Las pequeñas y medianas empresas pueden localizar los posibles puntos débiles y aplicar un programa de gestión de la superficie de ataque para reducir la vulnerabilidad y mejorar la ciberseguridad. En última instancia, la implantación de un plan de gestión de la superficie de ataque protege los datos confidenciales de los clientes y otros recursos valiosos frente a los ciberataques.
Superficie de ataque de una aplicación de software
Una superficie de ataque es la suma de todas las posibles exposiciones a riesgos de seguridad en el entorno de software de una organización. Dicho de otro modo, es el conjunto de todas las vulnerabilidades posibles (conocidas y desconocidas) y los controles de todos los componentes de hardware, software y de red.
Las superficies de ataque se clasifican normalmente en tres tipos básicos:
- Superficie de ataque digital. La superficie de ataque digital abarca todo el entorno de red y software de una organización. Puede incluir aplicaciones, código, puertos y otros puntos de entrada y salida.
- Superficie de ataque física. Las superficies de ataque físicas incluyen todos los dispositivos endpoint de una organización, como son los sistemas de sobremesa, portátiles, dispositivos móviles y puertos USB.
- Superficie de ataque de ingeniería social. Los ataques de ingeniería social se aprovechan de las vulnerabilidades de los usuarios humanos. Los tipos más comunes de ataques contra las organizaciones incluyen phishing selectivo, pretexting y otras técnicas de manipulación utilizadas para engañar a las personas con el fin de que proporcionen acceso a información confidencial.
Aunque las organizaciones deben ser conscientes de todas las vulnerabilidades posibles, aquí nos centramos en la superficie de ataque de las aplicaciones de software. Esto se refiere a todas las posibles funciones de cualquier código en un entorno de software al que puede acceder un usuario no autenticado o un fragmento de malware.
Identificación de la superficie de ataque de una aplicación
Para identificar la superficie de ataque de una aplicación de software es necesario trazar todas las funciones que necesitan ser revisadas y probadas en busca de vulnerabilidades. Esto significa prestar atención a todos los puntos de entrada y salida en el código fuente de la aplicación. Cuanto mayor sea la superficie de ataque de una aplicación de software, más fácil le resultará a un ciberdelincuente o a un fragmento de malware acceder y ejecutar código en un equipo atacado.
Implementación de la gestión de la superficie de ataque
La gestión de la superficie de ataque en aplicaciones de software tiene por objeto detectar los puntos débiles de un sistema y reducir el número de vulnerabilidades aprovechables. El objetivo del análisis de la superficie de ataque es que los desarrolladores y especialistas en seguridad conozcan todas las áreas de riesgo de una aplicación. La concienciación es el primer paso para encontrar formas de reducir el riesgo.
En última instancia, las empresas pueden utilizar el análisis de la superficie de ataque para implantar lo que se conoce como seguridad Zero Trust mediante conceptos básicos como la segmentación de red y estrategias similares.
Superficies de ataque principales
Las superficies de ataque fluctúan constantemente a medida que una empresa añade nuevos componentes, como sitios web, aplicaciones móviles y en la nube, hosts, etc. Sin embargo, por lo general los tipos de vulnerabilidad siguen siendo los mismos.
Localización de las vulnerabilidades de software
La creación de un modelo de superficie de ataque es uno de los primeros pasos para mejorar la ciberseguridad. De este modo, se pondrán de manifiesto los puntos más vulnerables de una aplicación de software concreta, que variarán considerablemente de una empresa a otra.
Presta atención a estas vulnerabilidades habituales del software:
- Problemas de control de acceso. El control de acceso es complicado cuando los empleados tienen distintos medios para acceder al sistema (en la oficina y en remoto, por ejemplo). A menudo, los desarrolladores de software acaban insertando reglas en múltiples ubicaciones del código, errores que pueden quedar al descubierto y aprovecharse fácilmente. Atacar las vulnerabilidades del control de acceso puede permitir a los hackers cambiar o eliminar contenidos o incluso hacerse con la administración del sitio.
- Fallos de inyección. Los fallos de inyección incluyen llamadas al sistema operativo y llamadas a bases de datos backend a través de SQL. Los fallos de inyección ocurren con frecuencia a través de campos de entrada que se comunican con bases de datos y directorios. A menudo, estos campos carecen de filtro de entrada, lo que los hace vulnerables a los ataques.
- Problemas de autenticación. Cuando las funciones de las aplicaciones relacionadas con la gestión de sesiones y la autenticación se implementan de forma incorrecta, los ciberdelincuentes pueden obtener acceso a un sistema con los mismos permisos que los usuarios atacados. A continuación, pueden comprometer claves, contraseñas, etc.
- Problemas con entidades externas XML. Una configuración deficiente de los analizadores XML que procesan entradas XML que contienen referencias a entidades externas puede dar lugar a problemas como la exposición de información confidencial y la denegación de servicio (DoS).
- API personalizadas. Las API añaden vulnerabilidad a través de una autenticación de usuario defectuosa, una autorización a nivel de objeto deficiente, una exposición excesiva de datos y otra serie de problemas.
- Formularios web. Añadir formularios web proporciona más formas de enviar datos directamente al servidor. Una amenaza común a los formularios web son los ataques de scripts entre sitios (XSS), en los que un ciberdelincuente consigue que un script malicioso se ejecute en el navegador de un usuario. Otro son los ataques de falsificación de solicitudes entre sitios, en los que los ciberdelincuentes engañan a un usuario para que envíe una solicitud de forma no deseada.
- Compatibilidad con versiones anteriores. Cuantas más versiones existan de un programa, más fácil será introducir vulnerabilidades.
Identificación de las principales superficies de ataque habituales
Por lo general, las superficies de ataque habituales más importantes en las aplicaciones de software son los puntos de entrada y salida remotos. Estos puntos de alto riesgo incluyen interfaces con sistemas externos e Internet, especialmente cuando el sistema permite el acceso anónimo:
- Números de sistema autónomo (ASN)
- Dirección IP y bloques de IP
- Certificados SSL y atribución
- Registros de WHOIS, contactos e historial
- Puertos TCP/IP
- Nube pública y privada
- Dominios y subdominios
- Servicios de servidor web como correo electrónico y bases de datos
Comparación entre superficies de ataque y vectores de ataque
Para lograr una adecuada inteligencia sobre amenazas, es necesario conocer la diferencia entre superficie de ataque y vectores de ataque. De este modo, las empresas pueden crear un plan de gestión de la superficie de ataque para protegerse de los ciberataques.
Definición de vectores de ataque
Los vectores de ataque son todos aquellos métodos por los que usuarios no autorizados pueden acceder a los datos. La correcta aplicación de vectores de ataque por parte de un atacante puede dar lugar a una brecha de datos o algo peor.
Los vectores de ataque pueden agruparse en dos tipos diferentes: ataques pasivos y ataques activos.
Los vectores de ataque pasivos son vías que se aprovechan para obtener acceso al sistema sin afectar a los recursos del mismo. Incluyen técnicas de escucha como la captura de sesiones, el análisis de puertos o el análisis del tráfico.
Los vectores de ataque activos son vías que se aprovechan y afectan al funcionamiento de un sistema. Incluyen ransomware, ataques de phishing y ataque de denegación de servicio distribuido (DDoS).
Distinción entre superficie de ataque y vectores de ataque
Dicho de forma sencilla, la superficie de ataque es el conjunto de todos los puntos que un atacante podría aprovechar en una aplicación o, de forma más amplia, en un sistema. Un vector de ataque es el método por el cual un atacante aprovecha uno de estos puntos individuales.
El mapeo de una superficie de ataque proporciona una completa visión de todos los posibles puntos débiles de una aplicación de software. El análisis de los vectores de ataque individuales proporciona al equipo de seguridad información sobre lo que hay que arreglar o reforzar.
Identificación de superficies y vectores de ataque
La superficie de ataque digital está constituida por dos tipos de recursos: factores conocidos y factores desconocidos. Los factores conocidos son aquellos recursos que los desarrolladores conocen y monitorizan. Entre ellos se encuentran los subdominios y los procesos generales de seguridad.
Los factores desconocidos, también llamados recursos shadow IT, son aplicaciones y dispositivos no autorizados conectados a la red de una organización. Pueden incluir dispositivos físicos (como smartphones y tablets de los usuarios), aplicaciones de mensajería, almacenamiento en la nube y aplicaciones de eficiencia en el lugar de trabajo. Dado que estos recursos no han sido incorporados ni examinados formalmente por los departamentos de TI, quedan fuera del radar de seguridad de los desarrolladores, lo que deja los sistemas en situación de vulnerabilidad.
La gestión de la superficie de ataque es importante para que las empresas descubran todos los factores de la superficie de ataque, tanto conocidos como desconocidos.
Gestionar superficies de ataque físicas y digitales
Para reducir una superficie de ataque, primero hay que saber cuál es. Un análisis de una superficie de ataque revelará todos los factores conocidos y desconocidos que constituyen las vulnerabilidades potenciales del entorno de software de una organización.
Un principio que debe tenerse en cuenta es que, cuando se trata de seguridad, es más fácil aplicar la proactividad y la defensa a la hora de evitar posibles ataques que limpiar el desastre después.
Reducción de las superficies de ataque
Cuando se trata de reducir la superficie de ataque, hay que empezar sistemáticamente por las soluciones de seguridad más básicas. Por ejemplo, dado que los puertos TCP/IP abiertos son vulnerables, asegúrate de que existe un firewall para limitar el número de puertos TCP/IP accesibles. Aplica las actualizaciones y parches de seguridad pertinentes, y utiliza el cifrado con HTTPS y certificados SSL.
No obstante, hay cosas más específicas que se pueden hacer, dependiendo del entorno de software que haya que proteger.
Por ejemplo, limitar la cantidad de código expuesto. Todo código tiene vulnerabilidades que potencialmente pueden ser aprovechadas, y cuanto más código, más posibilidades hay de que se produzcan fallos. Reducir la cantidad de código es, por lo tanto, una buena estrategia para que las empresas logren disminuir la superficie de ataque. A medida que tu aplicación de software madura y añades características, tus módulos clave podrían añadir más y más funcionalidad. Oculta los parámetros no utilizados para proporcionar menos elementos que puedan ser objetivo de ataque de los ciberdelincuentes. Además, si no utilizas el parámetro, pregúntate si podría eliminarse. Revisa atentamente cada módulo para identificar cualquier código muerto.
En la misma línea, normalmente las aplicaciones de terceros pueden ser peligrosas porque su código fuente disponible de forma generalizada aumenta la superficie de ataque. Si utilizas aplicaciones de terceros, revisa y prueba su código con cuidado. Para proteger el código, también puedes intentar cambiarles el nombre u ocultar su identidad.
Reducción de los puntos de entrada disponibles
También debes valorar detenidamente a qué funciones pueden acceder los usuarios no autenticados. Por ejemplo, dado que las demostraciones online ponen a libre disposición todo tu código, se debe limitar el acceso únicamente a clientes o usuarios registrados. Del mismo modo, limita el acceso a los módulos de administración o de gestión de contenidos, así como a los módulos de intranet o extranet. Aplica restricciones de IP, utiliza puertos y certificados de cliente poco comunes y traslada los módulos de administración a un sitio independiente.
Además, se recomienda tomar las siguientes medidas para limitar el acceso a los puntos de entrada:
- Validar y sanear las entradas de formularios web. De esta forma se establece una protección frente ataques de inyección SQL.
- Recopilar solo los datos que se necesiten y anonimizarlos cuando sea posible.
- Crear cargas de archivos seguras limitando los tipos de archivos que se pueden cargar, validando el tipo de archivo y permitiendo solo a los usuarios autenticados cargar archivos.
- Aumentar la seguridad en la nube con la protección de cargas de trabajo en la nube, que ofrece protección contra brechas en cargas de trabajo, contenedores y Kubernetes.
Desactivación de funciones innecesarias
Por lo general, los nuevos recursos digitales, como los servidores y los sistemas operativos, llegan sin configurar. De forma predeterminada, todos los servicios de la aplicación están activados y todos los puertos están abiertos. Es más, estas aplicaciones y puertos no suelen estar actualizados. Debido a ello, suponen una fuente de vulnerabilidad. Por lo tanto, parte de los procedimientos de seguridad deberían consistir en revisar estos recursos digitales y desactivar las aplicaciones, funciones y servicios innecesarios. Una vez más, cuanto menor sea la superficie de ataque, menos probable será que un atacante pueda hacerse con un punto de apoyo para atacar.
Para obtener más información sobre cómo proteger tu empresa frente a ciberataques, consulta nuestra base de datos Conceptos básicos de ciberseguridad. También puedes ponerte en contacto con CrowdStrike para obtener ayuda para mejorar tu ciberseguridad.