¿Es la especificación de la versión de la biblioteca (pom.xml de Java, Requirements.txt de Python, etc.) fundamentalmente insegura?

2

Cada vez que veo un archivo pom.xml o requirements.txt que dice que un proyecto dado requiere una versión heredada específica de una biblioteca, me hace temblar. ¿Tengo razón cuando asumo que normalmente es inseguro especificar versiones máximas (o exactas) de una biblioteca en los requisitos del proyecto?

Lo pregunto porque creo que la popularidad de este enfoque es bastante confusa, mientras que muchos lenguajes de programación lo permiten, no puedo verlo adoptado, por ejemplo, en la mayoría de los administradores de paquetes de Linux que básicamente "obligan" a los desarrolladores para portar su software a nuevas versiones de bibliotecas.

    
pregunta d33tah 12.10.2015 - 15:36
fuente

2 respuestas

1
  

¿Tengo razón cuando asumo que generalmente es inseguro especificar las versiones máximas (o exactas) de una biblioteca en los requisitos del proyecto?

Depende.

Si el requisito se debe a un posible cambio de API en versiones posteriores, entonces este requisito tiene sentido. A menudo encontrará que las aplicaciones Java requieren una versión específica de Java ya que hay muchos cambios pequeños entre las versiones de Java que podrían (no necesariamente lo harán) romper la aplicación. A veces, el requisito solo dice con qué pila de software se probó y que no se dará soporte si se usa con otra pila de software.

Es malo e inseguro si este requisito significa que no puede actualizar la pila de software en caso de vulnerabilidades.

  

... la mayoría de los administradores de paquetes de Linux que básicamente "obligan" a los desarrolladores a migrar su software a nuevas versiones de bibliotecas.

En realidad no. La mayoría de las distribuciones de Linux no imponen la biblioteca más nueva en caso de vulnerabilidades con la versión anterior, sino que intentan llevar las correcciones de errores a la versión anterior. Solo cuando se lanza una nueva distribución, incluyen versiones más nuevas de la pila de software, pero también suelen incluir versiones más antiguas para dar al software existente las bibliotecas (más antiguas) que necesitan.

Al final, cada desarrollador solo tiene un tiempo limitado para realizar pruebas y, por lo tanto, las pruebas se realizan solo con algunas variaciones de la pila de software. Y la mayoría de los desarrolladores no tienen tiempo para adaptar y probar su software con cada nueva versión de una biblioteca o lenguaje de programación, etc.

    
respondido por el Steffen Ullrich 12.10.2015 - 17:29
fuente
0

Para Maven, puede verificar sus dependencias por problemas de seguridad con el complemento OWASP:

<

También puede decirle a maven que obtenga la última versión:

enlace

Ejemplo:

<version>[1.0.0,2.0.0)</version> //will get version up to but not including 2.0.0
    
respondido por el Neil McGuigan 12.10.2015 - 22:54
fuente

Lea otras preguntas en las etiquetas