Google opdagede hundreder af race betingelser i Linux-kernen ved hjælp af KCSAN

Linux Kernel

Google ingeniører Bidrager til Linux-kernen har annonceret, at de har opdaget hundredvis af "Race Conditions", i kernen ved hjælp af KCSAN. Virksomheden har længe arbejdet på AddressSanitizer for at finde fejl relateret til hukommelseskorruption eller UndefinedBehaviorSanitizer for udefineret adfærd i kode.

Denne gang, Google tilbyder en ny "Race Conditions"-detektor til Linux-kernen kaldet KCSAN (Kernel Concurrency Sanitizer). Disse kritiske sårbarheder er ikke nye. Faktisk Race Conditions opstår, når to eller flere tråde i samme proces samtidig får adgang til den samme hukommelsesplacering., hvor mindst én af adgangene er til skrivning, og når trådene ikke bruger nogen eksklusive låse til at kontrollere deres adgang til denne hukommelse.

Når disse betingelser er opfyldt, er rækkefølgen af ​​adgang ikke deterministisk, og beregningen kan give forskellige resultater fra én udførelse til en anden afhængig af denne rækkefølge.

Race Conditions ses i stigende grad som samtidige adgangsfejl og er svære at duplikere og diagnosticere i parallelle programmer. Linux-kernen er et softwaresystem i stor skala, hvor trådintensiv parallelisme og ikke-deterministisk trådindfletning er mere underlagt konkurrencevilkår.

Nogle konkurrencesituationer kan være godartede, men de fleste af dem, der er identificeret indtil videre, betragtes som fejl.

Linux-kernen giver flere mekanismer til at undgå og håndtere disse typer tilstande. da der er værktøjer som Thread Analyzer eller KTSAN (Kernel Thread Sanitizer) til at opdage kritiske udførelsesfejl i Linux-kernen.

Google, som også bidrager til Linux-kernen, foreslog imidlertid for nylig KCSAN, en ny Kernel Race Conditions-lytter, der ligner KTSAN.

Ifølge Google fokuserer KCSAN på at opdage konkurrencesituationer i kernekoden.. Denne dynamiske kritiske hitdetektor er et alternativ til Kernel Thread Sanitizer (KTSAN).

Ifølge Googles forklaring, KCSAN er baseret på prøvetagningsovervågningspunkter, i modsætning til KTSAN-detektoren, som er en kritisk race-detektor før begivenheden. Nøgleprioriteterne i designet af KCSAN er manglen på falske positiver, skalerbarhed og enkelhed.

KCSAN bruger kompileringsværktøjer til at få adgang til hukommelse. KCSAN er kompatibel med GCC- og Clang-kompilatorerne. Med GCC kræver det version 7.3.0 eller nyere, og med Clang kræver det version 7.0.0 eller nyere.

På projektets GitHub-sideGoogles Marco Elver skrev, at da de brugte KCSAN i test i sidste måned, fandt de over 300 unikke konkurrerende situationer i kernen på kun to dage. KCSAN giver flere konfigurationsmuligheder for at tilpasse dens adfærd.

"Vi har brugt KCSAN gennem Syzkaller i flere uger, og vi har fundet mange fejl. I første omgang i september 2019 identificerede vi over 300 unikke konkurrencesituationer over kun to dage," skrev han.

Google sagde, at den generelle tilgang er baseret på DataCollider, endnu en dynamisk detektor af konkurrencesituationer i kernemoduler. Men i modsætning til DataCollider bruger KCSAN ikke hardwareovervågningspunkter, i stedet er det afhængigt af compilerværktøjer.

Watchpoints implementeres ved hjælp af en effektiv kodning, der gemmer type, størrelse og adgangsadresse i én lang fil. Fordelene ved at bruge fleksible overvågningspunkter er portabilitet og større fleksibilitet til at begrænse den adgang, som et overvågningspunkt kan udløse.

Her er nogle af de vigtigste punkter, som KCSAN lavede for Google:

  • Høj ydeevne: KCSAN's eksekveringstid er minimal og kræver ikke en delt tilstandslås for hver adgang. Resultatet er meget bedre ydeevne end KTSAN.
  • Uden ekstra hukommelse: ifølge Google kræves ingen cache. Den nuværende implementering bruger et lille antal længder til at kode overvågningspunktinformationen, hvilket er ubetydeligt.
  • Hukommelseskommando: KCSAN er ikke bekendt med Linux Kernel Memory Model (LKMM) kontrolreglerne. Dette kan resultere i mistede kritiske kørsler (falske negativer) sammenlignet med en pre-event run detektor som KTSAN
  • nøjagtighed: ifølge Google er KCSAN unøjagtig, fordi den bruger en stikprøvestrategi;
  • Anmærkning påkrævet: minimal annotering er påkrævet uden for KCSAN-runtiden. I tilfælde af en forudsætningsbegivenhedslytter fører enhver udeladelse til falske positiver, hvilket er særligt vigtigt i forbindelse med kerner, der inkluderer tilpassede synkroniseringsmekanismer.
  • Registrering af dynamiske skrivninger fra enheder: Ved at kontrollere dataværdier under vagtpunktskonfiguration kan dynamiske skrivninger fra enheder også detekteres.

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for data: AB Internet Networks 2008 SL
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.