Videnskab
 science >> Videnskab >  >> Elektronik

Brug af maskinlæring til at opdage softwaresårbarheder

Kredit:Markus Spiske på Unsplash

Et team af forskere fra R&D-virksomheden Draper og Boston University udviklede et nyt storstilet sårbarhedsdetektionssystem ved hjælp af maskinlæringsalgoritmer, som kunne hjælpe med at opdage softwaresårbarheder hurtigere og mere effektivt.

Hackere og ondsindede brugere kommer konstant på nye måder at kompromittere it-systemer og applikationer på, typisk ved at udnytte sårbarheder i softwaresikkerhed. Softwaresårbarheder er små fejl lavet af programmører, der udviklede et system, der kan udbrede sig hurtigt, især gennem open source-software eller gennem genbrug og tilpasning af kode.

Hvert år, tusindvis af disse sårbarheder rapporteres offentligt til Common Vulnerabilities and Exposures-databasen (CVE), mens mange andre bliver opdaget og lappet internt af udviklere. Hvis de ikke behandles tilstrækkeligt, disse sårbarheder kan udnyttes af angribere, ofte med ødelæggende virkninger, som bevist i mange nylige højprofilerede bedrifter, såsom Heartbleed-fejlen og WannaCry ramsomware-kryptormen.

Generelt, eksisterende værktøjer til at analysere programmer kan kun opdage et begrænset antal potentielle fejl, som er baseret på foruddefinerede regler. Imidlertid, den udbredte brug af open source-depoter har åbnet nye muligheder for udvikling af teknikker, der kan afsløre kodesårbarhedsmønstre.

Forskerne fra Draper og Boston har udviklet et nyt sårbarhedsdetektionsværktøj, der bruger maskinlæring til automatisk registrering af sårbarheder i C/C++ kildekode, som allerede har vist lovende resultater.

Holdet kompilerede et stort datasæt med millioner af open source-funktioner og mærkede det ved hjælp af tre statiske (pre-runtime) analyseværktøjer, nemlig Clang, Cppcheck og Flawfinder, som er designet til at identificere potentielle udnyttelser. Deres datasæt inkluderede millioner af eksempler på funktionsniveau på C- og C++-kode hentet fra SATEIV Juliet Test Suite, Debian Linux distribution, og offentlige Git-depoter på GitHub.

"Ved at bruge disse datasæt, vi udviklede et hurtigt og skalerbart sårbarhedsdetektionsværktøj baseret på dyb funktionsrepræsentation, der direkte fortolker lexed kildekode, " skrev forskerne i deres papir.

Da programmeringssprog på nogle måder ligner menneskelige sprog, forskerne designet en sårbarhedsdetektionsteknik, der bruger naturlig sprogbehandling (NLP), en AI-strategi, der gør det muligt for computere at forstå og fortolke menneskeligt sprog.

"Vi udnytter feature-ekstraktionstilgange svarende til dem, der bruges til sætningsstemningsklassificering med konvolutionelle neurale netværk (CNN'er) og tilbagevendende neurale netværk (RNN'er) til funktionsniveau kildesårbarhedsklassificering, " forklarede forskerne i deres papir.

De kombinerede NLP med tilfældig skov (RM); en kraftfuld algoritme, der skaber et ensemble af beslutningstræer fra tilfældigt udvalgte delmængder af træningsdatasættet og derefter flette dem sammen, generelt opnå mere præcise forudsigelser.

Forskerne testede deres værktøj på både rigtige softwarepakker og NIST STATE IV benchmark-datasættet.

"Vores resultater viser, at indlæring af dyb funktionsrepræsentation på kildekode er en lovende tilgang til automatiseret softwaresårbarhedsdetektion, " skrev de. "Vi anvendte en række forskellige ML-teknikker inspireret af klassifikationsproblemer i det naturlige sprogdomæne, finjusteret dem til vores applikation, og opnåede de bedste overordnede resultater ved at bruge funktioner lært via foldende neurale netværk og klassificeret med en ensemble-træalgoritme."

Indtil nu, deres arbejde har fokuseret på C/C++ kode, men deres metode kunne også anvendes på et hvilket som helst andet programmeringssprog. De valgte specifikt at oprette en brugerdefineret C/C++ lexer, da dette ville producere en enkel og generisk repræsentation af funktionskildekoden, som er ideel til maskinlæringstræning.

© 2018 Tech Xplore




Varme artikler