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 las fuentes de vulnerabilidades. Aunque el proceso de análisis estático del código fuente ha existido 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 en 1998 cuando las aplicaciones web integraron nuevas tecnologías como JavaScript y Flash .
A diferencia de las herramientas de prueba de seguridad de aplicaciones dinámicas (DAST) para las 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 SDLC , SAST se realiza al principio del proceso de desarrollo y a nivel de código, y también cuando todas las piezas de código y componentes se juntan en un entorno de prueba coherente. SAST también se utiliza para garantizar la calidad del software. [2] incluso si los muchos 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 tiempo de inactividad de las aplicaciones o en que la información privada almacenada en las aplicaciones no se vea comprometida.
Para el año de 2018, la base de datos del Privacy Rights Clearinghouse [5] muestra que más de 612 millones de registros se han visto comprometidos por la piratería.
Descripción general
Pruebas de seguridad de aplicaciones de las aplicaciones que se publican: 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 sintácticamente el texto de un programa. Buscan un conjunto fijo de patrones o reglas en el código fuente. En teoría, también pueden examinar una forma compilada del software. Esta técnica se basa en la instrumentación del código para hacer el mapeo 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 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:
- nivel de función - secuencias de instrucción.
- archivo o nivel de 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. [8]
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 90, la necesidad de adaptarse a los desafíos empresariales ha transformado el desarrollo de software con la componenteización. [10] reforzado 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 la validación de las llamadas requeridas a los procedimientos dedicados para la desinfección y que se tomen las acciones adecuadas para contaminar los datos en fragmentos de código específicos. [12] [13]
El auge de las aplicaciones web implicó probarlas: Verizon Data Breach informa 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) ha informado que el 92% de sus encuestados en una encuesta de 2015 dijeron que habían experimentado incidentes de seguridad o de TI en los últimos 12 meses y que el 74% de estas infracciones fueron originadas por personas con información privilegiada. [15] Lee Hadlington clasificó las amenazas internas en 3 categorías: maliciosas, accidentales y no intencionales. El crecimiento explosivo de las aplicaciones móviles implica proteger las aplicaciones antes en el proceso de desarrollo para reducir el desarrollo de códigos maliciosos. [dieciséis]
Puntos fuertes de SAST
Cuanto antes se solucione una vulnerabilidad en el SDLC, más barato será solucionarlo. Los costos para corregir en el desarrollo son 10 veces más bajos que en las pruebas y 100 veces más bajos que en la 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 integra 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. [18]
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 configuración no segura en los archivos de configuración.
Las herramientas SAST pueden ofrecer funcionalidades ampliadas, como pruebas de calidad y arquitectura. Existe una correlación directa entre la calidad y la seguridad. El software de mala calidad también es un software mal protegido. [19]
Debilidades de SAST
Aunque los desarrolladores son positivos sobre el uso de herramientas SAST, existen diferentes desafíos para la adopción de herramientas SAST por parte de los desarrolladores. [4]
Con Agile Processes 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. [20]
Escanear muchas líneas de código con herramientas SAST puede generar cientos o miles de advertencias de vulnerabilidad para una sola aplicación. Genera muchos falsos positivos, lo que aumenta el tiempo de investigación y reduce la confianza en dichas herramientas. Este es particularmente el caso cuando la herramienta no puede captar el contexto de la vulnerabilidad [3].
Referencias
- ^ Okun, V .; Guthrie, WF; Gaucher, H .; Black, PE (octubre de 2007). "Efecto de las herramientas de análisis estático sobre la seguridad del software: investigación preliminar" (PDF) . Actas del Taller 2007 de ACM sobre la calidad de la protección . ACM: 1–5. doi : 10.1145 / 1314257.1314260 . S2CID 6663970 .
- ^ Ayewah, N .; Hovemeyer, D .; Morgenthaler, JD; Penix, J .; Pugh, W. (septiembre de 2008). "Uso de análisis estático para encontrar errores". Software IEEE . IEEE. 25 (5): 22-29. doi : 10.1109 / MS.2008.130 . S2CID 20646690 .
- ^ a b Johnson, Bretaña; 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?". Actas de ICSE '13 de la Conferencia Internacional de Ingeniería de Software de 2013 : 672–681. ISBN 978-1-4673-3076-3.
- ^ a b 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 de acción en Telenor Digital". Conferencia internacional sobre desarrollo de software ágil . Springer: 86-103.
- ^ "Violaciones de datos | Cámara de compensación de derechos de privacidad" . privacyrights.org .
- ^ a b Parizi, RM; Qian, K .; Shahriar, H .; Wu, F .; Tao, L. (julio de 2018). "Requisitos de referencia para evaluar herramientas de prueba de vulnerabilidad de seguridad de software". IEEE 42nd Annual Computer Software and Applications Conference (COMPSAC) . IEEE: 825–826. doi : 10.1109 / COMPSAC.2018.00139 . ISBN 978-1-5386-2666-5. S2CID 52055661 .
- ^ Ajedrez, B .; McGraw, G. (diciembre de 2004). "Análisis estático para seguridad". Seguridad y privacidad de IEEE . IEEE. 2 (6): 76–79. doi : 10.1109 / MSP.2004.111 .
- ^ Ajedrez, B .; McGraw, G. (octubre de 2004). "Análisis de riesgos en el diseño de software". Seguridad y privacidad de IEEE . IEEE. 2 (4): 76–84. doi : 10.1109 / MSP.2004.55 .
- ^ Yamaguchi, Fabián; Lottmann, Markus; Rieck, Konrad (diciembre de 2012). "Extrapolación de vulnerabilidad generalizada utilizando árboles de sintaxis abstracta". Actas de la 28ª Conferencia Anual de Aplicaciones de Seguridad Informática . IEEE. 2 (4): 359–368. doi : 10.1145 / 2420950.2421003 . S2CID 8970125 .
- ^ Booch, Grady; Kozaczynski, Wojtek (septiembre de 1998). "Ingeniería de software basada en componentes". 2006 Simposio IEEE sobre seguridad y privacidad (S & P'06) . Software IEEE. 15 (5): 34–36. doi : 10.1109 / MS.1998.714621 . S2CID 33646593 .
- ^ Mezo, Peter; Jain, Radhika (diciembre de 2006). "Desarrollo de software ágil: Principios y mejores prácticas de sistemas adaptativos". 2006 Simposio IEEE sobre seguridad y privacidad (S & P'06) . Gestión de sistemas de información. 23 (3): 19–30. doi : 10.1201 / 1078.10580530 / 46108.23.3.20060601 / 93704.3 . S2CID 5087532 .
- ^ Livshits, VB; Lam, MS (mayo de 2006). "Encontrar vulnerabilidades de seguridad en aplicaciones Java con análisis estático". Simposio de seguridad de USENIX . 14 : 18.
- ^ Jovanovic, N .; Kruegel, C .; Kirda, E. (mayo de 2006). "Pixy: una herramienta de análisis estático para la detección de vulnerabilidades de aplicaciones web". 2006 Simposio IEEE sobre seguridad y privacidad (S & P'06) . IEEE: 359–368. doi : 10.1109 / SP.2006.29 . ISBN 0-7695-2574-1. S2CID 1042585 .
- ^ "Informe de investigaciones de violación de datos de 2016" (PDF) . 2016.
- ^ "Índice de amenazas internas de Clearswift (CITI)" (PDF) . 2015.
- ^ Xianyong, Meng; Qian, Kai; Lo, Dan; Bhattacharya, Prabir; Wu, Fan (junio de 2018). "Desarrollo de software móvil seguro con detectores de vulnerabilidades en análisis de código estático". Simposio internacional sobre redes, computadoras y comunicaciones de 2018 (ISNCC) : 1–4. doi : 10.1109 / ISNCC.2018.8531071 . ISBN 978-1-5386-3779-1. S2CID 53288239 .
- ^ Hossain, Shahadat (octubre de 2018). "Efectos de retrabajo y reutilización en la economía del software" . Revista mundial de ciencia y tecnología de la computación .
- ^ Okun, V .; Guthrie, WF; Gaucher, H .; Black, PE (octubre de 2007). "Efecto de las herramientas de análisis estático sobre la seguridad del software: investigación preliminar" (PDF) . Actas del Taller 2007 de ACM sobre la calidad de la protección . ACM: 1–5. doi : 10.1145 / 1314257.1314260 . 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 y Tecnología de la Información 2019 (conjunto de datos). 1 . págs. 199–203. doi : 10.5281 / zenodo.3374712 .
- ^ Arreaza, Gustavo José Nieves (junio de 2019). "Metodología para el desarrollo de aplicaciones seguras en las nubes. (MDSAC) para conferencias IEEECS". 2019 6th IEEE International Conference on Cyber Security and Cloud Computing (CSCloud) / 2019 5th IEEE International Conference on Edge Computing y Scalable Cloud (EdgeCom) . IEEE: 102–106. doi : 10.1109 / CSCloud / EdgeCom.2019.00-11 . ISBN 978-1-7281-1661-7.