Microsoft qhib CHERioT, kho vajtse daws teeb meem los txhim kho C Code Security

Microsoft tau tshawb pom cov kev txhim kho uas cuam tshuam nrog CHERIoT (Kev Muaj Peev Xwm Kho Mob Ntxiv rau RISC-V rau Is Taws Nem ntawm Yam), tsom rau kev thaiv cov teeb meem kev nyab xeeb hauv cov cai uas twb muaj lawm hauv C thiab C ++. CHERioT muaj cov kev daws teeb meem uas tso cai rau koj los tiv thaiv C / C ++ codebases uas twb muaj lawm yam tsis tas yuav rov ua haujlwm dua. Kev tiv thaiv yog siv los ntawm kev siv cov kev hloov pauv uas siv cov txheej txheem txuas ntxiv tshwj xeeb ntawm cov lus qhia processor (ISA), muab los ntawm processor thiab ntawm qib kho vajtse saib xyuas lub cim xeeb nkag, tshawb xyuas qhov tseeb ntawm kev ua haujlwm nrog cov taw qhia thiab xyuas kom muaj kev sib cais ntawm cov lej thaiv.

Lub phiaj xwm tau tsim nrog lub qhov muag rau qhov tseeb tias qhov qis qis ntawm cov lus C dhau los ua qhov yuam kev thaum ua haujlwm nrog lub cim xeeb, ua rau muaj teeb meem xws li tsis muaj dej txaus, nkag mus rau lub cim xeeb uas twb tau tso tseg, tus pointer dereferences, los yog ob npaug ntxiv. . Kev xyaum qhia tau hais tias txawm tias cov tuam txhab loj xws li Google thiab Microsoft, uas muaj kev hloov pauv kev tshuaj xyuas nruj thiab siv cov kev txhim kho niaj hnub thiab cov cuab yeej tshuaj ntsuam zoo li qub, tsis tuaj yeem lav qhov tsis muaj qhov yuam kev thaum ua haujlwm nrog kev nco (piv txwv li, txog 70% ntawm qhov tsis zoo hauv Microsoft. thiab Google yog tshwm sim los ntawm kev tuav tsis ruaj ntseg).

Qhov teeb meem tuaj yeem daws tau los ntawm kev siv cov lus programming uas lav kev ua haujlwm ruaj ntseg nrog lub cim xeeb, lossis khi nrog cov tshev ntxiv, piv txwv li, los ntawm kev siv es tsis txhob siv cov ntsiab lus zoo ib yam li MiraclePtr (raw_ptr), uas ua cov tshev ntxiv rau kev nkag mus rau thaj chaw nco. Tab sis cov txheej txheem zoo li no tsim nyog rau cov cai tshiab, thiab rov ua haujlwm C / C ++ cov haujlwm uas twb muaj lawm yog qhov teeb meem heev, tshwj xeeb tshaj yog tias lawv tau tsim los khiav hauv qhov chaw muaj kev txwv, xws li cov tshuab kos thiab Internet ntawm Yam khoom siv.

CHERIoT hardware Cheebtsam yog tsim los ua microcontroller raws li RISC-V architecture, siv cov kev tiv thaiv CHERI (Capability Hardware Extension to RISC-V) processor architecture, uas muab cov qauv ntawm kev tswj kev nco nkag raws li "muaj peev xwm" (txhua tus nyeem thiab sau ntawv. kev ua haujlwm rau lub cim xeeb tau tso cai). Raws li cov lus qhia teeb tsa architecture (ISA) muab hauv CHERioT, software qauv tsim los ua kom muaj kev nyab xeeb ntawm kev ua haujlwm nrog lub cim xeeb ntawm qib ntawm tus kheej cov khoom, muab kev tiv thaiv kev nkag mus rau lub cim xeeb uas twb tso tawm lawm, thiab siv lub teeb pom kev nco nkag mus cais tawm. . Cov qauv kev tiv thaiv software tshwj xeeb tau cuam tshuam ncaj qha rau hauv C / C ++ hom lus, uas tso cai rau nws siv los tiv thaiv cov ntawv thov uas twb muaj lawm (tsuas yog rov ua dua thiab ua haujlwm ntawm cov khoom siv uas txhawb nqa ISA CHERioT yog xav tau).

Txoj kev daws teeb meem tso cai rau koj los thaiv qhov yuam kev uas ua rau ib qho khoom mus dhau ntawm ciam teb ntawm lub cim xeeb, tsis tso cai hloov pauv tus pointer (tag nrho cov pointers yuav tsum tau tsim los ntawm cov pointers uas twb muaj lawm), thiab saib xyuas lub cim xeeb nkag tom qab tso tawm (txhua qhov kev nkag mus rau lub cim xeeb siv qhov tsis raug. pointer los yog tus pointer referencing ib qho khoom pub dawb ua rau muaj kev zam raug pov tseg). Piv txwv li, siv CHERioT tso cai rau koj los siv cov kev ntsuas tsis siv neeg ciam teb, nco txog lub neej taug qab, thiab taw qhia kev ncaj ncees hauv cov khoom uas tswj cov ntaub ntawv tsis ntseeg yam tsis tas yuav muaj kev hloov pauv.

Txoj haujlwm no suav nrog cov lus qhia tshwj xeeb ntawm qhov txuas ntxiv CHERIoT cov lus qhia teeb tsa, kev siv siv 32-ntsis RISC-V CPU txhawb nqa CHERIoT ISA, thiab cov cuab yeej hloov kho LLVM. CPU qauv daim duab thiab kho vajtse thaiv cov lus piav qhia hauv Verilog tau muab faib raws li Apache 2.0 daim ntawv tso cai. Ibex core los ntawm qhov project lowRISC tau siv los ua lub hauv paus rau CPU. Tus qauv CHERIoT ISA code yog txhais ua lus Sail thiab muaj ntawv tso cai raws li BSD daim ntawv tso cai.

Tsis tas li ntawd, tus qauv qauv ntawm lub sijhawm ua haujlwm ntawm lub sijhawm tiag tiag CHERioT RTOS tau npaj siab, uas muab lub peev xwm los cais cov khoom sib cais txawm tias nyob rau hauv cov kab ke nrog 256 MB ntawm RAM. CHERioT RTOS code yog sau rau hauv C ++ thiab muab faib raws li MIT daim ntawv tso cai. Cov khoom tseem ceeb ntawm OS, xws li bootloader, lub sijhawm teem sijhawm thiab lub cim xeeb faib khoom, yog tsim los ntawm cov khoom sib txuas.

Ib qho chaw hauv CHERioT RTOS yog ib qho kev sib cais ntawm cov cai thiab cov kev hloov pauv thoob ntiaj teb uas zoo li lub tsev qiv ntawv sib koom, tab sis tsis zoo li yav tas los, nws tuaj yeem hloov nws lub xeev (mutable) thiab khiav hauv ib qho kev ruaj ntseg sib cais. Tsis muaj tus lej los ntawm sab nraud tuaj yeem hloov pauv kev tswj hwm mus rau cov lej hauv ib chav thiab nkag mus rau cov khoom, tshwj tsis yog los ntawm kev nkag mus rau cov ntsiab lus tshwj xeeb uas tau teev tseg thiab siv cov pointers rau cov khoom uas tau dhau los thaum hu rau lwm qhov chaw. Kev ncaj ncees thiab kev tsis pub lwm tus paub yog lav rau cov cai thiab cov khoom thoob ntiaj teb hauv ib chav.

Tau qhov twg los: opennet.ru

Ntxiv ib saib