stringtranslate.com

Pruebas de seguridad de aplicaciones estáticas

Las pruebas de seguridad de aplicaciones estáticas ( SAST ) se utilizan para proteger el software revisando el código fuente del software para identificar 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 fue en 1998, cuando las aplicaciones web integraron nuevas tecnologías como JavaScript y Flash .

A diferencia de las herramientas de prueba dinámica de seguridad de aplicaciones (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 de desarrollo de software (SDLC), SAST se realiza temprano en el proceso de desarrollo y a nivel de código, y también cuando todas las piezas de código y componentes se reúnen en un entorno de prueba consistente. SAST también se utiliza para garantizar la calidad del software, [2] incluso si los numerosos falsos positivos resultantes impiden su adopción por parte de los desarrolladores [3]

Las herramientas SAST están integradas 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 que la información privada almacenada en las aplicaciones no se vea comprometida.

Para el año 2018, la base de datos de Privacy Rights Clearinghouse [5] muestra que más de 612 millones de registros han sido comprometidos por piratería.

Descripción general

Pruebas de seguridad de las aplicaciones en 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 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 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 para identificar problemas. El análisis estático se puede realizar manualmente como revisión o 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:

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 comentarios en tiempo real y les ayudan a proteger las 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 90, la necesidad de adaptarse a los desafíos empresariales ha transformado el desarrollo de software con la componenteización [10] impuesta por procesos y organización de 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 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 informó en 2016 que el 40% de todas las filtraciones de datos utilizan vulnerabilidades de las aplicaciones web. [14] Además de las validaciones de seguridad externas, cada vez se presta más atención a las amenazas internas. El Clearswift Insider Threat Index (CITI) informó que el 92% de los encuestados en una encuesta de 2015 dijeron que habían experimentado incidentes de seguridad o de TI en los 12 meses anteriores y que el 74% de estas violaciones fueron originadas por personas internas. [15] [16] 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 en una etapa más temprana del proceso de desarrollo para reducir el desarrollo de códigos maliciosos. [17]

Fortalezas del SAST

Cuanto antes se solucione una vulnerabilidad en el SDLC, más barato será solucionarla. Los costos de reparación en desarrollo son 10 veces menores que en pruebas y 100 veces menores que en 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 dinámicas de seguridad de la aplicación cubren su ejecución, posiblemente faltando parte de la aplicación, [6] o configuración no segura en 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 software mal protegido. [20]

Debilidades del 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] La usabilidad de los resultados generados por estas herramientas puede cuestionar hasta qué punto los desarrolladores pueden hacer uso de estas herramientas. Las investigaciones muestran que, a pesar del largo tiempo que generan estas herramientas, es posible que carezcan de usabilidad. [21]

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. [22]

Escanear muchas líneas de código con herramientas SAST puede generar cientos o miles de advertencias de vulnerabilidad para una sola aplicación. Puede generar muchos falsos positivos, aumentando el tiempo de investigación y reduciendo la confianza en dichas herramientas. Este es particularmente el caso cuando la herramienta no puede captar el contexto de la vulnerabilidad. [3]

Ver también

Referencias

  1. ^ Okun, V.; Guthrie, WF; Gaucher, H.; Negro, 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 ACM de 2007 sobre calidad de protección . MCA: 1–5. doi :10.1145/1314257.1314260. S2CID  6663970.
  2. ^ Ayewah, N.; Hovemeyer, D.; Morgenthaler, JD; Pénix, J.; Pugh, W. (septiembre de 2008). "Uso de análisis estático para encontrar errores". Software IEEE . 25 (5). IEEE: 22–29. doi :10.1109/MS.2008.130. S2CID  20646690.
  3. ^ ab Johnson, Bretaña; Canción, 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?". ICSE '13 Actas de la Conferencia Internacional sobre Ingeniería de Software de 2013 : 672–681. ISBN 978-1-4673-3076-3.
  4. ^ ab Oyetoyan, Tosin Daniel; Milosheska, Bisera; Grini, Mari (mayo de 2018). "Mitos y hechos 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 . Saltador: 86–103.
  5. ^ "Violación de datos | Cámara de compensación de derechos de privacidad". derechos de privacidad.org .
  6. ^ ab Parizi, RM; Qian, K.; Shahriar, H.; Wu, F.; Tao, L. (julio de 2018). "Requisitos de referencia para evaluar las herramientas de prueba de vulnerabilidades de seguridad del software". 42ª Conferencia Anual de Aplicaciones y Software Informáticos de IEEE 2018 (COMPSAC) . IEEE. págs. 825–826. doi :10.1109/COMPSAC.2018.00139. ISBN 978-1-5386-2666-5. S2CID  52055661.
  7. ^ Ajedrez, B.; McGraw, G. (diciembre de 2004). "Análisis estático para la seguridad". Seguridad y privacidad de IEEE . 2 (6). IEEE: 76–79. doi :10.1109/MSP.2004.111.
  8. ^ Ajedrez, B.; McGraw, G. (octubre de 2004). "Análisis de riesgos en el diseño de software". Seguridad y privacidad de IEEE . 2 (4). IEEE: 76–84. doi : 10.1109/MSP.2004.55 .
  9. ^ Yamaguchi, Fabián; Lottmann, Markus; Rieck, Konrad (diciembre de 2012). "Extrapolación de vulnerabilidad generalizada 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.
  10. ^ Booch, Grady; Kozaczynski, Wojtek (septiembre de 1998). "Ingeniería de software basada en componentes". Software IEEE . 15 (5): 34–36. doi :10.1109/MS.1998.714621. S2CID  33646593.
  11. ^ Mezo, Pedro; Jain, Radhika (diciembre de 2006). "Desarrollo ágil de software: principios y mejores prácticas de sistemas adaptativos". Gestión de Sistemas de Información . 23 (3): 19–30. doi :10.1201/1078.10580530/46108.23.3.20060601/93704.3. S2CID  5087532.
  12. ^ Livmierdas, VB; Lam, MS (mayo de 2006). "Encontrar vulnerabilidades de seguridad en aplicaciones Java con análisis estático". Simposio de seguridad USENIX . 14 : 18.
  13. ^ Jovanovic, N.; Kruegel, C.; Kirda, E. (mayo de 2006). "Pixy: una herramienta de análisis estático para detectar vulnerabilidades de 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.
  14. ^ "Informe de investigaciones de vulneración de datos de 2016" (PDF) . Verizon . 2016 . Consultado el 8 de enero de 2016 .
  15. ^ "Informe Clearswift: el 40 por ciento de las empresas esperan una filtración de datos el próximo año". Endeavour Business Media. 20 de noviembre de 2015 . Consultado el 8 de enero de 2024 .
  16. ^ "La bomba de tiempo: el 40% de las empresas esperan una filtración de datos internos en los próximos 12 meses". Fortra. 18 de noviembre de 2015 . Consultado el 8 de enero de 2024 .
  17. ^ Xianyong, Meng; Qian, Kai; He aquí, Dan; Bhattacharya, Prabir; Wu, Fan (junio de 2018). "Desarrollo seguro de software móvil con detectores de vulnerabilidades en análisis de código estático". 2018 Simposio Internacional sobre Redes, Computadoras y Comunicaciones (ISNCC) . págs. 1–4. doi :10.1109/ISNCC.2018.8531071. ISBN 978-1-5386-3779-1. S2CID  53288239.
  18. ^ Hossain, Shahadat (octubre de 2018). "Efectos de reelaboración y reutilización en la economía del software". Revista global de ciencia y tecnología informática . 18 (C4): 35–50.
  19. ^ Okun, V.; Guthrie, WF; Gaucher, H.; Negro, 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 ACM de 2007 sobre calidad de protección . MCA: 1–5. doi :10.1145/1314257.1314260. S2CID  6663970.
  20. ^ 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 deuda técnica y 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 de 2019 (conjunto de datos). vol. 1. págs. 199–203. doi : 10.5281/zenodo.3374712 .
  21. ^ Tahaei, Mahoma; 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 los desarrolladores para actuar en consecuencia. págs. 1-17. doi :10.1145/3411764.3445616. ISBN 9781450380966. S2CID  233987670.
  22. Arreaza, Gustavo José Nieves (junio de 2019). "Metodología para el desarrollo de aplicaciones seguras en las nubes. (MDSAC) para conferencias IEEECS". 2019 Sexta Conferencia Internacional IEEE sobre Seguridad Cibernética y Computación en la Nube (CSCloud)/ 2019 Quinta Conferencia Internacional IEEE sobre Computación Edge 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.