• Home
  • Kemi
  • Astronomien
  • Energi
  • Naturen
  • Biologi
  • Fysik
  • Elektronik
  • Använder maskininlärning för att upptäcka sårbarheter i programvara

    Kredit:Markus Spiske på Unsplash

    Ett team av forskare från FoU-företaget Draper och Boston University utvecklade ett nytt storskaligt sårbarhetsdetekteringssystem med hjälp av maskininlärningsalgoritmer, som kan hjälpa till att upptäcka sårbarheter i programvara snabbare och mer effektivt.

    Hackare och illvilliga användare kommer ständigt på nya sätt att äventyra IT-system och applikationer, vanligtvis genom att utnyttja sårbarheter i programvarans säkerhet. Sårbarheter i programvara är små fel som görs av programmerare som utvecklat ett system som kan spridas snabbt, särskilt genom öppen källkod eller genom kodåteranvändning och anpassning.

    Varje år, tusentals av dessa sårbarheter rapporteras offentligt till databasen Common Vulnerabilities and Exposures (CVE), medan många andra upptäcks och lappas internt av utvecklare. Om de inte åtgärdas tillräckligt, dessa sårbarheter kan utnyttjas av angripare, ofta med förödande effekter, som bevisats i många nya högprofilerade bedrifter, som Heartbleed-felet och WannaCry ramsomware-kryptorm.

    Rent generellt, befintliga verktyg för att analysera program kan bara upptäcka ett begränsat antal potentiella fel, som bygger på fördefinierade regler. Dock, den utbredda användningen av arkiv med öppen källkod har öppnat nya möjligheter för utveckling av tekniker som kan avslöja mönster för kodsårbarhet.

    Forskarna från Draper och Boston har utvecklat ett nytt verktyg för att upptäcka sårbarheter som använder maskininlärning för automatisk upptäckt av sårbarheter i C/C++ källkod, som redan har visat lovande resultat.

    Teamet sammanställde en stor datamängd med miljontals öppen källkodsfunktioner och märkte den med hjälp av tre statiska (pre-runtime) analysverktyg, nämligen Clang, Cppcheck och Flawfinder, som är utformade för att identifiera potentiella utnyttjande. Deras datauppsättning inkluderade miljontals funktionsnivåexempel på C- och C++-kod från SATEIV Juliet Test Suite, Debian Linux distribution, och offentliga Git-förråd på GitHub.

    "Med hjälp av dessa datauppsättningar, vi utvecklade ett snabbt och skalbart verktyg för sårbarhetsdetektering baserat på inlärning av djup funktionsrepresentation som direkt tolkar lexed källkod, " skrev forskarna i sin uppsats.

    Eftersom programmeringsspråk på något sätt liknar mänskliga språk, forskarna designade en sårbarhetsdetektionsteknik som använder naturlig språkbehandling (NLP), en AI-strategi som gör att datorer kan förstå och tolka mänskligt språk.

    "Vi utnyttjar funktionsextraktionsmetoder som liknar de som används för meningsentimentklassificering med konvolutionella neurala nätverk (CNN) och återkommande neurala nätverk (RNN) för klassificering av källors sårbarhet på funktionsnivå, " förklarade forskarna i sin uppsats.

    De kombinerade NLP med random forest (RM); en kraftfull algoritm som skapar en ensemble av beslutsträd från slumpmässigt utvalda delmängder av träningsdatauppsättningen och sedan slår samman dem, i allmänhet uppnå mer exakta förutsägelser.

    Forskarna testade sitt verktyg på både riktiga mjukvarupaket och NIST STATE IV benchmark dataset.

    "Våra resultat visar att inlärning av djup funktionsrepresentation på källkod är ett lovande tillvägagångssätt för automatisk upptäckt av sårbarheter i programvara, " skrev de. "Vi tillämpade en mängd olika ML-tekniker inspirerade av klassificeringsproblem i det naturliga språkdomänen, finjusterat dem för vår applikation, och uppnådde de bästa övergripande resultaten med hjälp av funktioner som lärts in via konvolutionerande neurala nätverk och klassificeras med en ensembleträdalgoritm."

    Än så länge, deras arbete har fokuserat på C/C++-kod, men deras metod kan också tillämpas på vilket annat programmeringsspråk som helst. De valde specifikt att skapa en anpassad C/C++ lexer eftersom detta skulle producera en enkel och generisk representation av funktionskällkod, vilket är idealiskt för utbildning i maskininlärning.

    © 2018 Tech Xplore




    © Vetenskap https://sv.scienceaq.com