La specifica della versione della libreria (Java pom.xml, Python's requirements.txt, ecc.) è fondamentalmente insicura?

2

Ogni volta che vedo un file pom.xml o requirements.txt che dice che un dato progetto richiede una versione legacy specifica di una libreria, mi fa rabbrividire. Ho ragione quando presumo che di solito non sia sicuro specificare le versioni massime (o esatte) di una libreria nei requisiti del progetto?

Te lo chiedo perché trovo la popolarità di tale approccio piuttosto confuso - mentre molti linguaggi di programmazione lo consentono, non riesco a vederlo adottato, ad esempio, la maggior parte dei gestori di pacchetti Linux che fondamentalmente "costringono" gli sviluppatori per portare il loro software a nuove versioni di librerie.

    
posta d33tah 12.10.2015 - 15:36
fonte

2 risposte

1

Am I right when I assume that it's usually insecure to specify maximum (or exact) versions of a library in project's requirements?

Dipende.

Se il requisito è dovuto a una possibile modifica dell'API nelle versioni successive, questo requisito ha senso. Troverete spesso che le applicazioni Java richiedono una versione specifica di Java poiché ci sono molte piccole modifiche tra la versione di Java che potrebbe (non necessariamente) interrompere l'applicazione. A volte il requisito dice solo con quale stack software è stato testato e che non verrà fornito alcun supporto se utilizzato con un altro stack software.

È brutto e insicuro se questo requisito significa che non è possibile aggiornare lo stack del software in caso di vulnerabilità.

... most Linux package managers that basically "force" developers to port their software to new versions of libraries.

Non proprio. La maggior parte delle distribuzioni Linux non impone la nuova libreria in caso di vulnerabilità con la versione precedente, ma invece tenta di riportare le correzioni dei bug alla versione precedente. Solo quando vengono rilasciate nuove distribuzioni includono versioni più recenti dello stack software, ma spesso includono anche versioni precedenti per fornire al software esistente le (più vecchie) librerie di cui hanno bisogno.

Alla fine ogni sviluppatore ha solo un tempo limitato per testare e quindi il test viene eseguito solo con alcune variazioni dello stack del software. E la maggior parte degli sviluppatori non ha il tempo di adattare e testare il proprio software con ogni nuova versione di una libreria o di un linguaggio di programmazione ecc.

    
risposta data 12.10.2015 - 17:29
fonte
0

Per Maven, puoi verificare le tue dipendenze per problemi di sicurezza con il plugin OWASP:

link

Puoi anche dire a maven di ottenere l'ultima versione:

link

Esempio:

<version>[1.0.0,2.0.0)</version> //will get version up to but not including 2.0.0
    
risposta data 12.10.2015 - 22:54
fonte

Leggi altre domande sui tag