Despite the efforts of software maintainers, patches on open-source repositories are propagated from the main codebase to all the related projects (e.g., forks) with a significant delay. Previous work shows that this is true also for security patches, for which it represents a critical problem. Vulnerability databases (e.g., CVEs) were born to speed up the diffusion of critical patches; however, CVE patches are still applied with a delay and some security fixes lack corresponding CVE entries. Because of this, project maintainers could miss security patches when upgrading software, which is a huge problem. In this paper we are the first to provide a definition of non-disruptive patches (ndps). An ndp is a patch that should not disrupt the original functionality of the program, meaning that it can be applied with a minimal testing effort; we argue that most of the security fixes fall into this category. Furthermore, we show a technique to identify ndps and implement GitRDone, a tool based on such a technique that works just by analyzing the source code of the original and patched versions of a file. We run GitRDone on 39,191 patches, spanning over 10 different kernels repositories, and on 191 Android and Linux CVE patches. Results show that it can identify ndps with 96.00% precision and that most of the CVE patches are ndps. In addition, GitRDone identified patches that fix vulnerabilities that lack a CVE; 5 of these are still unpatched in different vendor kernels.

Nonostante gli sforzi degli sviluppatori software, le patch che vengono applicate ad un progetto open-source, sul suo repository principale, non vengono solitamente propagate in maniera rapida anche su tutti i progetti connessi ad esso (ad esempio, su tutte le fork del repository principale). Studi recenti mostrano che la stessa cosa vale anche per le patch di sicurezza, e in questi casi il problema risulta ancora più critico. Per velocizzare la propagazione delle patch di sicurezza sono nati dei database di vulnerabilità (ad esempio, quello contenente le CVE). Tuttavia, le patch che correggono CVE vengono tuttora propagate con un ritardo significativo e, in aggiunta, alcune vulnerabilità non sono presenti nei suddetti database. In questa ricerca siamo i primi a dare una definizione di patch non dannose. Una patch è non dannosa se preserva le funzionalità originali del programma; in tal caso potrebbe essere applicata ad altri progetti in maniera rapida e senza bisogno di testarne meticolosamente gli effetti. La maggior parte delle patch di sicurezza rientra in questa categoria. In aggiunta, presentiamo una tecnica che può essere utilizzata per identificare patch non dannose e mostriamo i dettagli della progettazione e dello sviluppo di GitRDone: un programma basato sulla suddetta tecnica. Abbiamo testato GitRDone su 39,191 patch, estratte da 10 differenti repository di progetti kernel, e su 191 patch che correggono CVE su Android e Linux. I risultati mostrano che GitRDone è in grado di identificare patch non dannose con una precisione del 96% e che la maggior parte delle patch che correggono CVE sono non dannose. In aggiunta, GitRDone ha identificato alcune istanze di patch che correggono vulnerabilità per le quali non esistono CVE; 5 di queste sono tuttora presenti, non corrette, in diversi kernel proprietari basati su Linux.

GitRDone : enabling fast patch propagation in related software repositories

CAMELLINI, ERIC
2015/2016

Abstract

Despite the efforts of software maintainers, patches on open-source repositories are propagated from the main codebase to all the related projects (e.g., forks) with a significant delay. Previous work shows that this is true also for security patches, for which it represents a critical problem. Vulnerability databases (e.g., CVEs) were born to speed up the diffusion of critical patches; however, CVE patches are still applied with a delay and some security fixes lack corresponding CVE entries. Because of this, project maintainers could miss security patches when upgrading software, which is a huge problem. In this paper we are the first to provide a definition of non-disruptive patches (ndps). An ndp is a patch that should not disrupt the original functionality of the program, meaning that it can be applied with a minimal testing effort; we argue that most of the security fixes fall into this category. Furthermore, we show a technique to identify ndps and implement GitRDone, a tool based on such a technique that works just by analyzing the source code of the original and patched versions of a file. We run GitRDone on 39,191 patches, spanning over 10 different kernels repositories, and on 191 Android and Linux CVE patches. Results show that it can identify ndps with 96.00% precision and that most of the CVE patches are ndps. In addition, GitRDone identified patches that fix vulnerabilities that lack a CVE; 5 of these are still unpatched in different vendor kernels.
MACHIRY, ARAVIND
ING - Scuola di Ingegneria Industriale e dell'Informazione
28-apr-2017
2015/2016
Nonostante gli sforzi degli sviluppatori software, le patch che vengono applicate ad un progetto open-source, sul suo repository principale, non vengono solitamente propagate in maniera rapida anche su tutti i progetti connessi ad esso (ad esempio, su tutte le fork del repository principale). Studi recenti mostrano che la stessa cosa vale anche per le patch di sicurezza, e in questi casi il problema risulta ancora più critico. Per velocizzare la propagazione delle patch di sicurezza sono nati dei database di vulnerabilità (ad esempio, quello contenente le CVE). Tuttavia, le patch che correggono CVE vengono tuttora propagate con un ritardo significativo e, in aggiunta, alcune vulnerabilità non sono presenti nei suddetti database. In questa ricerca siamo i primi a dare una definizione di patch non dannose. Una patch è non dannosa se preserva le funzionalità originali del programma; in tal caso potrebbe essere applicata ad altri progetti in maniera rapida e senza bisogno di testarne meticolosamente gli effetti. La maggior parte delle patch di sicurezza rientra in questa categoria. In aggiunta, presentiamo una tecnica che può essere utilizzata per identificare patch non dannose e mostriamo i dettagli della progettazione e dello sviluppo di GitRDone: un programma basato sulla suddetta tecnica. Abbiamo testato GitRDone su 39,191 patch, estratte da 10 differenti repository di progetti kernel, e su 191 patch che correggono CVE su Android e Linux. I risultati mostrano che GitRDone è in grado di identificare patch non dannose con una precisione del 96% e che la maggior parte delle patch che correggono CVE sono non dannose. In aggiunta, GitRDone ha identificato alcune istanze di patch che correggono vulnerabilità per le quali non esistono CVE; 5 di queste sono tuttora presenti, non corrette, in diversi kernel proprietari basati su Linux.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
2017_04_Camellini.pdf

accessibile in internet per tutti

Descrizione: Testo della tesi
Dimensione 1.26 MB
Formato Adobe PDF
1.26 MB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/133867