Dagens mjukvarusystem kommunicerar över Internet med hjälp av standardprotokoll som har blivit kraftigt granskade, vilket ger viss garanti för motstånd mot skadliga attacker och allmän robusthet. Men den programvara som implementerar dessa protokoll kan fortfarande innehålla misstag, och ett felaktigt genomförande kan leda till sårbarheter även i de mest välförstådda protokoll. Målet med detta arbete är att täppa till denna lucka genom att införa en ny teknik för att kontrollera att ett C-införande av ett protokoll överensstämmer med beskrivningen i ett RFC-dokument eller liknande standarddokument. Vi presenterar en statisk (kompile-time) källkod analysverktyg som kallas Pistachio som kontrollerar C-kod mot en regelbaserad specifikation av dess beteende. Regler beskriver vad som ska hända under varje omgång kommunikation, och kan användas för att genomdriva begränsningar vid beställning av verksamhet och på datavärden. Vår analys är inte garanterad ljud på grund av vissa heuristiska approximationer det gör, men har en låg falsk negativ frekvens i praktiken jämfört med kända felrapporter. Vi har tillämpat Pistachio på implementeringar av SSH och RCP, och vårt system kunde hitta många buggar, inklusive säkerhetssårbarheter, som vi bekräftade för hand och kontrollerade mot varje projekts feldatabaser.
Pistachio REF kontrollerar att en C-kod överensstämmer med en regelbaserad specifikation av kommunikationsstegen i ett protokoll.
Rule-Based Static Analysis of Network Protocol Implementations
{'venue': 'In Proceedings of the 15th USENIX Security Symposium', 'journal': None, 'mag_field_of_study': ['Computer Science']}