Microsoft onthul CHERIoT, 'n hardeware-oplossing om die sekuriteit van C-kode te verbeter

Microsoft het ontwikkelings ontdek wat verband hou met die CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things)-projek, wat daarop gemik is om sekuriteitsprobleme in bestaande kode in C en C++ te blokkeer. CHERIoT bied 'n oplossing waarmee u bestaande C/C++-kodebasisse kan beskerm sonder dat u dit hoef te herwerk. Beskerming word geïmplementeer deur die gebruik van 'n gewysigde samesteller wat 'n spesiale uitgebreide stel verwerkerinstruksies (ISA) gebruik, verskaf deur die verwerker en op hardewarevlak monitering van geheuetoegang, kontrolering van die korrektheid van werk met wysers en versekering van isolasie van kodeblokke.

Die projek is geskep met die oog op die feit dat die lae-vlak aard van die C-taal 'n bron van foute word wanneer daar met geheue gewerk word, wat lei tot probleme soos buffer-oorvloei, toegang tot reeds vrygemaakte geheue, wyserverwysings of dubbelvrystellings. . Praktyk toon dat selfs groot korporasies soos Google en Microsoft, wat 'n streng veranderingshersieningsbeleid het en moderne ontwikkelingsmetodes en statiese analise-instrumente gebruik, nie die afwesigheid van foute kan waarborg wanneer met geheue gewerk word nie (byvoorbeeld ongeveer 70% van kwesbaarhede in Microsoft en Google word veroorsaak deur geheue-onsekerheid).

Die probleem kan opgelos word deur programmeertale te gebruik wat veilige werking met geheue waarborg, of bindings met bykomende kontrole, byvoorbeeld deur in plaas van gewone wysers soos MiraclePtr (raw_ptr) te gebruik, wat addisionele kontroles uitvoer vir toegang tot bevryde geheue-areas. Maar sulke metodes is meer geskik vir nuwe kode, en die herbewerking van bestaande C/C++-projekte is nogal problematies, veral as hulle ontwerp is om in hulpbronbeperkte omgewings te werk, soos ingebedde stelsels en Internet of Things-toestelle.

CHERIoT hardeware komponente is ontwerp as 'n mikrobeheerder gebaseer op die RISC-V argitektuur, wat die beskermde CHERI (Capability Hardware Extension to RISC-V) verwerker argitektuur implementeer, wat 'n model van beheerde geheue toegang bied gebaseer op "vermoë" (elke lees en skryf) operasie na die geheue is gemagtig). Gebaseer op die instruksiestel-argitektuur (ISA) wat in CHERIoT verskaf word, word 'n sagtewaremodel gebou wat die veiligheid waarborg om met geheue op die vlak van individuele voorwerpe te werk, beskerming bied teen toegang tot reeds vrygemaakte geheue, en 'n liggewig geheuetoegang-isolasiestelsel implementeer . Die gespesifiseerde sagtewarebeskermingsmodel word direk in die C/C++-taalmodel weerspieël, wat dit toelaat om gebruik te word om bestaande toepassings te beskerm (slegs hersamestelling en loop op toerusting wat ISA CHERIoT ondersteun word vereis).

Die voorgestelde oplossing laat jou toe om foute te blokkeer wat veroorsaak dat 'n voorwerp oor die grense van geheue gaan, laat nie wyservervanging toe nie (alle wysers moet vanaf bestaande wysers gegenereer word), en monitor geheuetoegang na vrystelling (enige toegang tot geheue met 'n verkeerde wyser of 'n wyser wat na 'n vrygestelde voorwerp verwys, lei daartoe dat 'n uitsondering gegooi word). Die gebruik van CHERIoT laat jou byvoorbeeld toe om outomatiese grenskontrolering, geheue-lewenslangenasporing en wyserintegriteit-afdwinging te implementeer in komponente wat onbetroubare data hanteer sonder om enige kodeveranderings te vereis.

Die projek sluit 'n spesifikasie van die uitgebreide CHERIoT-instruksiestel-argitektuur in, 'n verwysingsimplementering van 'n 32-bis RISC-V-SVE wat die CHERIoT ISA ondersteun, en 'n gewysigde LLVM-gereedskapstel. SVE-prototipe-diagramme en hardewareblokbeskrywings in Verilog word onder die Apache 2.0-lisensie versprei. Die Ibex-kern van die lowRISC-projek is as basis vir die SVE gebruik. Die CHERIoT ISA-kodemodel word in die Sail-taal gedefinieer en is onder die BSD-lisensie gelisensieer.

Daarbenewens word 'n prototipe van die CHERIoT RTOS-intydse bedryfstelsel voorgestel, wat die vermoë bied om kompartemente te isoleer, selfs op ingeboude stelsels met 256 MB RAM. Die CHERIoT RTOS-kode is in C++ geskryf en word onder die MIT-lisensie versprei. Die basiese komponente van die bedryfstelsel, soos die selflaaiprogram, skeduleerder en geheueverspreidingstelsel, is ontwerp in die vorm van kompartemente.

'n Kompartement in CHERIoT RTOS is 'n geïsoleerde kombinasie van kode en globale veranderlikes wat soos 'n gedeelde biblioteek lyk, maar anders as laasgenoemde, kan dit sy toestand verander (veranderbaar) en in 'n aparte sekuriteitskonteks loop. Geen kode van buite kan beheer na kode in 'n kompartement oordra en toegang verkry tot voorwerpe nie, behalwe deur toegang tot spesiaal gedefinieerde toegangspunte te verkry en wysers te gebruik na voorwerpe wat eksplisiet deurgegee word wanneer 'n ander kompartement geroep word. Integriteit en vertroulikheid word gewaarborg vir kode en globale voorwerpe in 'n kompartement.

Bron: opennet.ru

Voeg 'n opmerking