Il CVE conta un buon indicatore della sicurezza di un software?

40

Guardando il conteggio dei rapporti CVE per prodotto , sono tentato di utilizzalo come indicatore dei programmi più sicuri e scegli quelli che installo di conseguenza.

Ma mi chiedo se questi numeri siano fuorvianti. Ad esempio, il kernel di Linux è il secondo nella lista e Windows 10 non è nemmeno menzionato. Suppongo che sia in parte dovuto alla natura open source di Linux, che rende più semplice e veloce trovare e correggere i difetti, aumentando il numero di CVE.

Un'altra cosa che trovo interessante è che, sebbene Chrome abbia più vulnerabilità elencate nel 2016 rispetto a Firefox, ci sono molti più difetti di esecuzione del codice in Firefox, mentre una parte importante dei difetti di Chrome sono gli attacchi DoS, che sono molto meno severi .

Possiamo dire che un software è "più sicuro" di un altro, in base al numero di CVE che questi software hanno?

    
posta Arno 03.01.2017 - 15:35
fonte

4 risposte

67

Can we say that a software is "more secure" than another, based on the number of CVEs these softwares have?

No. Le voci CVE non sono una buona fonte per classificare i prodotti in base alla loro "sicurezza generale".

L'idea principale del sistema CVE è quella di creare identificatori univoci per le vulnerabilità del software. Non è progettato per essere un database completo e verificato di tutte le vulnerabilità conosciute in qualsiasi prodotto. Cioè, un venditore o un ricercatore potrebbe semplicemente decidere di non richiedere un numero CVE per un dato difetto. Inoltre, le voci combinano talvolta bug correlati sotto un singolo ID o non rivelare l'esatto impatto, rendendo un semplice "conteggio dei bug" un criterio di sicurezza piuttosto insignificante. Inoltre, per una classifica dovresti trovare metriche sensibili per confrontare le diverse gravità. (Quanti bug di DoS equivalgono all'esecuzione di un codice remoto ...?)

Detto questo, i CVE ti danno sicuramente un'idea di che tipo di vulnerabilità sono state trovate in un prodotto e sono un buon punto di partenza per la ricerca. Ma la quantità dipende strongmente dall'età del software e da quanta attenzione riceve attraverso il controllo di sicurezza. Non si può davvero ragionare se un sacco di incarichi CVE significa che il software è scritto male o se in realtà significa che è particolarmente sicuro perché evidentemente molte vulnerabilità vengono sistemate. Personalmente tendo a trovarlo sospetto se un prodotto precedente ha un record molto breve di vulnerabilità patchate perché quel potrebbe indicare che non è stato controllato a fondo.

Quindi dovresti pensare a CVE come un dizionario piuttosto che a un database che semplicemente assegna maniglie alle vulnerabilità in modo che tu puoi fare riferimento a loro più facilmente: non usarlo come strumento per confrontare la sicurezza.

Ecco alcuni indicatori migliori per un prodotto sicuro:

  • Il software viene utilizzato e sviluppato attivamente.
  • Il venditore incoraggia le persone a cercare le vulnerabilità (e forse persino le offerte di taglie).
  • I nuovi bug di sicurezza vengono elaborati e rattoppati rapidamente.
risposta data 03.01.2017 - 15:58
fonte
6

Come sistema volontario, CVE è aperto all'abuso come i prodotti software che tiene traccia ed è spesso altamente soggettivo. Ciò è in qualche modo aggravato dal meccanismo di punteggio utilizzato per tracciare la gravità che è in genere CVSSv2.

In un mondo ideale, quando una vulnerabilità viene scoperta in un prodotto, gli sviluppatori registreranno un CVE, pubblicandolo successivamente insieme a qualsiasi correzione che hanno prodotto per il loro prodotto.

Tuttavia, come altri hanno sottolineato, a volte i CVE non sono stati creati o gli sviluppatori avranno un sacco di vulnerabilità, tagliano un rilascio che li risolve tutti e creano sul CVE di accompagnamento.

Se sono interessato all'utilizzo di un determinato prodotto software e ho delle riserve sulla sicurezza, sono più propensi a dare un'occhiata a come gestiscono i problemi di sicurezza, a ricevere i report ecc. che a esaminare in modo specifico il loro database CVE. / p>

Un'eccezione a quanto sopra sono i prodotti software che utilizzano altri componenti, in questi casi, dare un'occhiata al tempo impiegato da un prodotto per raggiungere i CVE emessi nei confronti dei suoi prodotti / servizi costitutivi può essere illuminante. Il software commerciale che reimpiega i componenti open-source può spesso ritardare di molti mesi le correzioni sulla sicurezza. Questa è probabilmente la cosa più utile per il database CVE.

    
risposta data 03.01.2017 - 18:13
fonte
4

CVE rappresenta solo gli errori sulle applicazioni che le persone stanno attivamente cercando di sfruttare. Sebbene l'open source possa o meno essere soggetto a un volume più elevato o inferiore di CVE, si può presumere ragionevolmente che ciò non implichi alcuna applicazione più o meno incline allo sfruttamento. Considerare molti exploit / vulnerabilità sono spesso venduti come 0 giorni prima di essere considerati come una voce CVE. Considera inoltre che molte persone nella comunità open source tendono più verso una divulgazione ragionevole che verso il profitto. In ogni caso, vorrei misurare la vulnerabilità di due applicazioni basate su un paio di parametri:

  1. Quanto sono gravi gli exploit degli impatti del passato?
  2. Volume dei CVE: come hai inteso, più CVE probabilmente implica che l'applicazione venga verificata più frequentemente dalla ricerca sulla sicurezza.

  3. Open source: personalmente considero l'open source "generalmente" più sicuro. Visualizza il codice sorgente per te stesso e osserva lo stile di codifica. Forse puoi trovare una vulnerabilità tu stesso.

risposta data 03.01.2017 - 18:02
fonte
3

Forse leggermente, ma la relazione tra i conteggi e la qualità è complessa se del tutto significativa. Le domande utili da porre in merito ai conteggi CVE e alle loro implicazioni su un pezzo di sicurezza / qualità del software sono:

  • Ha qualche CVE? In caso contrario, questo probabilmente significa che a nessuno importa abbastanza per cercare bug di sicurezza (cioè bassa rilevanza, non alta qualità).

  • Ha ripetuto CVE per gli stessi tipi di bug anno dopo anno? Se è così, ciò significa che gli sviluppatori / manutentori probabilmente stanno facendo al massimo il minimo necessario per correggere un bug specifico piuttosto che correggere il loro codebase nel suo complesso e correggere i processi che hanno portato al bug.

  • I CVE sono paragonabili ai CVE per altri programmi simili negli stessi anni e sono persino ragionevoli per gli anni in cui sono stati trovati? Ad esempio, per la maggior parte delle lingue utilizzate per le applicazioni Web, l'esistenza di eventuali bug di SQL-injection indica che API / framework completamente errati / a ritroso vengono utilizzati (vale a dire quelli vecchi senza istruzioni preparate). Per i programmi C, tuttavia, è molto più difficile giudicare; È improbabile che i riassunti CVE ti dicano se un bug era sottile (e quindi "ragionevole" apparire) o proveniva da qualcosa di idiota e contrario alle pratiche moderne.

E così via. La maggior parte di queste domande dipende da più di un semplice conteggio (anche se alcuni potrebbero essere modellati come "conteggi in varie classi"), quindi sono scettico sul fatto che i conteggi abbiano molto valore.

    
risposta data 04.01.2017 - 04:52
fonte

Leggi altre domande sui tag