Google avastas Linuxi tuumast KCSANi kasutades sadu võistlustingimusi

Linux Kernel

Google'i insenerid mis aitavad kaasa Linuxi kernelile on teatanud, et on KCSAN-i abil tuumast avastanud sadu "võistlustingimusi". Ettevõte on pikka aega tegelenud aadressisanitizeriga, et leida koodis määratlemata käitumise tõttu vigu, mis on seotud mälu rikkumisega, või UndefinedBehaviorSanitizerit.

Seekord, Google pakub Linuxi kernelile uut detektsiooni „Race tingimused” nimega KCSAN (Kerneli samaaegne puhastusvahend). Need kriitilised haavatavused pole uued. Tegelikult Võistlustingimused ilmnevad siis, kui kaks või enam sama protsessi lõime pääsevad üheaegselt samale mälupunktile, kus vähemalt üks juurdepääs on kirjutada, ja kui lõimed ei kasuta sellele mälule juurdepääsu kontrollimiseks mingeid eksklusiivseid lukke.

Kui need tingimused on täidetud, ei ole juurdepääsukord deterministlik ja arvutus võib sõltuvalt sellest järjestusest anda erinevaid tulemusi ühelt jooksult teisele.

Võistlustingimusi peetakse üha enam samaaegsete juurdepääsuvigadena ja neid on raske dubleerida ja diagnoosida paralleelsetes programmides. Linuxi kernel on suuremahuline tarkvarasüsteem, kus niidimahukas paralleelsus ja mitte-deterministlik lõimude põimimine alluvad rohkem konkurentsitingimustele.

Mõni võistlusolukord võib olla healoomuline, kuid paljusid seni tuvastatud olukordi peetakse vigadeks.

Linuxi tuum pakub mitut mehhanismi seda tüüpi tingimuste vältimiseks ja haldamiseks Kuna Linuxi tuuma kriitiliste täitmisvigade tuvastamiseks on olemas sellised tööriistad nagu Thread Analyzer või KTSAN (Kernel Thread Sanitizer).

Kuid Google, kes panustab ka Linuxi kernelisse, tegi hiljuti KCSAN-i ettepaneku, tuuma jaoks uus võistlustingimuste detektor, sarnane KTSAN-iga.

Google'i sõnul keskendub KCSAN tuumakoodis konkurentsiolukordade avastamisele. See dünaamiline kriitilise tabamuse detektor on alternatiiv tuuma niidipuhastajale (KTSAN).

Vastavalt Google'i selgitusele KCSAN põhineb proovivõtuseirepunktidel, erinevalt KTSAN-detektorist, mis on enne sündmust kriitiline võistluste detektor. KCSAN-i kujunduse põhiprioriteetideks on valepositiivide puudumine, mastaapsus ja lihtsus.

KCSAN kasutab mälule juurde pääsemiseks kompileerimistööriistu. KCSAN ühildub GCC ja Clangi kompilaatoritega. GCC puhul vajab see versiooni 7.3.0 või uuemat ning Clangi puhul versiooni 7.0.0 või uuemat.

Projekti GitHubi lehelGoogle'i Marco Elver kirjutas, et kasutades eelmisel kuul testides KCSAN-i, leidsid nad vaid kahe päevaga enam kui 300 ainulaadset võistlusolukorda. KCSAN pakub oma käitumise kohandamiseks mitmeid seadistusvõimalusi.

„Oleme mitu nädalat KCSANi kasutanud Syzkalleri kaudu ja oleme leidnud palju vigu. Esialgu tuvastasime 2019. aasta septembris vaid kahe päeva jooksul üle 300 ainulaadse võistlussituatsiooni, ”kirjutas ta.

Google ütles, et üldine lähenemine põhineb DataCollideril, teine ​​dünaamiline konkurentsiolukordade detektor tuuma moodulites. Kuid erinevalt DataColliderist ei kasuta KCSAN riistvaraseire punkte, vaid tugineb kompileerimistööriistadele.

Seirepunkte rakendatakse tõhusa kodeerimise abil, mis salvestab pika faili tüübi, suuruse ja juurdepääsuaadressi. Paindlike seirepunktide kasutamise eelised on teisaldatavus ja suurem paindlikkus juurdepääsupiirangute piiramisel, mida seirepunkt saab aktiveerida.

Siin on mõned peamised punktid, mille KCSAN Google'i jaoks tõi:

  • Suur jõudlus: KCSAN-i käitamisaeg on minimaalne ja ei nõua iga juurdepääsu jaoks jagatud oleku lukustamist. Tulemuseks on palju parem jõudlus kui KTSANil.
  • Lisamälu puudub: Google'i sõnul pole vahemälu vaja. Praegune rakendus kasutab seirepunkti teabe kodeerimiseks väikest arvu pikkusi, mis on tühine.
  • Mälu käsk: KCSAN ei tea Linuxi kerneli mälumudeli (LKMM) juhtimisreegleid. Selle tulemuseks võib olla kriitiliste võistluste kaotamine (valenegatiivid) võrreldes võistluseelse võistluse detektoriga nagu KTSAN
  • Täpsus: Google'i sõnul on KCSAN ebatäpne, kuna kasutab valimisstrateegiat;
  • Nõuab märkust: minimaalne märkimine on vajalik väljaspool KCSAN-i käitust. Eeltingimusega sündmuste kuulaja puhul toob igasugune väljajätmine kaasa valepositiivseid tulemusi, mis on eriti oluline kohandatud ajastamismehhanisme sisaldava tuuma kontekstis.
  • Dünaamiliste kirjutiste tuvastamine seadmetest: Andmeväärtuste kontrollimisel vaatluspunkti seadistamisel saab tuvastada ka seadmetest pärinevaid dünaamilisi kirjutisi.

Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutav: AB Internet Networks 2008 SL
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.