Las pruebas estáticas de seguridad de aplicaciones ( SAST , por sus siglas en inglés) se utilizan para proteger el software revisando su código fuente e identificando vulnerabilidades de seguridad. Si bien el proceso de verificar programas leyendo su código (conocido actualmente como análisis estático de programas ) existe desde que existen las computadoras, la técnica se extendió a la seguridad a finales de los 90 y la primera discusión pública sobre la inyección SQL tuvo lugar 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, en pruebas de caja blanca . Una herramienta SAST analiza 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 en las aplicaciones analizadas. [ 1 ]
En el ciclo de vida del desarrollo de software (SDLC), SAST se realiza al inicio del proceso de desarrollo y a nivel de código, y también cuando todas las partes del código y los componentes se integran en un entorno de prueba consistente. SAST también se utiliza para el aseguramiento de la calidad del software, [ 2 ] aunque los numerosos falsos positivos resultantes dificultan 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 que cumpla con las especificaciones requeridas. [ 4 ] Las herramientas SAST, al igual que otras herramientas de seguridad, se centran en reducir el riesgo de tiempo de inactividad de las aplicaciones o en que la información privada almacenada en ellas no se vea comprometida.
Descripción general
Las pruebas de seguridad de las aplicaciones realizadas antes de su lanzamiento incluyen pruebas de seguridad estáticas (SAST), pruebas de seguridad dinámicas (DAST) y pruebas de seguridad interactivas (IAST), que es una combinación de las dos. [ 5 ]
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. En teoría, también pueden examinar una versión compilada del software. Esta técnica se basa en la instrumentación del código para realizar el mapeo entre los componentes compilados y los componentes del código fuente e identificar problemas. El análisis estático puede realizarse manualmente como una revisión o auditoría del código para diversos fines, incluida la seguridad, pero requiere mucho tiempo. [ 6 ]
La precisión de las herramientas 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 los siguientes:
- Nivel de función : Secuencias de instrucciones
- Nivel de archivo o clase : Una plantilla de código de programa extensible para la creación de objetos.
- Nivel de aplicación : Un programa o grupo de programas que interactúan
El alcance del análisis determina su precisión y capacidad para detectar vulnerabilidades utilizando información contextual. [ 7 ] Las herramientas SAST, a diferencia de las herramientas DAST , brindan a los desarrolladores retroalimentación en tiempo real y los ayudan a corregir fallas antes de que el código pase 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. [ 8 ]
Desde finales de los 90, la necesidad de adaptarse a los desafíos empresariales ha transformado el desarrollo de software con la componentización [ 9 ], impulsada por los procesos y la organización de los equipos de desarrollo. [ 10 ] El seguimiento del 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 sanitización y que se tomen las medidas adecuadas para contaminar los datos en fragmentos de código específicos. [ 11 ] [ 12 ]
El auge de las aplicaciones web implicó su puesta a prueba: Verizon Data Breach informó en 2016 que el 40% de todas las filtraciones de datos utilizan vulnerabilidades de aplicaciones web. [ 13 ] Tanto las validaciones de seguridad externas como el enfoque en las amenazas internas han aumentado. El Índice de Amenazas Internas de Clearswift (CITI) informó que el 92% de sus encuestados en una encuesta de 2015 dijeron haber experimentado incidentes de TI o seguridad en los 12 meses anteriores y que el 74% de estas filtraciones fueron originadas por personas internas. [ 14 ] [ 15 ] Lee Hadlington clasificó las amenazas internas en 3 categorías: maliciosas, accidentales e involuntarias. El crecimiento explosivo de las aplicaciones móviles implica proteger las aplicaciones desde las primeras etapas del proceso de desarrollo para reducir el desarrollo de código malicioso. [ 16 ]
Fortalezas de SAST
Cuanto antes se corrija una vulnerabilidad en el SDLC, más económico será corregirla. Los costos de corrección en desarrollo son 10 veces menores que en pruebas y 100 veces menores que en producción. [ 17 ] 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 pueden utilizarse para detener automáticamente el proceso de integración si se identifican vulnerabilidades críticas. [ 18 ]
Otra ventaja sobre otros tipos de pruebas es que las herramientas SAST escanean todo el código fuente, mientras que las herramientas de prueba de seguridad de aplicaciones dinámicas cubren su ejecución, posiblemente omitiendo parte de la aplicación [ 5 ] o la configuración no segura en los archivos de configuración.
Las herramientas SAST pueden ofrecer funcionalidades extendidas, como pruebas de calidad y arquitectura. Existe una correlación directa entre la calidad del software y la seguridad. Un software de mala calidad también es un software poco seguro. [ 19 ]
Debilidades de SAST
Aunque los desarrolladores tienen una opinión positiva sobre el uso de herramientas SAST, existen diferentes desafíos para su adopción. [ 4 ] Por ejemplo, las investigaciones muestran que, a pesar de la gran cantidad de resultados generados por estas herramientas, pueden carecer de usabilidad. [ 20 ]
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. [ 21 ]
Analizar numerosas líneas de código con herramientas SAST puede generar cientos o miles de advertencias de vulnerabilidad para una sola aplicación. Esto puede producir muchos falsos positivos, aumentando el tiempo de investigación y reduciendo la confianza en dichas herramientas. Esto ocurre especialmente cuando la herramienta no puede detectar el contexto de la vulnerabilidad. [ 3 ]
Véase también
Referencias
- ↑ Okun, V.; Guthrie, WF; Gaucher, H.; Black, PE (octubre de 2007). «Efecto de las herramientas de análisis estático en la seguridad del software: investigación preliminar» (PDF) . Actas del taller de la ACM de 2007 sobre calidad de la protección . ACM. págs. 1-5 . doi : 10.1145/1314257.1314260 . ISBN 978-1-59593-885-5. S2CID 6663970 .
- ↑ Ayewah, N.; Hovemeyer, D.; Morgenthaler, JD; Penix, J.; Pugh, W. (septiembre de 2008). "Uso del análisis estático para encontrar errores". IEEE Software . 25 (5). IEEE: 22– 29. doi : 10.1109/MS.2008.130 . S2CID 20646690 .
- 1 2 Johnson, Brittany; Song, Yooki; Murphy-Hill, Emerson; Bowdidge, Robert (mayo de 2013). "¿Por qué los desarrolladores de software no utilizan herramientas de análisis estático para encontrar errores?". 35.ª Conferencia Internacional de Ingeniería de Software (ICSE) de 2013. págs. 672–681 . doi : 10.1109/ICSE.2013.6606613 . ISBN 978-1-4673-3076-3.
- 1 2 Oyetoyan, Tosin Daniel; Milosheska, Bisera; Grini, Mari (mayo de 2018). "Mitos y realidades sobre las herramientas de prueba de seguridad de aplicaciones estáticas: una investigación-acción en Telenor Digital". Conferencia Internacional sobre Desarrollo Ágil de Software . Springer: 86–103 .
- 1 2 Parizi, RM; Qian, K.; Shahriar, H.; Wu, F.; Tao, L. (julio de 2018). "Requisitos de referencia para evaluar herramientas de prueba de vulnerabilidades de seguridad de software". 2018 IEEE 42nd Annual Computer Software and Applications Conference (COMPSAC) . IEEE. págs. 825–826 . doi : 10.1109/COMPSAC.2018.00139 . ISBN 978-1-5386-2666-5. S2CID 52055661 .
- ↑ Chess, B.; McGraw, G. (diciembre de 2004). "Análisis estático para la seguridad". IEEE Security & Privacy . 2 (6). IEEE: 76– 79. doi : 10.1109/MSP.2004.111 .
- ↑ Chess, B.; McGraw, G. (octubre de 2004). "Análisis de riesgos en el diseño de software" . IEEE Security & Privacy . 2 (4). IEEE: 76–84 . doi : 10.1109/MSP.2004.55 .
- ↑ Yamaguchi, Fabian; Lottmann, Markus; Rieck, Konrad (diciembre de 2012). «Extrapolación generalizada de vulnerabilidades mediante árboles de sintaxis abstracta». Actas de la 28.ª Conferencia Anual sobre Aplicaciones de Seguridad Informática . Vol. 2. IEEE. págs. 359–368 . doi : 10.1145/2420950.2421003 . ISBN 9781450313124. S2CID 8970125 .
- ↑ Booch, Grady; Kozaczynski, Wojtek (septiembre de 1998). "Ingeniería de software basada en componentes". IEEE Software . 15 (5): 34– 36. doi : 10.1109/MS.1998.714621 . S2CID 33646593 .
- ↑ Mezo, Peter; Jain, Radhika (diciembre de 2006). "Desarrollo ágil de software: principios de sistemas adaptativos y mejores prácticas". Information Systems Management . 23 (3): 19– 30. doi : 10.1201/1078.10580530/46108.23.3.20060601/93704.3 . S2CID 5087532 .
- ↑ Livshits, VB; Lam, MS (mayo de 2006). "Detección de vulnerabilidades de seguridad en aplicaciones Java mediante análisis estático". Simposio de seguridad USENIX . 14 : 18.
- ↑ Jovanovic, N.; Kruegel, C.; Kirda, E. (mayo de 2006). "Pixy: una herramienta de análisis estático para detectar vulnerabilidades en aplicaciones web". Simposio IEEE de 2006 sobre Seguridad y Privacidad (S&P'06) . IEEE. págs. 359–368 . doi : 10.1109/SP.2006.29 . ISBN 0-7695-2574-1. S2CID 1042585 .
- ↑ "Informe de investigaciones de violaciones de datos de 2016" (PDF) . Verizon . 2016. Consultado el 8 de enero de 2016 .
- ↑ "Informe de Clearswift: el 40 por ciento de las empresas prevé una filtración de datos el próximo año" . Endeavor Business Media. 20 de noviembre de 2015. Consultado el 8 de enero de 2024 .
- ↑ "La bomba de relojería: el 40% de las empresas prevé una filtración de datos interna en los próximos 12 meses" . Fortra. 18 de noviembre de 2015. Consultado el 8 de enero de 2024 .
- ↑ Xianyong, Meng; Qian, Kai; Lo, Dan; Bhattacharya, Prabir; Wu, Fan (junio de 2018). «Desarrollo seguro de software móvil con detectores de vulnerabilidades en el análisis estático de código». Simposio Internacional de Redes, Computadoras y Comunicaciones (ISNCC) de 2018. págs. 1-4 . doi : 10.1109/ISNCC.2018.8531071 . ISBN 978-1-5386-3779-1. S2CID 53288239 .
- ↑ Hossain, Shahadat (octubre de 2018). "Efectos de reelaboración y reutilización en la economía del software" . Global Journal of Computer Science and Technology . 18 (C4): 35–50 .
- ↑ Okun, V.; Guthrie, WF; Gaucher, H.; Black, PE (octubre de 2007). «Efecto de las herramientas de análisis estático en la seguridad del software: investigación preliminar» (PDF) . Actas del taller de la ACM de 2007 sobre calidad de la protección . ACM. págs. 1-5 . doi : 10.1145/1314257.1314260 . ISBN 978-1-59593-885-5. S2CID 6663970 .
- ↑ Siavvas, M.; Tsoukalas, D.; Janković, M.; Kehagias, D.; Chatzigeorgiou, A.; Tzovaras, D.; Aničić, N.; Gelenbe, E. (agosto de 2019). "Una evaluación empírica de la relación entre la deuda técnica y la seguridad del software". En Konjović, Z.; Zdravković, M.; Trajanović, M. (eds.). Actas de la Conferencia Internacional sobre Sociedad de la Información y Tecnología 2019 (conjunto de datos). Vol. 1. pp. 199– 203. doi : 10.5281/zenodo.3374712 .
- ↑ Tahaei, Mohammad; Vaniea, Kami; Beznosov, Konstantin (Kosta); Wolters, Maria K (6 de mayo de 2021). «Notificaciones de seguridad en herramientas de análisis estático: actitudes, comprensión y capacidad de actuación de los desarrolladores». Actas de la Conferencia CHI 2021 sobre factores humanos en sistemas informáticos . págs. 1-17 . doi : 10.1145/3411764.3445616 . ISBN 9781450380966. S2CID 233987670 .
- ↑ Arreaza, Gustavo José Nieves (junio de 2019). «Metodología para el desarrollo de aplicaciones seguras en la nube (MDSAC) para las conferencias IEEECS». 2019 6.ª Conferencia Internacional IEEE sobre Ciberseguridad y Computación en la Nube (CSCloud) / 2019 5.ª Conferencia Internacional IEEE sobre Computación de Borde y Nube Escalable (EdgeCom) . IEEE. págs. 102-106 . doi : 10.1109/CSCloud/EdgeCom.2019.00-11 . ISBN 978-1-7281-1661-7. S2CID 203655645 .
- Pruebas de seguridad
- Análisis estático de programas