Google upptäckte hundratals rasförhållanden i Linux-kärnan med hjälp av KCSAN

Linux Kernel

Googles ingenjörer som bidrar till Linux-kärnan har meddelat att de har upptäckt hundratals "Race Villkor", i kärnan med KCSAN. Företaget har länge arbetat med AddressSanitizer för att hitta fel relaterade till minneskorruption eller UndefinedBehaviorSanitizer för odefinierat beteende i kod.

Den här gången, Google erbjuder en ny "Race Villkor" -detektor för Linux-kärnan som heter KCSAN (Kernel Concurrency Sanitizer). Dessa kritiska sårbarheter är inte nya. I själva verket Race Villkor uppstår när två eller flera trådar i samma process får åtkomst till samma minnesplats samtidigt, där åtminstone en av åtkomstarna är att skriva, och när trådarna inte använder några exklusiva lås för att kontrollera deras åtkomst till detta minne.

När dessa villkor är uppfyllda är åtkomstordern inte deterministisk och beräkningen kan ge olika resultat från en körning till en annan beroende på denna ordning.

Race Villkor ses alltmer som samtidiga åtkomstfel och är svåra att duplicera och diagnostisera i parallella program. Linux-kärnan är ett storskaligt mjukvarusystem, där trådintensiv parallellitet och icke-deterministisk trådflätning är mer föremål för konkurrensvillkor.

Vissa konkurrenssituationer kan vara godartade, men många av dem hittills har identifierats som misstag.

Linux-kärnan tillhandahåller flera mekanismer för att undvika och hantera dessa typer av villkor Eftersom det finns verktyg som Thread Analyzer eller KTSAN (Kernel Thread Sanitizer) för att upptäcka kritiska körfel i Linux-kärnan.

Men Google, som också bidrar till Linux-kärnan, föreslog nyligen KCSAN, en ny rasvillkor-detektor för kärnan, liknar KTSAN.

Enligt Google fokuserar KCSAN på att upptäcka konkurrenssituationer i kärnkoden. Denna dynamiska kritiska träffdetektor är ett alternativ till Kernan Thread Sanitizer (KTSAN).

Enligt Googles förklaring, KCSAN bygger på samplingsövervakningspunkter, till skillnad från KTSAN-detektor, som är en kritisk slagdetektor före händelsen. Viktiga prioriteringar i KCSAN-design är brist på falska positiva effekter, skalbarhet och enkelhet.

KCSAN använder kompileringsverktyg för att komma åt minne. KCSAN är kompatibel med GCC- och Clang-kompilatorerna. Med GCC krävs version 7.3.0 eller senare och med Clang krävs version 7.0.0 eller senare.

På projektets GitHub-sidaGoogles Marco Elver skrev att med hjälp av KCSAN i tester förra månaden hittade de på bara två dagar mer än 300 unika kärnkonkurrenssituationer. KCSAN erbjuder flera konfigurationsalternativ för att anpassa dess beteende.

”Vi har använt KCSAN genom Syzkaller i flera veckor och vi har hittat många buggar. Ursprungligen i september 2019 identifierade vi mer än 300 unika tävlingssituationer på bara två dagar, ”skrev han.

Google sa att den övergripande metoden är baserad på DataCollider, en annan dynamisk detektor för konkurrenssituationer i kärnmodulerna. Men till skillnad från DataCollider använder KCSAN inte hårdvaruövervakningspunkter, utan är beroende av kompileringsverktyg.

Övervakningspunkterna implementeras med effektiv kodning som lagrar typ, storlek och åtkomstadress i en lång fil. Fördelarna med att använda flexibla övervakningspunkter är bärbarhet och större flexibilitet när det gäller att begränsa åtkomsten som en övervakningspunkt kan aktivera.

Här är några av de viktigaste punkterna som KCSAN gjorde för Google:

  • Hög prestanda: KCSAN-körning är minimal och kräver inte delat tillståndslås för varje åtkomst. Resultatet är mycket bättre prestanda än KTSAN.
  • Inget extra minne: enligt Google krävs ingen cache. Den nuvarande implementeringen använder ett litet antal längder för att koda övervakningspunktinformationen, vilket är försumbar
  • Minneskommando: KCSAN känner inte till reglerna för Linux-kärnminnesmodell (LKMM). Detta kan leda till att kritiska tävlingar förloras (falska negativ) jämfört med en tävlingsdetektor som före KTSAN
  • noggrannhet: Enligt Google är KCSAN oprecis eftersom den använder en samplingsstrategi.
  • Kräver anteckning: minimal kommentar krävs utanför KCSAN-körtiden. I händelse av en förhandslyssnare för förhandshändelse leder eventuell utelämning till falska positiva, vilket är särskilt viktigt i kärnans sammanhang som inkluderar anpassade tidsmekanismer.
  • Detektering av dynamiska skrivningar från enheter: Genom att kontrollera datavärden under inställningen av övervakningspunkter kan dynamiska skrivningar från enheter också detekteras.

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.