Las pruebas de seguridad de aplicaciones estáticas ( SAST ) se utilizan para proteger el software mediante la revisión del código fuente del software para identificar fuentes de vulnerabilidades. Aunque el proceso de análisis estático del código fuente existe desde que existen las computadoras [ aclaración necesaria ] , la técnica se extendió a la seguridad a fines de los años 90 y la primera discusión pública sobre la inyección SQL en 1998, cuando las aplicaciones web integraron nuevas tecnologías como JavaScript y Flash .
A diferencia de las herramientas de pruebas de seguridad de aplicaciones dinámicas (DAST) para pruebas de caja negra de la funcionalidad de la aplicación, las herramientas SAST se centran en el contenido del código de la aplicación, las pruebas de caja blanca . Una herramienta SAST escanea el código fuente de las aplicaciones y sus componentes para identificar posibles vulnerabilidades de seguridad en su software y arquitectura. Las herramientas de análisis estático pueden detectar aproximadamente el 50% de las vulnerabilidades de seguridad existentes. [1]
En el ciclo de vida del desarrollo de software (SDLC), la SAST se lleva a cabo en las primeras etapas del proceso de desarrollo y a nivel de código, y también cuando todos los fragmentos de código y componentes se juntan en un entorno de prueba consistente. La SAST también se utiliza para el control de calidad del software, [2] incluso si los numerosos falsos positivos resultantes impiden su adopción por parte de los desarrolladores [3].
Las herramientas SAST se integran en el proceso de desarrollo para ayudar a los equipos de desarrollo, ya que se centran principalmente en desarrollar y entregar software respetando las especificaciones solicitadas. [4] Las herramientas SAST, al igual que otras herramientas de seguridad, se centran en reducir el riesgo de inactividad de las aplicaciones o en que la información privada almacenada en las aplicaciones no se vea comprometida.
Para el año 2018, la base de datos Privacy Rights Clearinghouse [5] muestra que más de 612 millones de registros han sido comprometidos por piratería.
Pruebas de seguridad de aplicaciones de su lanzamiento: pruebas de seguridad de aplicaciones estáticas (SAST), pruebas de seguridad de aplicaciones dinámicas (DAST) y pruebas de seguridad de aplicaciones interactivas (IAST), una combinación de las dos. [6]
Las herramientas de análisis estático examinan el texto de un programa sintácticamente. Buscan un conjunto fijo de patrones o reglas en el código fuente. Teóricamente, también pueden examinar una forma compilada del software. Esta técnica se basa en la instrumentación del código para realizar la correlación entre los componentes compilados y los componentes del código fuente para identificar problemas. El análisis estático se puede realizar manualmente como una revisión del código o una auditoría del código para diferentes propósitos, incluida la seguridad, pero es una tarea que requiere mucho tiempo. [7]
La precisión de la herramienta SAST está determinada por su alcance de análisis y las técnicas específicas utilizadas para identificar vulnerabilidades. Los diferentes niveles de análisis incluyen:
El alcance del análisis determina su precisión y capacidad para detectar vulnerabilidades utilizando información contextual. [8] Las herramientas SAST, a diferencia de DAST, brindan a los desarrolladores retroalimentación en tiempo real y los ayudan a detectar fallas antes de pasar el código al siguiente nivel.
A nivel de función, una técnica común es la construcción de un árbol de sintaxis abstracta para controlar el flujo de datos dentro de la función. [9]
Desde finales de los años 90, la necesidad de adaptarse a los desafíos empresariales ha transformado el desarrollo de software con la componentización [10] impuesta por los procesos y la organización de los equipos de desarrollo. [11] Seguir el flujo de datos entre todos los componentes de una aplicación o grupo de aplicaciones permite validar las llamadas requeridas a procedimientos dedicados para la desinfección y que se tomen las medidas adecuadas para contaminar los datos en fragmentos específicos de código. [12] [13]
El auge de las aplicaciones web implicó probarlas: Verizon Data Breach informó en 2016 que el 40% de todas las violaciones de datos utilizan vulnerabilidades de aplicaciones web. [14] Además de las validaciones de seguridad externas, hay un aumento en el enfoque en las amenazas internas. El Clearswift Insider Threat Index (CITI) informó que el 92% de sus encuestados en una encuesta de 2015 dijo que había experimentado incidentes de TI o seguridad en los 12 meses anteriores y que el 74% de estas violaciones fueron originadas por personas internas. [15] [16] Lee Hadlington categorizó las amenazas internas en 3 categorías: maliciosas, accidentales y no intencionales. El crecimiento explosivo de las aplicaciones móviles implica proteger las aplicaciones en una etapa más temprana del proceso de desarrollo para reducir el desarrollo de código malicioso. [17]
Cuanto antes se solucione una vulnerabilidad en el ciclo de vida del desarrollo de software (SDLC), más barato será solucionarla. Los costos de reparación en el desarrollo son diez veces menores que en las pruebas y cien veces menores que en la producción. [18] Las herramientas SAST se ejecutan automáticamente, ya sea a nivel de código o de aplicación, y no requieren interacción. Cuando se integran en un contexto de CI/CD, las herramientas SAST se pueden utilizar para detener automáticamente el proceso de integración si se identifican vulnerabilidades críticas. [19]
Debido a que la herramienta escanea todo el código fuente, puede cubrir el 100% del mismo, mientras que las pruebas de seguridad de aplicaciones dinámicas cubren su ejecución, posiblemente faltando parte de la aplicación, [6] o una configuración no segura en los archivos de configuración.
Las herramientas SAST pueden ofrecer funcionalidades ampliadas, como pruebas de calidad y de arquitectura. Existe una correlación directa entre la calidad y la seguridad. Un software de mala calidad también es un software poco seguro. [20]
Aunque los desarrolladores tienen una actitud positiva respecto del uso de las herramientas SAST, existen diferentes desafíos para su adopción por parte de los desarrolladores. [4] La facilidad de uso de los resultados generados por estas herramientas puede poner en entredicho el uso que los desarrolladores pueden hacer de ellas. Las investigaciones muestran que, a pesar del largo plazo que generan estas herramientas, pueden carecer de facilidad de uso. [21]
Con los procesos ágiles en el desarrollo de software, la integración temprana de SAST genera muchos errores, ya que los desarrolladores que utilizan este marco se centran primero en las características y la entrega. [22]
El análisis de muchas líneas de código con herramientas SAST puede generar cientos o miles de advertencias de vulnerabilidad para una sola aplicación. Esto puede generar muchos falsos positivos, lo que aumenta el tiempo de investigación y reduce la confianza en dichas herramientas. Esto sucede especialmente cuando la herramienta no puede captar el contexto de la vulnerabilidad. [3]