| 6 min de lectura
Alrededor del 64,4% de la población mundial utiliza Internet, cifra que va en aumento, por lo cual las organizaciones tienen un gran incentivo para digitalizarse. Crear un sitio web o una aplicación web es una buena manera de llegar a un mayor número de usuarios. En consecuencia, estas empresas se convierten en responsables de proteger los datos de ese público. Sus nuevos activos expuestos al público son vectores de ataque para los ciberdelincuentes que buscan beneficiarse de los efectos de la explotación de errores cometidos en ellos. Los desarrolladores de sitios web y aplicaciones web recurren a prácticas de codificación seguras y evaluación de vulnerabilidades para reducir los puntos débiles de su código fuente. En este artículo del blog, explicamos cómo funcionan el escaneo de seguridad de sitios web y el escaneo de seguridad de aplicaciones web, su papel en la gestión de vulnerabilidades y la necesidad de combinarlos con evaluaciones más complejas.
Análisis de vulnerabilidades en apps y sitios web
Las vulnerabilidades en aplicaciones y sitios web pueden representar más o menos riesgo en función de la cantidad de información sensible que gestionen. De hecho, los sitios web completamente estáticos, por ejemplo, cuyo contenido es invariable puesto que los usuarios no pueden interactuar con las páginas para obtener respuestas como descargas, chats o pagos, tienen más probabilidades de ser seguros. Las aplicaciones web, en cambio, tienen varios elementos (p. ej., bases de datos) en sus back-end que trabajan para generar respuestas a las peticiones de los usuarios. Por consiguiente, hay más posibilidades de que se produzcan debilidades (probablemente, las más comunes las hayas visto en el Top 10 de OWASP). Y por lo tanto, hay más vías de entrada para un atacante.
Sin embargo, muchos sitios web han integrado algún tipo de interacción. Incluso los simples formularios de un sitio web estático que desencadenan acciones para guardar la información de respuesta en una plataforma diferente pueden ser vulnerables (p. ej., almacenar en caché los datos). Así pues, también es necesario escanear los sitios web para comprobar sus vulnerabilidades. Una forma básica y automatizada de realizar un chequeo de seguridad de un sitio web es mediante el uso de escáneres de vulnerabilidades de sitios web o herramientas de escaneo de vulnerabilidades.
En un artículo anterior hemos explicado qué es el análisis de vulnerabilidades. Básicamente, es el proceso por el que un dispositivo, programa informático o herramienta de pruebas identifica y reporta automáticamente los puntos débiles de los sistemas. En este sentido, es una forma de evaluación de vulnerabilidades que, a su vez, es una práctica necesaria dentro de un programa de gestión de vulnerabilidades.
A la hora de decidirse por un escáner, hay muchas alternativas para elegir, desde escáneres gratuitos de aplicaciones web hasta servicios pagados. Por ejemplo, existen opciones para comprobar la seguridad de los sitios web en línea, así como listados útiles de herramientas para la evaluación de vulnerabilidades (p. ej., el de OWASP).
Un escaneo de sitios web o de vulnerabilidades se realiza revisando los componentes y configuraciones de los objetivos de evaluación predefinidos, comparándolos con las características del código vulnerable. Dichas características son definidas en los escáneres de vulnerabilidades de seguridad por los desarrolladores que contribuyen a su mejoramiento. Para una mejor comprensión de este proceso, compartimos cómo nuestros desarrolladores de seguridad mejoran nuestro escáner llamado Machine.
Inicialmente, nuestro equipo percibe la necesidad de integrar un nuevo método que permita a Machine encontrar una vulnerabilidad determinada. Un candidato sería, por ejemplo, una nueva entrada en el Common Weakness Enumeration (CWE) o en el Common Vulnerabilities and Exposures (CVE). Podría tratarse de una funcionalidad que no debería estar presente en producción. Nuestros desarrolladores de seguridad empiezan a investigarla para definir cómo la herramienta encontrará esa funcionalidad en los códigos fuente de nuestros clientes. Una forma posible es utilizar una librería Python para dividir el código en fragmentos y crear un árbol para luego encontrar los parámetros de los que depende la funcionalidad. Los desarrolladores pueden, entonces, escribir funciones que contengan lo aprendido y que conduzcan a la detección y reporte de esa funcionalidad. Tras integrar el método a Machine, la herramienta puede encontrar automáticamente la vulnerabilidad en el código fuente. La creación de métodos para mejorar la herramienta es una actividad constante en Fluid Attacks.
Machine puede comprobar el cumplimiento de los requisitos de seguridad más críticos para las aplicaciones web. Estos incluyen, entre muchos otros, los siguientes:
-
Verificar que los componentes de terceros son seguros, lo que ayuda a protegerse contra el uso de software con vulnerabilidades conocidas.
-
Descartar entradas inseguras e incluir encabezados de seguridad HTTP, que ayudan a protegerse contra ataques de inyección y de secuencias de comandos en sitios cruzados (XSS).
-
Utilizar mecanismos preexistentes y actualizados para implementar funciones criptográficas, lo que ayuda a protegerse contra fallas criptográficas.
-
Definir usuarios con privilegios, lo que ayuda a protegerse contra la pérdida de control de acceso.
-
Exigir contraseñas y frases de contraseña largas, lo que ayuda a protegerse contra fallas de identificación y autenticación.
-
Controlar los redireccionamientos para que conduzcan a sitios de confianza, lo que ayuda a protegerse contra los falsificación de solicitudes del lado del servidor (SSRF).
Para validar ciertos requisitos, la evaluación de vulnerabilidades de las aplicaciones web con herramientas utiliza metodologías distintas a las pruebas de seguridad de aplicaciones estáticas (SAST). En algunos casos, el protagonismo es de las pruebas de seguridad de aplicaciones dinámicas (DAST), las cuales buscan puntos débiles en ambientes, terminales, servidores y configuraciones de servicios en la nube. Esto implica la interacción con la aplicación en ejecución, algo que también consigue Machine.
Además, sería necesario otro método para encontrar otro tipo de problemas. El análisis de composición de software (SCA), entre otras capacidades, encuentra componentes y dependencias de código abierto vulnerables que se utilizan en la aplicación web para no reinventar la rueda. Sin embargo, cuando esta rueda está defectuosa, es hora de cambiarla.
El problema que supone utilizar software de código abierto con vulnerabilidades conocidas es tan generalizado que lo hemos situado en primer lugar en la lista anterior, aunque el resto sigue un orden correspondiente a los riesgos del Top 10 de OWASP. Nuestro State of Attacks 2022 muestra que esta fue la vulnerabilidad que representó la mayor exposición al riesgo de los sistemas de nuestros clientes. Para encontrar estos casos de componentes vulnerables, nos basamos en gran medida en el SCA de nuestra herramienta automatizada.
Sin embargo, hay que tener en cuenta que los escáneres de vulnerabilidades de aplicaciones y sitios web no pueden encontrar todos los problemas de seguridad. El pentesting manual es necesario para una evaluación de vulnerabilidades completa.
¿Escaneo de vulnerabilidades de apps web vs pentesting?
Si leíste un artículo anterior sobre una vulnerabilidad que uno de nuestros investigadores de seguridad encontró en KAYAK, te habrás dado cuenta de que los hackers éticos a menudo encuentran una vulnerabilidad y van un poco más allá. En su evaluación, encuentran aún más problemas que, vinculados a la vulnerabilidad inicial, pueden aprovecharse para lanzar un ataque con un impacto mayor que el que se conseguiría aprovechando únicamente la primera detección.
No se espera este tipo de comportamiento de los escáneres de sitios y aplicaciones web. De hecho, las debilidades de seguridad se les escapan a las herramientas si la detección de las primeras requiere que un usuario externo haga cosas complejas en el sistema. La respuesta a este problema son las pruebas de penetración, que son, al igual que el escaneo de vulnerabilidades, un tipo de evaluación de vulnerabilidades.
El trabajo de los hackers éticos, o pentesters, ayuda a encontrar problemas complejos (a menudo de mayor criticidad que los detectados por las herramientas) y a veces incluso vulnerabilidades desconocidas. El pentesting es valioso, ya que simula ciberataques del "mundo real" y puede ofrecer demostraciones del impacto de la explotación de los problemas detectados. Además, dado que las herramientas pueden equivocarse, las evaluaciones manuales de seguridad que verifican sus reportes pueden reducir las tasas de falsos positivos en el reporte general.
La relación entre hacking y escaneo es de complemento. Los hackers pueden sin duda utilizar los escáneres de seguridad de sitios web (p. ej., Burp Scanner, ffuf, Nuclei, Vega) para ganar tiempo en la búsqueda de las debilidades que mejor se ocultan. Esta combinación, cuando se realiza de forma continua a lo largo del desarrollo de la aplicación, arroja conocimientos precisos y actualizados para la gestión de vulnerabilidades.