Microsoft opnar CHERIoT, vélbúnaðarlausn til að bæta C kóða öryggi

Microsoft hefur uppgötvað þróun sem tengist CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things) verkefninu, sem miðar að því að hindra öryggisvandamál í núverandi kóða í C og C++. CHERIoT býður upp á lausn sem gerir þér kleift að vernda núverandi C/C++ kóðabasa án þess að þurfa að endurvinna þá. Vörn er útfærð með því að nota breyttan þýðanda sem notar sérstakt aukið sett af örgjörvaleiðbeiningum (ISA), sem örgjörvinn gefur og á vélbúnaðarstigi fylgist með minnisaðgangi, athugar réttmæti vinnu með ábendingum og tryggir einangrun kóðablokka.

Verkefnið var búið til með það fyrir augum að lágstig eðli C tungumálsins verður uppspretta villna þegar unnið er með minni, sem leiðir til vandamála eins og biðminni flæðir, aðgangur að þegar losað minni, benditilvísanir eða tvöföld losun. . Reynsla sýnir að jafnvel stór fyrirtæki eins og Google og Microsoft, sem hafa stranga endurskoðunarstefnu og nota nútíma þróunaraðferðir og kyrrstöðugreiningartæki, geta ekki ábyrgst að villur séu ekki til staðar þegar unnið er með minni (til dæmis um 70% veikleika í Microsoft og Google stafar af óöruggri minnismeðferð).

Vandamálið er hægt að leysa með því að nota forritunarmál sem tryggja örugga notkun með minni, eða bindingar með viðbótarathugunum, til dæmis með því að nota í stað venjulegra ábendinga eins og MiraclePtr (raw_ptr), sem framkvæmir viðbótarathugun til að fá aðgang að losuðum minnissvæðum. En slíkar aðferðir henta betur fyrir nýjan kóða og að endurvinna núverandi C/C++ verkefni er nokkuð erfið, sérstaklega ef þau eru hönnuð til að keyra í umhverfi sem er takmarkað við auðlindir, eins og innbyggð kerfi og Internet of Things tæki.

CHERIoT vélbúnaðaríhlutir eru hannaðir sem örstýringur byggður á RISC-V arkitektúrnum, sem útfærir verndaða CHERI (Capability Hardware Extension to RISC-V) örgjörvaarkitektúr, sem veitir líkan af stýrðum minnisaðgangi sem byggir á „getu“ (hver les og skrif) aðgerð í minni er leyfð). Byggt á leiðbeiningasettaarkitektúrnum (ISA) sem er að finna í CHERIoT, er hugbúnaðarlíkan smíðað sem tryggir öryggi við að vinna með minni á stigi einstakra hluta, veitir vörn gegn aðgangi að þegar losað minni og útfærir létt minni aðgangseinangrunarkerfi. . Tilgreint hugbúnaðarverndarlíkan endurspeglast beint í C/C++ tungumálalíkaninu, sem gerir það kleift að nota það til að vernda núverandi forrit (aðeins er krafist endursamsetningar og keyrslu á búnaði sem styður ISA CHERIoT).

Fyrirhuguð lausn gerir þér kleift að loka fyrir villur sem valda því að hlutur fer út fyrir minnismörk, leyfir ekki bendiskipti (allir ábendingar verða að vera búnir til úr núverandi bendilum) og fylgist með minnisaðgangi eftir losun (allur aðgangur að minni með rangri bendill eða bendil sem vísar til lauss hluts leiðir til þess að undantekningu er kastað). Til dæmis, með því að nota CHERIoT gerir þér kleift að innleiða sjálfvirka eftirlit með mörkum, mælingu á minni ævi og framfylgni bendils í íhlutum sem meðhöndla ótraust gögn án þess að þurfa að breyta kóða.

Verkefnið felur í sér forskrift á útvíkkuðum CHERIoT kennslusetta arkitektúr, viðmiðunarútfærslu á 32 bita RISC-V CPU sem styður CHERIoT ISA og breytt LLVM verkfærasett. Skýringarmyndir örgjörva frumgerða og lýsingar á vélbúnaðarblokkum í Verilog er dreift undir Apache 2.0 leyfinu. Ibex kjarninn úr lowRISC verkefninu var notaður sem grunnur fyrir CPU. CHERIoT ISA kóða líkanið er skilgreint á Sail tungumálinu og er með leyfi samkvæmt BSD leyfinu.

Að auki er lögð til frumgerð af CHERIoT RTOS rauntíma stýrikerfinu, sem veitir möguleika á að einangra hólf jafnvel á innbyggðum kerfum með 256 MB af vinnsluminni. CHERIoT RTOS kóðinn er skrifaður í C++ og er dreift undir MIT leyfinu. Grunnþættir stýrikerfisins, svo sem ræsiforrit, tímaáætlun og minnisdreifingarkerfi, eru hannaðir í formi hólfa.

Hólf í CHERIoT RTOS er einangruð samsetning af kóða og alþjóðlegum breytum sem líkist sameiginlegu bókasafni, en ólíkt því síðarnefnda getur það breytt ástandi sínu (breytanlegt) og keyrt í sérstöku öryggissamhengi. Enginn kóði að utan getur flutt stjórn yfir á kóða í hólf og fengið aðgang að hlutum, nema með því að fá aðgang að sérskilgreindum inngangsstöðum og nota ábendingar að hlutum sem eru sérstaklega sendar þegar hringt er í annað hólf. Heiðarleiki og trúnaður er tryggður fyrir kóða og alþjóðlega hluti í hólfi.

Heimild: opennet.ru

Bæta við athugasemd