Google je v jedru Linuxa z uporabo KCSAN odkril na stotine dirkalnih pogojev

Linux Kernel

Googlovi inženirji ki prispevajo k jedru Linuxa so objavili, da so v jedru z uporabo KCSAN odkrili na stotine "Race Conditions". Podjetje že dolgo dela na AddressSanitizerju, da bi našlo napake, povezane s poškodbami pomnilnika ali UndefinedBehaviorSanitizer za nedefinirano vedenje v kodi.

Tokrat, Google ponuja nov detektor »Race Conditions« za jedro Linuxa, imenovan KCSAN (Sredstvo za razkuževanje jedra za jedro). Te kritične ranljivosti niso nove. Pravzaprav Dirkalni pogoji se pojavijo, ko dve ali več niti v istem procesu istočasno dostopata do istega pomnilniškega mesta, kjer je vsaj eden od dostopov namenjen pisanju in kadar niti ne uporabljajo ekskluzivnih ključavnic za nadzor dostopa do tega pomnilnika.

Ko so ti pogoji izpolnjeni, vrstni red dostopa ni determinističen in izračun lahko daje različne rezultate od enega do drugega izvajanja, odvisno od tega naročila.

Dirkalne pogoje vse pogosteje obravnavamo kot sočasne napake pri dostopu in jih je težko podvojiti in diagnosticiranje v vzporednih programih. Jedro Linuxa je obsežen programski sistem, pri katerem sta vzporednost z intenzivnimi nitmi in nedeterministično prepletanje niti bolj odvisna od konkurenčnih pogojev.

Nekatere tekmovalne situacije so lahko benigne, vendar se mnoge od njih, ki so bile do zdaj ugotovljene, štejejo za napake.

Jedro Linuxa ponuja več mehanizmov za preprečevanje in upravljanje tovrstnih pogojev Ker obstajajo orodja, kot sta Thread Analyzer ali KTSAN (Kernel Thread Sanitizer) za odkrivanje kritičnih napak pri izvajanju v jedru Linuxa.

Vendar je Google, ki prav tako prispeva k jedru Linux, pred kratkim predlagal KCSAN, nov detektor rasnih pogojev za jedro, podoben KTSAN.

Po Googlu se KCSAN osredotoča na odkrivanje konkurenčnih situacij v kodi jedra. Ta dinamični detektor kritičnih zadetkov je alternativa sredstvu za razkuževanje navojev z jedrom (KTSAN).

V skladu z Googlovo razlago KCSAN temelji na nadzornih točkah vzorčenja, za razliko od detektorja KTSAN, ki je detektor kritične kapi pred dogodkom. Ključne prednostne naloge pri oblikovanju KCSAN so pomanjkanje lažnih pozitivnih rezultatov, razširljivost in preprostost.

KCSAN uporablja orodja za prevajanje za dostop do pomnilnika. KCSAN je združljiv s prevajalniki GCC in Clang. Pri GCC potrebuje različico 7.3.0 ali novejšo, pri Clangu pa različico 7.0.0 ali novejšo.

Na strani GitHub projektaGooglov Marco Elver je zapisal, da so s testi KCSAN prejšnji mesec v samo dveh dneh ugotovili več kot 300 edinstvenih ključnih tekmovalnih situacij. KCSAN ponuja več možnosti konfiguracije za prilagajanje njegovega vedenja.

»KCSAN prek Syzkallerja uporabljamo že nekaj tednov in našli smo veliko napak. Sprva septembra 2019 smo v samo dveh dneh ugotovili več kot 300 edinstvenih tekmovalnih situacij, «je zapisal.

Google je dejal, da splošni pristop temelji na DataCollider, še en dinamični detektor konkurenčnih situacij v modulih jedra. Toda za razliko od DataCollider KCSAN ne uporablja nadzornih točk strojne opreme, temveč se zanaša na orodja za prevajanje.

Nadzorne točke se izvajajo z učinkovitim kodiranjem, ki shranjuje vrsto, velikost in dostopni naslov v dolgi datoteki. Prednosti uporabe prožnih nadzornih točk so prenosljivost in večja prožnost pri omejevanju dostopa, ki ga lahko nadzorna točka aktivira.

Tu je nekaj ključnih točk, ki jih je KCSAN izrazil za Google:

  • Visokozmogljivo: Izvajalno okolje KCSAN je minimalno in ne zahteva zaklepanja v skupni rabi za vsak dostop. Rezultat je veliko boljša zmogljivost kot KTSAN.
  • Brez dodatnega pomnilnika: po Googlu predpomnilnik ni potreben. Trenutna izvedba za kodiranje informacij o nadzorni točki uporablja majhno število dolžin, kar je zanemarljivo.
  • Ukaz pomnilnika: KCSAN ne pozna kontrolnih pravil za model pomnilnika jedra LKMM (LKMM). To lahko povzroči izgubo kritičnih dirk (lažni negativi) v primerjavi z detektorjem dirke pred dogodki, kot je KTSAN
  • Natančnost: Po navedbah Googla je KCSAN neprecizen, ker uporablja strategijo vzorčenja;
  • Zahteva pripis: minimalna opomba je potrebna zunaj časa izvajanja KCSAN. V primeru poslušalca dogodka predpogoja vsaka opustitev privede do napačnih pozitivnih rezultatov, kar je še posebej pomembno v okviru jedra, ki vključuje mehanizme časovnega prilagajanja po meri.
  • Zaznavanje dinamičnih zapisov iz naprav: S preverjanjem podatkovnih vrednosti med nastavitvijo nadzorne točke je mogoče zaznati tudi dinamično pisanje iz naprav.

Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.