stringtranslate.com

Pruebas de seguridad de aplicaciones estáticas

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, 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 se produjo 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.

Descripción general

Pruebas de seguridad de aplicaciones en el momento 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. 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 realizar la correlación entre los componentes compilados y los componentes del código fuente a fin de identificar problemas. El análisis estático se puede realizar manualmente como una revisión o 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 asegurar 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]

Puntos fuertes del SAST

Cuanto antes se solucione una vulnerabilidad en el ciclo de vida del desarrollo de software (SDLC), más barato será solucionarla. Los costes 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]

Debilidades del SAST

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]

Véase también

Referencias

  1. ^ 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 ACM de 2007 sobre calidad de la protección . ACM: 1–5. doi :10.1145/1314257.1314260. S2CID  6663970.
  2. ^ 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.
  3. ^ ab 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?". Actas de la Conferencia internacional de ingeniería de software de 2013 de ICSE '13 : 672–681. ISBN 978-1-4673-3076-3.
  4. ^ ab 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.
  5. ^ "Violaciones de datos | Centro de intercambio de información sobre derechos de privacidad". privacyrights.org .
  6. ^ ab 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". 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.S2CID52055661  .​
  7. ^ Chess, B.; McGraw, G. (diciembre de 2004). "Análisis estático para seguridad". IEEE Security & Privacy . 2 (6). IEEE: 76–79. doi :10.1109/MSP.2004.111.
  8. ^ 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 .
  9. ^ 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.S2CID8970125  .​
  10. ^ 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.
  11. ^ Mezo, Peter; 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. ^ Livshits, VB; Lam, MS (mayo de 2006). "Cómo 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 en aplicaciones web". Simposio IEEE sobre seguridad y privacidad de 2006 (S&P'06) . IEEE. págs. 359–368. doi :10.1109/SP.2006.29. ISBN. 0-7695-2574-1.S2CID1042585  .​
  14. ^ "Informe de investigaciones sobre violaciones 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". Endeavor Business Media. 20 de noviembre de 2015. Consultado el 8 de enero de 2024 .
  16. ^ "La bomba de relojería: el 40% de las empresas prevén una filtración de datos confidenciales en los próximos 12 meses". Fortra. 18 de noviembre de 2015. Consultado el 8 de enero de 2024 .
  17. ^ Xianyong, Meng; Qian, Kai; Lo, 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". Simposio internacional sobre redes, computadoras y comunicaciones (ISNCC) de 2018. págs. 1–4. doi :10.1109/ISNCC.2018.8531071. ISBN 978-1-5386-3779-1. Número de identificación del sujeto  53288239.
  18. ^ Hossain, Shahadat (octubre de 2018). "Efectos de reelaboración y reutilización en la economía del software". Revista mundial de informática y tecnología . 18 (C4): 35–50.
  19. ^ 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 ACM de 2007 sobre calidad de la protección . ACM: 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 la deuda técnica y la seguridad del software". En Konjović, Z.; Zdravković, M.; Trajanović, M. (eds.). Actas de la Conferencia internacional sobre la sociedad de la información y la tecnología de 2019 (conjunto de datos). Vol. 1. págs. 199–203. doi : 10.5281/zenodo.3374712 .
  21. ^ 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 los desarrolladores para actuar en consecuencia. págs. 1–17. doi :10.1145/3411764.3445616. ISBN 9781450380966. Número de identificación del sujeto  233987670.
  22. ^ Arreaza, Gustavo Jose Nieves (junio de 2019). "Metodología para el desarrollo de aplicaciones seguras en la nube (MDSAC) para conferencias IEEECS". 2019 6th IEEE International Conference on Cyber ​​Security and Cloud Computing (CSCloud)/ 2019 5th IEEE International Conference on Edge Computing and Scalable Cloud (EdgeCom) . IEEE. pp. 102–106. doi :10.1109/CSCloud/EdgeCom.2019.00-11. ISBN . 978-1-7281-1661-7.ID S2C  203655645.