Mae Microsoft yn datgelu CHERIOT, datrysiad caledwedd i wella diogelwch cod C

Mae Microsoft wedi darganfod datblygiadau sy'n ymwneud â phrosiect CHERIOT (Capability Hardware Extension to RISC-V for Internet of Things), gyda'r nod o rwystro problemau diogelwch yn y cod presennol yn C a C ++. Mae CHERIOT yn cynnig datrysiad sy'n eich galluogi i amddiffyn cronfeydd cod C / C ++ presennol heb fod angen eu hailweithio. Mae amddiffyniad yn cael ei weithredu trwy ddefnyddio casglwr wedi'i addasu sy'n defnyddio set estynedig arbennig o gyfarwyddiadau prosesydd (ISA), a ddarperir gan y prosesydd ac ar lefel caledwedd monitro mynediad cof, gwirio cywirdeb gwaith gydag awgrymiadau a sicrhau ynysu blociau cod.

Crëwyd y prosiect gyda llygad ar y ffaith bod natur lefel isel yr iaith C yn dod yn ffynhonnell gwallau wrth weithio gyda’r cof, gan arwain at broblemau fel gorlifiadau byffer, mynediad at gof sydd eisoes wedi’i ryddhau, dadgyfeiriadau pwyntydd, neu ryddhad dwbl. . Mae ymarfer yn dangos na all hyd yn oed corfforaethau mawr fel Google a Microsoft, sydd â pholisi adolygu newid llym ac sy'n defnyddio dulliau datblygu modern ac offer dadansoddi statig, warantu absenoldeb gwallau wrth weithio gyda chof (er enghraifft, tua 70% o wendidau yn Microsoft a Google yn cael eu hachosi gan drin cof anniogel).

Gellir datrys y broblem trwy ddefnyddio ieithoedd rhaglennu sy'n gwarantu gweithrediad diogel gyda chof, neu rwymiadau gyda gwiriadau ychwanegol, er enghraifft, trwy ddefnyddio yn lle awgrymiadau cyffredin fel MiraclePtr (raw_ptr), sy'n perfformio gwiriadau ychwanegol ar gyfer cyrchu ardaloedd cof rhydd. Ond mae dulliau o'r fath yn fwy addas ar gyfer cod newydd, ac mae ail-weithio prosiectau C / C ++ presennol yn eithaf problemus, yn enwedig os ydynt wedi'u cynllunio i redeg mewn amgylcheddau â chyfyngiadau adnoddau, megis systemau mewnosodedig a dyfeisiau Rhyngrwyd Pethau.

Mae cydrannau caledwedd CHERIOT wedi'u cynllunio fel microreolydd yn seiliedig ar bensaernïaeth RISC-V, gan weithredu pensaernïaeth prosesydd CHERI (Ystyniad Caledwedd Gallu i RISC-V) gwarchodedig, sy'n darparu model o fynediad cof rheoledig yn seiliedig ar “gallu” (pob un yn darllen ac yn ysgrifennu awdurdodir gweithrediad i'r cof). Yn seiliedig ar bensaernïaeth set gyfarwyddiadau (ISA) a ddarperir yn CHERIOT, mae model meddalwedd yn cael ei adeiladu sy'n gwarantu diogelwch gweithio gyda chof ar lefel gwrthrychau unigol, yn darparu amddiffyniad rhag mynediad at gof sydd eisoes wedi'i ryddhau, ac yn gweithredu system ynysu mynediad cof ysgafn. . Mae'r model diogelu meddalwedd penodedig yn cael ei adlewyrchu'n uniongyrchol yn y model iaith C/C++, sy'n caniatáu iddo gael ei ddefnyddio i ddiogelu cymwysiadau presennol (dim ond angen ail-grynhoi a rhedeg ar offer sy'n cefnogi ISA CHERIOT).

Mae'r datrysiad arfaethedig yn caniatáu ichi rwystro gwallau sy'n achosi gwrthrych i fynd y tu hwnt i ffiniau cof, nid yw'n caniatáu amnewid pwyntydd (rhaid cynhyrchu pob pwyntydd o'r awgrymiadau presennol), ac mae'n monitro mynediad cof ar ôl rhyddhau (unrhyw fynediad i'r cof gan ddefnyddio dyfais anghywir pwyntydd neu bwyntydd sy'n cyfeirio at wrthrych rhydd yn arwain at eithriad yn cael ei daflu). Er enghraifft, mae defnyddio CHERIOT yn eich galluogi i weithredu gwirio terfynau awtomatig, olrhain oes cof, a gorfodi cywirdeb pwyntydd mewn cydrannau sy'n trin data di-ymddiried heb fod angen unrhyw newidiadau cod.

Mae'r prosiect yn cynnwys manyleb o bensaernïaeth set gyfarwyddiadau CHERIOT estynedig, cyfeiriad gweithredu CPU RISC-V 32-did sy'n cefnogi ISA CHERIOT, a phecyn cymorth LLVM wedi'i addasu. Mae diagramau prototeip CPU a disgrifiadau bloc caledwedd yn Verilog yn cael eu dosbarthu o dan drwydded Apache 2.0. Defnyddiwyd craidd Ibex o'r prosiect lowRISC fel sail i'r CPU. Mae model cod ISA CHERIOT wedi'i ddiffinio yn yr iaith Hwylio ac wedi'i drwyddedu o dan y drwydded BSD.

Yn ogystal, cynigir prototeip o'r system weithredu amser real CHERIOT RTOS, sy'n darparu'r gallu i ynysu adrannau hyd yn oed ar systemau wedi'u mewnosod gyda 256 MB o RAM. Mae cod CHERIOT RTOS wedi'i ysgrifennu yn C ++ ac yn cael ei ddosbarthu o dan y drwydded MIT. Mae cydrannau sylfaenol yr AO, fel y cychwynnwr, yr amserlen a'r system ddosbarthu cof, wedi'u cynllunio ar ffurf adrannau.

Mae adran yn CHERIOT RTOS yn gyfuniad ynysig o god a newidynnau byd-eang sy'n debyg i lyfrgell a rennir, ond yn wahanol i'r olaf, gall newid ei chyflwr (mudadwy) a rhedeg mewn cyd-destun diogelwch ar wahân. Ni all unrhyw god o'r tu allan drosglwyddo rheolaeth i god mewn compartment a gwrthrychau mynediad, ac eithrio trwy gyrchu pwyntiau mynediad wedi'u diffinio'n arbennig a defnyddio awgrymiadau i wrthrychau a basiwyd yn benodol wrth alw adran arall. Mae uniondeb a chyfrinachedd yn cael eu gwarantu ar gyfer gwrthrychau cod a byd-eang mewn compartment.

Ffynhonnell: opennet.ru

Ychwanegu sylw