Los autores: Wachiraphan Charoenwet Patanamon Thongtanunam Van-Thuan Pham Christoph Treude Los autores: Lugares de Wachiraphan Charoenwet Patanamon Thongtanunam Van-Thuan Pham Christoph Treude Table of links Mesa de la izquierda Abstract Abstracción 1 Introduction 1 Introducción 2 Background and Related Work 2 Contexto y trabajo relacionado Software Seguridad Codificación de debilidades Seguridad Shift-Left Revisión del Código Moderno Revisión del código para la seguridad del software Proceso de manejo de preocupaciones de seguridad en la revisión del código 3 Motivating Examples 3 Ejemplos motivadores 4 Case Study Design 4 Estudios de caso de diseño Preguntas de investigación Proyectos estudiados Recopilación de datos Taxonomía de la debilidad Estudio de visión general Enfoque de Identificación de Preocupaciones de Seguridad (RQ1) Análisis de Alineación de Vulnerabilidades Conocidas (RQ2) Identificación de procesos de manejo (RQ3) 5 Preliminary Analysis 5 Análisis preliminar PA1: Prevalencia de los comentarios de debilidad de codificación PA2: Evaluación preliminar de nuestro enfoque de identificación de preocupaciones de seguridad 6 Case Study Results 6 Resultados de estudios de caso 7 Discussion 7 Discusión 8 Threats to Validity 8 Amenazas a la validez Validez interna Construir la validez Validez externa Abstract Abstracción Sin embargo, se recomienda identificar los problemas de seguridad temprano para reducir los impactos negativos latentes en los sistemas de software. La revisión de código es un método ampliamente utilizado que permite a los desarrolladores inspeccionar manualmente el código modificado, capturando los problemas de seguridad durante un ciclo de desarrollo de software. Sin embargo, los estudios de revisión de código existentes a menudo se centran en las vulnerabilidades conocidas, descuidando las debilidades de codificación, que pueden introducir problemas de seguridad en el mundo real que son más visibles a través de la revisión de código. Las prácticas de revisión de código en la identificación de tales debilidades de codificación aún no están completamente investigadas. Para comprender mejor esto, hemos llevado a cabo un estudio de caso empírico en dos grandes proyectos de código abierto, OpenSSL y PHP. Sobre la base 1 Introduction La seguridad del software es un enfoque importante en los procesos de desarrollo de software porque abarca cómo el sistema de software sostiene las amenazas externas (McGraw, 2004). La gestión de los problemas de seguridad en los productos de software es crucial porque los problemas de seguridad latentes, especialmente las vulnerabilidades explotables, pueden afectar exponencialmente a los usuarios finales y requieren más recursos para resolver si se descubren en una etapa posterior. Tratando de mitigar los problemas de seguridad, los desarrolladores son alentados por el concepto de cambio-izquierda en curso (Migues, 2021; Weir et al., 2022) para probar el nuevo software lo antes posible. En el espíritu de desplazarse a la izquierda, muchas organizaciones han adoptado una revisión de código moderna, una actividad de garantía de calidad de software para identificar y eliminar defectos de software a principios del ciclo Varios estudios han investigado los beneficios de las revisiones de código en la identificación de problemas de seguridad (Alfadel et al., 2023; Bosu et al., 2014; Di Biase et al., 2016; Edmundson et al., 2013; Paul et al., 2021b). Aún así, los problemas de seguridad estudiados por trabajos anteriores estaban limitados por los tipos de vulnerabilidades conocidas como SQL Injection y XSS. En particular, la mayoría de los problemas de seguridad estudiados se limitan a las vulnerabilidades que los atacantes pueden explotar. Dado que la revisión de código se centra en identificar y mitigar los problemas de codificación, hipotetizamos que las debilidades de codificación, o fallas en el código, que pueden potencialmente conducir a problemas de seguridad también pueden ser encontrados y mitigados durante el proceso de revisión de código. Además Esto incluye los tipos de debilidades de codificación que conducen a problemas de seguridad y el proceso de manejo de estas debilidades de codificación. Además, poco se sabe sobre si las preocupaciones de seguridad planteadas durante las revisiones de código están alineadas con las vulnerabilidades que un sistema puede haber tenido en el pasado. Explorar estos aspectos nos ayudaría a comprender mejor los beneficios no realizados de considerar debilidades de codificación durante las revisiones de código para la prevención temprana de problemas de seguridad de software. Tal visión también puede revelar las brechas entre la práctica actual de revisión de código y las vulnerabilidades que eran conocidas en los respectivos sistemas. Por un lado, los equipos de software podrían desarrollar políticas de revisión de código seguro que les permitan identificar y abordar más eficazmente las preocupaciones de seguridad durante el proceso de revisión de código (Mant En este trabajo, buscamos investigar las debilidades de codificación que se levantaron durante la revisión del código y investigar cómo se gestionaron los comentarios de la revisión del código que mencionaron las debilidades de codificación. Hemos llevado a cabo nuestro estudio de caso sobre OpenSSL y PHP, que son grandes sistemas de código abierto que son propensos a problemas de seguridad. Hemos elegido examinar estos fenómenos en proyectos de código abierto debido a la disponibilidad de conjuntos de datos accesibles al público, la política de revisión de código obligatoria y las vulnerabilidades pasadas de los proyectos seleccionados. Esta decisión también proviene de la observación de que los resultados de la revisión del código en comunidades de código abierto, como la relación entre los defectos funcionales y los defectos de mantenimiento identificados por los revisores, no difieren significativamente de los Por lo tanto, hemos llevado a cabo un estudio empírico para abordar tres preguntas de investigación: (RQ1) ¿Qué tipos de preocupaciones de seguridad relacionadas con las debilidades de codificación se plantean a menudo en la revisión de código?, (RQ2) ¿Cómo se alinean las preocupaciones de seguridad elevadas y las debilidades conocidas?, y (RQ3) ¿Cómo se manejan las de seguridad en la revisión de código?. Para ello, aplicamos un enfoque semiautomático a los comentarios de revisión de código 135,560 para identificar las categorías de comentarios de revisión de código que se relacionan con las debilidades de codificación. Luego, analizamos manualmente los tipos de debilidades de codificación para los comentarios de revisión de código 6,146 relacionados con las debilidades de codificación. Utilizamos la taxonomía de Los resultados de los estudios de caso muestran que las debilidades de codificación relacionadas con 35 de las 40 categorías en CWE-699 fueron planteadas durante el proceso de revisión del código de OpenSSL y PHP (RQ1). Por ejemplo, los comentarios sobre las debilidades de codificación en la autenticación, el privilegio y la API fueron frecuentemente planteados en ambos proyectos estudiados. Cada proyecto estudiado también tiene debilidades de codificación únicas planteadas durante la revisión del código, por ejemplo, las amenazas de seguridad directas en OpenSSL y la validación de datos de entrada en PHP. Estos resultados indican que varias debilidades de codificación que se relacionan con problemas de seguridad se plantearon durante el proceso de revisión del código, y los diferentes proyectos de software tienen debilidades de codificación focalizadas diferentes. Las debilidades conoc En muchos casos (39%-41%), los desarrolladores intentaron resolver los problemas. Sin embargo, aproximadamente un tercio (30%-36%) de las debilidades de codificación levantadas sólo fueron reconocidas sin correcciones inmediatas (es decir, sin modificaciones adicionales al código en las revisiones). Observamos que algunas de las preocupaciones reconocidas se acordaron para ser fijadas en nuevos cambios de código separados (10%-18%) y algunas se dejaron sin corregir debido al desacuerdo sobre la solución adecuada (18%-20%). Una proporción relativamente pequeña de las preocupaciones levantadas (14%-26%) se aclararon y rechazaron a través de la discusión. De todos los escenarios, encontramos casos alarmantes (6-9%%) en los que se pueden introducir problemas de seguridad en el código porque los cambios de código con discusión no resuelta finalmente se combinaron. Además, Basándose en los hallazgos, recomendamos que los proyectos de software consideren las categorías de debilidad de codificación (es decir, CWE-699) como una guía para identificar debilidades de codificación que pueden introducir problemas de seguridad en las revisiones de código. Las debilidades de codificación pueden priorizarse basándose en la importancia, la predisposición y el conjunto único de debilidades de codificación planteadas en las revisiones pasadas de código. Nuestro trabajo también destaca una deficiencia del proceso de revisión de código en el manejo de preocupaciones de seguridad (es decir, fijas, discusiones no resueltas y no resueltas) que podrían requerir un trabajo futuro para abordar. A lo mejor de nuestro conocimiento, este artículo es el primero en investigar empíricamente la revisión del código en la identificación y mitigación de debilidades de codificación que se relacionan con problemas de seguridad además de las vulnerabilidades bien conocidas, destacando los beneficios potenciales de la revisión del código para la prevención temprana de posibles problemas de seguridad. En segundo lugar, presentamos un nuevo enfoque semiautomático que aprovecha un modelo de incorporación de palabras pre-entrenado específico de dominio para encontrar posibles comentarios de revisión de código relacionados con problemas de seguridad. En tercer lugar, examinamos el alineamiento entre las vulnerabilidades conocidas en los sistemas estudiados y las debilidades de codificación que a menudo se plantean durante el proceso de revisión de código, destacando una deficiencia de las prácticas actuales de revisión de código que algunas de Novelty & Contributions: Hemos publicado el material complementario1 de scripts para la recuperación de datos y el análisis de datos en este estudio junto con los datos anotados para facilitar la investigación adicional. Data Availability: La sección 2 describe el contexto y explora el trabajo relacionado. la sección 3 muestra ejemplos de vulnerabilidades causadas por deficiencias de codificación. la sección 4 explica el diseño del estudio de caso. la sección 5 explica el método de análisis inicial y el resultado. la sección 6 informa de los resultados. la sección 7 discute las implicaciones y sugerencias. la sección 8 aclara las amenazas que pueden afectar a la validez de este estudio. Paper Organization: Este artículo está disponible en archivo bajo la licencia CC by 4.0 Deed (Attribution 4.0 International). Este documento es Con la licencia CC 4.0 Deed (Attribution 4.0 International). available on arxiv Disponible en Archivo