Identificazione dei report sui bug di sicurezza in base ai titoli dei report e ai dati rumorosi

Mayana Pereira Scott Christiansen
Data Science CELA Sicurezza e attendibilità dei clienti
Microsoft Microsoft

Abstract - L'identificazione dei report sui bug di sicurezza è un passaggio fondamentale nel ciclo di vita dello sviluppo del software. Negli approcci basati su apprendimento automatico con supervisione, si presuppone in genere che i report sui bug siano disponibili per il training e che le etichette siano prive di disturbo. A quanto ci risulta, questo è il primo studio a dimostrare che per i report sui bug di sicurezza è possibile eseguire una previsione accurata dell'etichetta anche quando è disponibile solo il titolo e in presenza di disturbo.

Termini per gli indici - Apprendimento automatico, errori di etichettatura, disturbo, report dei bug di sicurezza, repository di bug

I. INTRODUZIONE

L'identificazione dei problemi relativi alla sicurezza tra i bug segnalati è una necessità urgente tra i team di sviluppo software poiché tali problemi richiedono correzioni più rapide al fine di soddisfare i requisiti di conformità e di garantire l'integrità del software e dei dati dei clienti.

Gli strumenti di apprendimento automatico e di intelligenza artificiale promettono di aumentare velocità, agilità e correttezza dello sviluppo del software. Molti ricercatori hanno applicato l'apprendimento automatico al problema dell'identificazione dei bug di sicurezza [2], [7], [8], [18]. Negli studi pubblicati in precedenza si presuppone che l'intero report sui bug sia disponibile per il training e per l'assegnazione di punteggi a un modello di apprendimento automatico. Questo non è necessariamente il caso. In alcune situazioni non è possibile rendere disponibile l'intero report sui bug. Il report sui bug, ad esempio, potrebbe contenere password, informazioni personali (PII) o altri tipi di dati sensibili, un caso che stiamo attualmente affrontando in Microsoft. È quindi importante stabilire in che modo sia possibile eseguire l'identificazione dei bug di sicurezza usando un numero minore di informazioni, ad esempio quando è disponibile solo il titolo del report sui bug.

I repository di bug contengono spesso anche voci senza etichetta [7], ovvero report sui bug non di sicurezza classificati come correlati alla sicurezza e viceversa. I motivi per cui si verificano errori di etichettatura sono diversi, a partire dalla mancanza di competenze del team di sviluppo in termini di sicurezza, fino alla confusione di determinati problemi, ad esempio è possibile che i bug non correlati alla sicurezza vengano sfruttati in modo indiretto fino a provocare conseguenze sulla sicurezza. Si tratta di un problema grave poiché l'erronea etichettatura dei report sui bug di sicurezza determina la necessità, da parte degli esperti in materia, di rivedere manualmente il database dei bug con attività costose e dispendiose in termini di tempo. Comprendere il modo in cui il disturbo influisce su classificatori differenti e come siano robuste (o fragili) tecniche di apprendimento automatico diverse in presenza di insiemi di dati contaminati da tipi di disturbo distinti è un problema da affrontare al fine di trasferire la classificazione automatica alla pratica dell'ingegneria del software.

Il lavoro preliminare sostiene che ai repository di bug sia intrinsecamente associato un disturbo, che potrebbe avere un effetto negativo sui classificatori di apprendimento automatico per le prestazioni [7]. Manca tuttavia un qualsiasi studio sistematico e quantitativo su come diversi livelli e tipi di disturbo influenzino le prestazioni di differenti algoritmi di apprendimento automatico supervisionato per il problema dell'identificazione dei report sui bug di sicurezza.

Questo studio illustra che la classificazione dei report sui bug può essere eseguita anche quando il titolo è disponibile solo per il training e per l'assegnazione dei punteggi. A quanto ci risulta, questo è realmente il primo lavoro a dimostrarlo. Si tratta anche del primo studio sistematico dell'effetto del disturbo nella classificazione dei report sui bug. Viene effettuato uno studio comparativo della solidità di tre tecniche di apprendimento automatico (regressione logistica, Naive Bayes e AdaBoost) rispetto al disturbo indipendente dalla classe.

Sebbene esistano alcuni modelli analitici che acquisiscono l'influenza generale del disturbo per alcuni semplici classificatori [5], [6], questi risultati non indicano limiti stretti sull'effetto del disturbo sulla precisione e sono validi solo per una particolare tecnica di apprendimento automatico. Un'analisi accurata dell'effetto del disturbo nei modelli di apprendimento automatico viene in genere eseguita tramite esperimenti computazionali. Tali analisi sono state eseguite per diversi scenari, tra cui dati di misurazione software [4], la classificazione di immagini satellite [13] e dati medici [12]. Questi risultati, tuttavia, non possono essere convertiti in un problema specifico, a causa dell'elevata dipendenza dalla natura dei set di dati e del problema di classificazione sottostante. A quanto ci risulta, non sono stati pubblicati risultati sul problema dell'effetto dei set di dati di disturbo sulla classificazione dei report sui bug di sicurezza in particolare.

I NOSTRI CONTRIBUTI ALLA RICERCA

  • I classificatori vengono sottoposti a training per l'identificazione dei report sui bug di sicurezza esclusivamente in base al titolo dei report. A quanto ci risulta, questo è il primo lavoro a dimostrarlo. Nei lavori precedenti è stato usato il report completo sui bug oppure è stato migliorato il report sui bug con funzionalità complementari aggiuntive. La classificazione dei bug basati esclusivamente sul titolo è particolarmente importante quando non è possibile rendere disponibili i report sui bug completi a causa di problemi di privacy. Si noti, ad esempio, il caso di report sui bug che contengono password e altri dati sensibili.

  • Offriamo anche il primo studio sistematico della tolleranza al disturbo delle etichette dei diversi modelli e tecniche di apprendimento automatico usati per la classificazione automatica dei report dei bug di sicurezza. Viene effettuato uno studio comparativo della solidità di tre tecniche di apprendimento automatico differenti (regressione logistica, Naive Bayes e AdaBoost) rispetto al disturbo dipendente e indipendente dalla classe.

Il resto del documento è presentato come segue: nella sezione II sono presenti alcune delle opere precedenti della letteratura. mentre nella sezione III vengono descritti il set di dati e il modo in cui i dati vengono pre-elaborati. La metodologia è descritta nella sezione IV e i risultati degli esperimenti sono analizzati nella sezione V. Le conclusioni e i lavori futuri sono infine presentati nella sezione VI.

II. LAVORI PRECEDENTI

APPLICAZIONI DI APPRENDIMENTO AUTOMATICO PER I REPOSITORY DI BUG.

Esiste una documentazione estesa per l'applicazione del text mining, l'elaborazione del linguaggio naturale e l'apprendimento automatico nei repository di bug nel tentativo di automatizzare le attività laboriose, ad esempio il rilevamento dei bug di sicurezza [2], [7], [8], [18], l'identificazione dei bug duplicati [3] e la valutazione dei bug [1], [11], per citare alcune applicazioni. Idealmente, la combinazione di apprendimento automatico ed elaborazione del linguaggio naturale riduce potenzialmente il lavoro manuale necessario per gestire i database di bug, abbreviare il tempo necessario per eseguire queste attività e aumentare l'affidabilità dei risultati.

In [7] gli autori propongono un modello di linguaggio naturale per automatizzare la classificazione di report sui bug di sicurezza in base alla descrizione del bug. Gli autori estraggono un vocabolario da tutta la descrizione del bug nel set di dati di training e lo predispongono manualmente in tre elenchi di parole, ovvero parole rilevanti, parole non significative (parole comuni che sembrano irrilevanti per la classificazione) e sinonimi. Confrontano quindi le prestazioni del classificatore dei bug di sicurezza sottoposto a training sui dati valutati dai tecnici della sicurezza e di un classificatore sottoposto a training sui dati etichettati in generale dai segnalatori di bug. Sebbene il modello sia chiaramente più efficace se sottoposto a training sui dati esaminati dai tecnici della sicurezza, il modello proposto si basa su un vocabolario derivato manualmente, che lo rende dipendente dall'intervento umano. Non vengono inoltre analizzati il modo in cui i diversi livelli di disturbo influiscono sul modello e quello in cui i diversi classificatori rispondono al disturbo né viene esaminato se il disturbo in entrambe le classi influisce in modo diverso sulle prestazioni.

Zou et. al [18] utilizza più tipi di informazioni contenute in un report di bug che coinvolgono i campi non testuali di un report di bug (funzionalità meta, ad esempio tempo, gravità e priorità) e il contenuto testuale di un report di bug (funzionalità testuali, ovvero il testo nei campi di riepilogo). In base a tali funzionalità, gli autori creano un modello per identificare automaticamente i report sui bug di sicurezza tramite le tecniche di elaborazione del linguaggio naturale e di apprendimento automatico. In [8] gli autori eseguono un'analisi simile, ma confrontano anche le prestazioni delle tecniche di apprendimento automatico supervisionato e non supervisionato e analizzano la quantità di dati necessaria per eseguire il training dei modelli.

In [2] gli autori esplorano anche diverse tecniche di apprendimento automatico per classificare i bug come report sui bug di sicurezza e non di sicurezza in base alle descrizioni. Viene proposta una pipeline per l'elaborazione dei dati e il training del modello in base all'algoritmo TF-IDF (Term Frequency-Inverse Document Frequency). Tale pipeline viene confrontata con un modello basato su un insieme di parole e Naive Bayes. Wijayasekara et al. [16] hanno anche usato tecniche di text mining per generare il vettore di funzionalità di ogni report sui bug in base alle parole frequenti per identificare i bug con impatto nascosto. Yang et al. [17] hanno affermato di identificare i report sui bug con impatto elevato (ad esempio report sui bug di sicurezza) con il supporto della funzione TF (Term Frequency) e di Naive Bayes. In [9] gli autori propongono un modello per prevedere la gravità di un bug.

DISTURBO DI ETICHETTA

Il problema della gestione dei set di dati con disturbo di etichetta è stato ampiamente studiato. Frenay and Verleysen propongono una tassonomia del disturbo di etichetta in [6], per distinguere i diversi tipi di etichette con disturbo. Gli autori propongono tre tipi diversi di disturbo, ovvero il disturbo di etichetta che si verifica indipendentemente dalla classe reale e dai valori delle funzionalità dell'istanza, il disturbo che dipende solo dall'etichetta reale e quello in cui la probabilità di etichettatura errata dipende anche dai valori della funzionalità. Nel nostro lavoro studiamo i primi due tipi di disturbo. Da un punto di vista teorico, il disturbo di etichetta in genere riduce le prestazioni di un modello [10], ad eccezione di alcuni casi specifici [14]. In generale, i metodi affidabili si basano sull'elusione dell'overfitting per gestire il disturbo di etichetta [15]. Lo studio degli effetti del disturbo nella classificazione è stato eseguito prima in molte aree, ad esempio la classificazione delle immagini satellitari [13], la classificazione della qualità del software [4] e la classificazione dei domini medici [12]. A quanto ci risulta, non sono disponibili lavori pubblicati che studiano la quantificazione precisa degli effetti delle etichette con disturbo nel problema della classificazione dei bug sui report di sicurezza. In questo scenario non è stata stabilita la relazione precisa tra i livelli di disturbo, i tipi di disturbo e la riduzione delle prestazioni. Vale la pena anche capire il comportamento dei diversi classificatori in presenza di disturbo. Più in generale, non siamo a conoscenza di alcun lavoro che studi sistematicamente l'effetto dei set di dati di disturbo sulle prestazioni di diversi algoritmi di apprendimento automatico nel contesto dei report sui bug software.

III. DESCRIZIOE DEL SET DI DATI

Il set di dati usato è costituito da 1.073.149 titoli di bug, 552.073 dei quali corrispondono ai report sui bug di sicurezza e 521.076 a report sui bug di non sicurezza. I dati sono stati raccolti da diversi team di Microsoft negli anni 2015, 2016, 2017 e 2018. Tutte le etichette sono state ottenute da sistemi di verifica dei bug basati su firma o con etichetta umana. I titoli dei bug nel set di dati sono testi molto brevi, che contengono circa 10 parole, con una panoramica del problema.

R. Pre-elaborazione dei dati. Analizziamo ogni titolo di bug in base ai relativi spazi vuoti, ottenendo un elenco di token. Ogni elenco di token viene quindi elaborato come segue:

  • Rimozione di tutti i token che sono percorsi di file

  • Divisione dei token in cui sono presenti i simboli { , (, ), -, }, {, [, ], }

  • Rimozione delle parole non significative, dei token composti solo da caratteri numerici e di quelli presenti meno di 5 volte nell'intero corpus.

IV. METODOLOGIA

Il processo di training dei modelli di apprendimento automatico è costituito da due passaggi principali, ovvero la codifica dei dati in vettori di funzionalità e il training di classificatori di apprendimento automatico con supervisione.

R. Vettori di funzionalità e tecniche di apprendimento automatico

La prima parte prevede la codifica dei dati in vettori di funzionalità usando l'algoritmo TF-IDF (Term Frequency-Inverse Document Frequency), come usato in [2]. TF-IDF è una tecnica di recupero delle informazioni che pesa una frequenza dei termini (TF) e la relativa frequenza inversa del documento (IDF). A ogni parola o termine è associato il rispettivo punteggio TF e IDF. L'algoritmo TF-IDF assegna la priorità a tale parola in base al numero di volte in cui è presente nel documento e, aspetto più importante, verifica quanto sia rilevante la parola chiave nell'intera raccolta di titoli nel set di dati. Abbiamo eseguito il training di tre tecniche di classificazione, ovvero Naive Bayes (NB), alberi delle decisioni con boosting (AdaBoost) e regressione logistica (LR). Queste tecniche sono state scelte perché hanno dimostrato ottime prestazioni per l'attività correlata di identificazione dei report sui bug di sicurezza in base all'intero report presente nella documentazione. Tali risultati sono stati confermati in un'analisi preliminare, in cui questi tre classificatori hanno ottenuto prestazioni migliori rispetto a macchine vettoriali di supporto e foreste casuali. Negli esperimenti viene usata la libreria scikit-learn per la codifica e il training del modello.

B. Tipi di disturbo

Il disturbo studiato in questo lavoro si riferisce al disturbo nell'etichetta della classe nei dati di training. In presenza di tale disturbo, di conseguenza, il processo di apprendimento e il modello risultante sono compromessi da esempi con etichette errate. Analizziamo l'effetto dei diversi livelli di disturbo applicati alle informazioni sulla classe. I tipi di disturbo di etichetta sono stati descritti in precedenza nella letteratura usando vari termini. Nel nostro lavoro analizziamo gli effetti di due diversi disturbi di etichetta nei classificatori, ovvero il disturbo di etichetta indipendente dalla classe, introdotto selezionando le istanze in modo casuale e invertendo l'etichetta, e il disturbo dipendente dalla classe, in cui le classi hanno probabilità diverse di presentare dati di disturbo.

a) Rumore indipendente dalla classe: il rumore indipendente dalla classe si riferisce al rumore che si verifica indipendentemente dalla vera classe delle istanze. In questo tipo di disturbo la probabilità di etichette errate pbr è la stessa per tutte le istanze nel set di dati. Introduciamo un disturbo indipendente dalla classe nei set di dati invertendo ogni etichetta del set in modo casuale con la probabilità pbr.

b) Rumore dipendente dalla classe: il rumore dipendente dalla classe si riferisce al rumore che dipende dalla vera classe delle istanze. In questo tipo di disturbo la probabilità di etichette errate nei report sui bug di sicurezza della classe è psbr, mentre quella per i report sui bug non di sicurezza della classe è pnsbr. Introduciamo un disturbo dipendente dalla classe nel set di dati invertendo ogni voce del set per cui quale la vera etichetta è report sui bug di sicurezza con probabilità psbr. In modo analogo, l'etichetta della classe delle istanze dei report sui bug non di sicurezza viene invertita con probabilità pnsbr.

c) Rumore a classe singola: il rumore a classe singola è un caso speciale di rumore dipendente dalla classe, dove pnsbr = 0 e psbr> 0. Si noti che il disturbo indipendente dalla classe si ha: psbr = pnsbr = pbr.

C. Generazione del disturbo

Gli esperimenti esaminano l'impatti di diversi tipi e livelli di disturbo nel training dei classificatori di report sui bug di sicurezza. Negli esperimenti è stato impostato il 25% del set di dati come dati di test, il 10% come dati di convalida e il 65% come dati di training.

Aggiungiamo disturbo ai set di dati di training e di convalida per i diversi livelli di pbr, psbr e pnsbr . Non apportiamo alcuna modifica al set di dati di test. I diversi livelli di rumore usati sono P = {0,05 × i|0 < i < 10}.

Negli esperimenti con disturbo indipendente dalla classe, per pbr ∈ P vengono eseguite queste operazioni:

  • Generazione di disturbo per i set di dati di training e di convalida

  • Training dei modelli di regressione logistica, Naive Bayes e AdaBoost tramite set di dati di training (con disturbo), * ottimizzazione di modelli tramite set di dati di convalida (con disturbo)

  • Test di modelli tramite set di dati di test (senza disturbo).

Negli esperimenti con disturbo dipendente dalla classe, per psbr ∈ P e pnsbr ∈ P le operazioni sono le seguenti per tutte le combinazioni di psbr e pnsbr:

  • Generazione di disturbo per i set di dati di training e di convalida

  • Training dei modelli di regressione logistica, Naive Bayes e AdaBoost tramite set di dati di training (con disturbo)

  • Ottimizzazione di modelli tramite il set di dati di convalida (con disturbo)

  • Test di modelli tramite set di dati di test (senza disturbo).

V. RISULTATI SPERIMENTALI

In questa sezione vengono analizzati i risultati degli esperimenti eseguiti in base alla metodologia descritta nella sezione IV.

a) Prestazioni del modello senza rumore nel set di dati di training: uno dei contributi di questo documento è la proposta di un modello di Machine Learning per identificare i bug di sicurezza usando solo il titolo del bug come dati per il processo decisionale. In questo modo è possibile eseguire il training dei modelli di apprendimento automatico anche quando i team di sviluppo non desiderano condividere i report sui bug in modo completo a causa della presenza di dati sensibili. Vengono confrontate le prestazioni di tre modelli di apprendimento automatico quando vengono sottoposti a training usando solo titoli di bug.

Il modello di regressione logistica è il classificatore con le prestazioni migliori. Si tratta del classificatore con il valore di area sotto la curva più alto, pari a 0,9826, e richiamo pari a 0,9353 per una percentuale di falsi positivi pari a 0,0735. Il classificatore Naive Bayes presenta prestazioni leggermente inferiori rispetto a quello di regressione logistica, con un valore di area sotto la curva pari a 0,9779 e un richiamo di 0,9189 per una percentuale di falsi positivi pari a 0,0769. Il classificatore AdaBoost ha prestazioni inferiori rispetto ai due classificatori indicati in precedenza, ottenendo un valore di area sotto la curva pari a 0,9143 e un richiamo pari a 0,7018 per una percentuale di falsi positivi pari a 0,0774. L'area sotto la curva ROC (AUC) è una buona metrica per confrontare le prestazioni di diversi modelli, come riepiloga in un singolo valore della relazione TPR e FPR. Nell'analisi successiva limiteremo l'analisi comparativa dei valori di area sotto la curva.

Tabella I

R. Disturbo della classe: classe singola

Si può immaginare uno scenario in cui tutti i bug sono assegnati ai report sui bug non di sicurezza della classe per impostazione predefinita e in cui un bug verrà assegnato solo ai report sui bug di sicurezza se è presente un esperto di sicurezza che esamina il repository dei bug. Questo scenario è rappresentato nell'impostazione sperimentale a classe singola, dove si presuppone che pnsbr = 0 e 0 < psbr< 0.5.

Tabella II

Nella tabella II si osserva un effetto moto ridotto nell'area sotto la curva per tutti i tre classificatori. Il valore ROC di area sotto la curva di un modello di cui è stato eseguito il training con psbr = 0 rispetto al valore analogo di un modello in cui psbr = 0,25 differisce dello 0,003 per la regressione logistica e dello 0,006 per Naive Bayes e AdaBoost. Nel caso in cui psbr = 0,50, il valore di area sotto la curva misurato per ogni modello differisce dal modello sottoposto a training con psbr = 0 dello 0,007 per la regressione logistica, dello 0,011 per Naive Bayes e dello 0,010 per AdaBoost. Il classificatore di regressione logistica con training in presenza di un disturbo di classe singola presenta la variazione minore nella metrica di area sotto la curva, ovvero un comportamento più affidabile rispetto ai classificatori Naive Bayes e AdaBoost.

B. Disturbo di classe: indipendente dalla classe

Confrontiamo le prestazioni dei tre classificatori per il caso in cui il set di training è danneggiato da un disturbo indipendente dalla classe. Viene misurato il valore di area sotto la curva per ogni modello sottoposto a training con diversi livelli di pbr nei dati di training.

Tabella III

Nella tabella III si osserva una riduzione del valore ROC di area sotto la curva per ogni incremento del disturbo nell'esperimento. Tale valore, misurato in un modello di cui è stato eseguito il training su dati privi di disturbo rispetto a quello di un modello di cui è stato eseguito il training con disturbo indipendente dalla classe con pbr = 0,25 differisce dello 0,011 per la regressione logistica, dello 0,008 per Naive Bayes e dello 0,0038 per AdaBoost. Si osservi che il disturbo di etichetta non influisce significativamente sul valore di area sotto la curva dei classificatori Naive Bayes e AdaBoost quando i livelli di disturbo sono inferiori al 40%. D'altra parte, il classificatore di regressione logistica riscontra un effetto nella misura di area sotto la curva per i livelli di disturbo di etichetta superiori del 30%.

Variazione dell'area di controllo dell'area di

Fig. 1. Variazione del valore ROC di area sotto la curva in caso di disturbo indipendente dalla classe. Per un livello di disturbo pbr =0,5, il classificatore agisce come un classificatore casuale, a esempio con un valore di area sotto la curva pari a 0,5. Si osserva tuttavia che per i livelli di disturbo minori (pbr ≤ 0,30), il modello di apprendimento di regressione logistica offre prestazioni migliori rispetto agli altri due. Per 0,35≤ pbr ≤0,45 il modello di apprendimento Naive Bayes presenta metriche ROC di area sotto la curva migliori.

C. Disturbo di classe: dipendente dalla classe

Nel set finale di esperimenti si considera uno scenario in cui classi diverse contengono livelli di rumore diversi, ad esempio psbr ≠ p nsbr. Incrementiamo sistematicamente psbr e pnsbr in modo indipendente di 0,05 nei dati di training e osserviamo la modifica del comportamento dei tre classificatori.

Logistic RegressionNaive BayesAdaBoost

Le tabelle IV, V, VI mostrano la variazione del valore di area sotto la curva perché il disturbo viene aumentato in livelli diversi in ogni classe per la regressione logistica nella tabella IV, per Naive Bayes nella tabella V e per AdaBoost nella tabella VI. Per tutti i classificatori, si nota un impatto sulla metrica di area sotto la curva quando entrambe le classi contengono un livello di disturbo superiore al 30%. Naive Bayes si comporta con maggiore affidabilità. L'impatto sul valore di area sotto la curva è molto ridotto anche quando viene invertito il 50% dell'etichetta nella classe positiva, purché la classe negativa contenga il 30% di etichette con disturbo o meno. In questo caso, la diminuzione nel valore di area sotto la curva è pari a 0,03. AdaBoost ha presentato il comportamento più affidabile di tutti i tre classificatori. Una variazione significativa nel valore di area sotto la curva si verificherà solo per i livelli di disturbo superiori al 45% in entrambe le classi. In tal caso, si inizia a osservare una riduzione del valore di area sotto la curva maggiore di 0,02.

D. In presenza di disturbo residuo nel set di dati originale

Il set di dati è stato etichettato da sistemi automatizzati basati su firma e da esperti umani. Tutti i report sui bug sono stati ulteriormente rivisti e chiusi da esperti umani. Mentre si prevede che la quantità di disturbo nel set di dati sia minima e non statisticamente significativa, la presenza di un disturbo residuo non invalida le conclusioni. In effetti, a titolo illustrativo, si supponga che il set di dati originale sia danneggiato da un disturbo indipendente dalla classe uguale a 0 < p < 1/2 indipendente e identico (i.i.d) per ogni voce.

Se oltre al disturbo originale aggiungiamo un disturbo indipendente dalla classe con probabilità pbr indipendente e distribuita in modo identico, il disturbo risultante sarà p∗ = p(1 − pbr )+(1 − p)pbr . Per 0 < p,pbr< 1/2, abbiamo che il rumore effettivo per etichetta p∗ è strettamente maggiore del rumore aggiunto artificialmente al set di dati pbr . Le prestazioni dei classificatori sarebbero state ancora migliori se fossero state sottoposte a training, in primo luogo, con un set di dati completamente privo di disturbo (p = 0) in primo luogo. In sintesi, l'esistenza di un disturbo residuo nel set di dati effettivo significa che la resilienza contro il disturbo dei classificatori è migliore rispetto ai risultati presentati qui. Se il disturbo residuo nel set di dati fosse statisticamente rilevante, il valore di area sotto la curva dei classificatori diventerà pari a 0,5 (un'ipotesi casuale) per un livello di disturbo rigorosamente inferiore a 0,5. Non osserviamo una tale comportamento nei risultati.

VI. CONCLUSIONI E LAVORI FUTURI

Il nostro contributo nel presente documento è duplice.

In primo luogo, è stata illustrata la fattibilità della classificazione dei report sui bug di sicurezza basata esclusivamente sul titolo del report. Ciò è particolarmente rilevante negli scenari in cui l'intero report sui bug non è disponibile a causa di vincoli sulla privacy. In questo caso, ad esempio, i report di bug contenevano informazioni private, ad esempio password e chiavi crittografiche, e non erano disponibili per il training dei classificatori. Il risultato mostra che l'identificazione dei report sui bug di sicurezza può essere eseguita con accuratezza elevata anche quando sono disponibili solo i titoli dei report. Il nostro modello di classificazione che utilizza una combinazione di algoritmo TF-IDF e regressione logistica viene eseguito per un valore di area sotto la curva pari a 0,9831.

In secondo luogo, abbiamo analizzato l'effetto dei dati di training e di convalida con etichetta errata. Sono state confrontate tre tecniche di classificazione di apprendimento automatico note (Naive Bayes, regressione logistica e AdaBoost) in termini di affidabilità rispetto a diversi tipi e livelli di disturbo. Tutti i tre classificatori sono affidabili per un disturbo a classe singola. Il disturbo nei dati di training non ha alcun effetto significativo sul classificatore risultante. La riduzione nel valore di area sotto la curva è molto ridotta (0,01) per un livello di disturbo del 50%. In relazione al disturbo presente in entrambe le classi e indipendente dalla classe, i modelli Naive Bayes e AdaBoost presentano variazioni significative del valore di area sotto la curva solo quando vengono sottoposti a training con un set di dati i cui livelli di disturbo sono superiori al 40%.

Il disturbo dipendente dalla classe, infine, influisce significativamente sul valore dell'area sotto la curva solo quando è presente un disturbo maggiore del 35% in entrambe le classi. AdaBoost ha mostrato la massima affidabilità. L'impatto sul valore di area sotto la curva è molto ridotto anche quando nella classe positiva è presente il 50% delle etichette, a condizione che la classe negativa contenga il 45% di etichette con disturbo o meno. In questo caso, la riduzione nel valore di area sotto la curva è inferiore a 0,03. A quanto ci risulta, questo è il primo studio sistematico sull'effetto dei set di dati di disturbo per l'identificazione dei report sui bug di sicurezza.

LAVORI FUTURI

In questo articolo è stato avviato lo studio sistematico degli effetti del disturbo sulle prestazioni dei classificatori di apprendimento automatico per l'identificazione dei bug di sicurezza. Ci sono diversi seguiti interessanti di questo lavoro, ad esempio l'analisi dell'effetto dei set di dati di disturbo per determinare il livello di gravità di un bug di sicurezza, la comprensione dell'effetto dello squilibrio della classe sulla resilienza dei modelli sottoposti a training rispetto al disturbo e la comprensione dell'effetto del disturbo introdotto in contrapposizione nel set di dati.

REFERENCES

[1] John Anvik, Lyndon Hiew e Gail C Murphy. Chi deve risolvere questo bug? In Proceedings of the 28th international conference on Software engineering, pagine 361-370. ACM, 2006.

[2] Diksha Behl, Sahil Handa e Anuja Arora. Strumento di data mining di bug per identificare e analizzare i bug di sicurezza con Naive Bayes e TF-IDF. In Optimization, Reliabilty, and Information Technology (ICROIT), 2014 International Conference on, pagine 294-299. IEEE, 2014.

[3] Nicolas Bettenburg, Rahul Premraj, Thomas Zimmermann e Sunghun Kim. I report sui bug duplicati sono considerati dannosi? In Manutenzione software, 2008. ICSM 2008. I edizione Enterprise E conferenza internazionale, pagine 337-345. IEEE, 2008.

[4] Andres Folleco, Taghi M Khoshgoftaar, Jason Van Hulse e Lofton Bullard. Identificazione di studenti affidabili per dati di bassa qualità. In Riutilizzo e integrazione delle informazioni, 2008. IRI 2008. I edizione Enterprise E International Conference on, pagine 190–195. IEEE, 2008.

[5] Benoˆıt Frenay.´ Incertezza e disturbo di etichetta nell'apprendimento automatico. Tesi di PhD, Catholic University of Louvain, Louvain-la-Neuve, Belgio, 2013.

[6] Benoˆıt Frenay e Michel Verleysen. Classificazione in presenza del disturbo di etichetta: un sondaggio. IEEE transactions on neural networks and learning systems, 25(5):845–869, 2014.

[7] Michael Gegick, Pete Rotella e Tao Xie. Identificazione dei report sui bug di sicurezza tramite text mining: case study industriale. In Mining software repositories (MSR), 2010 7th IEEE working conference on, pagine 11-20. IEEE, 2010.

[8] Katerina Goseva-Popstojanova e Jacob Tyo. Identificazione dei report sui bug correlati alla sicurezza tramite text mining usando la classificazione con e senza supervisione. In 2018 IEEE International Conference on Software Quality, Reliability and Security (QRS), pagine 344-355, 2018.

[9] Ahmed Lamkanfi, Serge Demeyer, Emanuel Giger e Bart Goethals. Stima della gravità di un bug segnalato. In Mining Software Repositories (MSR), 2010 7th IEEE Working Conference on, pagine 1-10. IEEE, 2010.

[10] Naresh Manwani e PS Sastry. Tolleranza del disturbo in ambito di riduzione del rischio. IEEE transactions on cybernetics, 43(3):1146–1151, 2013.

[11] G Murphy e D Cubranic. Valutazione automatica del bug tramite la categorizzazione del testo. In Proceedings of the Sixteenth International Conference on Software Engineering & Knowledge Engineering. Citeseer, 2004.

[12] Mykola Pechenizkiy, Alexey Tsymbal, Seppo Puuronen e Oleksandr Pechenizkiy. Rumore di classe e apprendimento supervisionato nei domini medici: l'effetto dell'estrazione delle caratteristiche. In null, pagine 708-713. IEEE, 2006.

[13] Charlotte Pelletier, Silvia Valero, Jordi Inglada, Nicolas Champion, Claire Marais Sicre e Gerard Dedieu.´ Effetto del disturbo di etichetta della classe di training sulle prestazioni di classificazione per la mappatura della copertura del suolo con serie temporali di immagini satellitari. Remote Sensing, 9(2):173, 2017.

[14] PS Sastry, GD Nagendra e Naresh Manwani. Un team di automi di apprendimento ad azione continua per l'apprendimento con tolleranza di disturbo di semispazi. IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics), 40(1):19–28, 2010.

[15] Choh-Man Teng. Confronto tra le tecniche di gestione del disturbo. In FLAIRS Conference, pagine 269–273, 2001.

[16] Dumidu Wijayasekara, Milos Manic e Miles McQueen. Identificazione e classificazione della vulnerabilità tramite database dei bug di text mining. In Industrial Electronics Society, IECON 2014-40th Annual Conference of the I edizione Enterprise E, pagine 3612–3618. I edizione Enterprise E, 2014.

[17] Xinli Yang, David Lo, Qiao Huang, Xin Xia e Jianling Sun. Identificazione automatica dei report sui bug con impatto elevato sfruttando strategie di apprendimento sbilanciate. In Computer Software and Applications Conference (COMPSAC), 2016 IEEE 40th Annual, volume 1, pagine 227-232. IEEE, 2016.

[18] Deqing Zou, Zhijun Deng, Zhen Li e Hai Jin. Identificazione automatica dei report sui bug di sicurezza tramite l'analisi delle funzionalità a più tipi. In Australasian Conference on Information Security and Privacy, pagine 619–633. Springer, 2018.