El fragmento de código Java más utilizado en Stack Overflow contiene un error

Java

Un estudio publicado en octubre de 2018 en la revista Empirical Software Engineering por los académicos Sebastian Baltes y Stephan Diehl reveló que un fragmento de código proporcionado en respuesta a una pregunta de Stack Overflow en septiembre de 2010 por Andreas Lundblad, desarrollador de Java en Palantir, es el fragmento de código Java más utilizado en la plataforma de la comunidad.

Sin embargo, en una publicación la semana pasada, Lundblad explicó que el código era defectuoso y que estaba convirtiendo incorrectamente la cantidad de bytes en formatos legibles por humanos. El código en cuestión ha acumulado más de mil recomendaciones y también se ha incluido en muchos proyectos y se encuentra en repositorios en GitHub aproximadamente 7 mil veces.

Es de destacar que el error no fue encontrado por los usuarios que utilizaron este código en sus proyectos, sino por el autor original del consejo.

El código considerado convirtió el tamaño del byte en forma legible, por ejemplo 110592 convertido a «110.6 kB» o «108.0 KiB». El código se propuso como una variante del consejo propuesto anteriormente, optimizado utilizando logaritmos, en el que el valor se determinó dividiendo el valor inicial en un ciclo por «10 18 , 10 15 , 10 12 , 10 19 , 10 6 , 10 3 y 10 0″ , hasta mientras que el divisor es mayor que el valor original en bytes.

Debido a cálculos inexactos en la versión optimizada (desbordamiento del valor largo), el resultado del procesamiento de números muy grandes (exabytes) no se correspondía con la realidad.

Lundblad explicó que el código contenía un error de conversión trivial que solo daba como resultado estimaciones de tamaño de archivo ligeramente inexactas. Dicho esto, se estima que hubiera sido mucho peor que eso.

El código podría haber contenido una vulnerabilidad de seguridad, por ejemplo. Si ese fuera el caso, habría llevado meses o años reparar todas las aplicaciones vulnerables, lo que habría expuesto a los usuarios a ataques.

El autor del consejo también trató de llamar la atención sobre el problema de utilizar ejemplos sin referencia a la fuente y sin especificar una licencia.

«En las sesiones de colaboración que involucraron a múltiples codificadores humanos, evaluamos manualmente las vulnerabilidades de seguridad de cada fragmento de código de acuerdo con las instrucciones de CWE (Enumeración de Debilidad Común).

De los 72,483 fragmentos de código examinados utilizados en al menos un proyecto alojado en GitHub, encontramos un total de 69 fragmentos de código vulnerables clasificados en 29 tipos. Muchos de los fragmentos de código estudiados aún no están arreglados «, dijeron los investigadores en su informe.

Los 69 fragmentos de código vulnerables encontrados en Stack Overflow se reutilizaron en un total de 2859 proyectos de GitHub. Para mejorar la calidad de los fragmentos de código compartido en Stack Overflow, han desarrollado una extensión de navegador que permite a los usuarios de Stack Overflow buscar vulnerabilidades en los fragmentos cuando los descargan en la plataforma.

Sin embargo, a pesar de las advertencias de los investigadores, los desarrolladores aún copian el código Stack Overflow en sus proyectos sin realizar un análisis.

Ashkan Sami, profesor asociado de TI, ingeniería y tecnología de la información en la Universidad de Shiraz en Irán, dijo que

«La investigación fue un intento de examinar cómo migra el código defectuoso de Stack Overflow a GitHub. Básicamente, lo que hemos estado tratando de mostrar es que el uso del código Stack Overflow sin examinarlo detenidamente puede generar vulnerabilidades en las aplicaciones», dijo Sami. El estudio también se refiere a un artículo académico de 2017.

Según este artículo, 1161 fragmentos de código inseguros publicados en Stack Overflow se utilizaron en 1.3 millones de aplicaciones de Android disponibles en Google Play.

Ademas de que un estudio anterior, el 46% de los desarrolladores que utilizaron el código de StackOverflow sin especificar el autor, el 75% no sabía que el código tiene licencia de CC BY-SA y el 67% no sabía que esto implica la necesidad de atribución.

De acuerdo con los datos de otros estudios, el utilizar el código de ejemplo no sólo se asocia con el riesgo de la presencia de errores en el código, sino también las vulnerabilidades.

Por ejemplo, después de analizar 72483 ejemplos de código C ++ en StackOverflow, los investigadores identificaron vulnerabilidades graves en 69 ejemplos (que es 0.09%), incluidos en la lista de las recomendaciones más populares.

Fuente: https://programming.guide


Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.