C మరియు C++లో ఇప్పటికే ఉన్న కోడ్లో భద్రతా సమస్యలను నిరోధించే లక్ష్యంతో CHERIoT (ఇంటర్నెట్ ఆఫ్ థింగ్స్ కోసం RISC-Vకి కెపాబిలిటీ హార్డ్వేర్ ఎక్స్టెన్షన్) ప్రాజెక్ట్కి సంబంధించిన అభివృద్ధిని Microsoft కనుగొంది. CHERIoT ఇప్పటికే ఉన్న C/C++ కోడ్బేస్లను తిరిగి పని చేయాల్సిన అవసరం లేకుండా రక్షించడానికి మిమ్మల్ని అనుమతించే పరిష్కారాన్ని అందిస్తుంది. ప్రాసెసర్ మరియు హార్డ్వేర్ స్థాయిలో మెమరీ యాక్సెస్ను పర్యవేక్షించడం, పాయింటర్లతో పని యొక్క ఖచ్చితత్వాన్ని తనిఖీ చేయడం మరియు కోడ్ బ్లాక్ల ఐసోలేషన్ను నిర్ధారించడం ద్వారా అందించబడిన ప్రత్యేక పొడిగించిన ప్రాసెసర్ సూచనలను (ISA) ఉపయోగించే సవరించిన కంపైలర్ని ఉపయోగించడం ద్వారా రక్షణ అమలు చేయబడుతుంది.
మెమరీతో పనిచేసేటప్పుడు C భాష యొక్క తక్కువ-స్థాయి స్వభావం లోపాల మూలంగా మారుతుంది, ఇది బఫర్ ఓవర్ఫ్లోలు, ఇప్పటికే ఫ్రీడ్ మెమరీకి యాక్సెస్, పాయింటర్ డెరిఫరెన్స్లు లేదా డబుల్ ఫ్రీస్ వంటి సమస్యలకు దారితీస్తుందనే వాస్తవాన్ని దృష్టిలో ఉంచుకుని ప్రాజెక్ట్ రూపొందించబడింది. . Google మరియు Microsoft వంటి పెద్ద సంస్థలు కూడా ఖచ్చితమైన మార్పు సమీక్ష విధానాన్ని కలిగి ఉంటాయి మరియు ఆధునిక అభివృద్ధి పద్ధతులు మరియు స్థిర విశ్లేషణ సాధనాలను ఉపయోగిస్తాయి, మెమరీతో పని చేస్తున్నప్పుడు లోపాలు లేవని హామీ ఇవ్వలేవని ప్రాక్టీస్ చూపిస్తుంది (ఉదాహరణకు, Microsoftలో దాదాపు 70% దుర్బలత్వాలు మరియు Google అసురక్షిత మెమరీ నిర్వహణ వలన కలుగుతుంది).
మెమరీతో సురక్షితమైన ఆపరేషన్కు హామీ ఇచ్చే ప్రోగ్రామింగ్ భాషలను ఉపయోగించడం ద్వారా లేదా అదనపు తనిఖీలతో బైండింగ్ చేయడం ద్వారా సమస్యను పరిష్కరించవచ్చు, ఉదాహరణకు, విముక్తి పొందిన మెమరీ ప్రాంతాలను యాక్సెస్ చేయడానికి అదనపు తనిఖీలను చేసే MiraclePtr (raw_ptr) వంటి సాధారణ పాయింటర్లకు బదులుగా ఉపయోగించడం ద్వారా. కానీ అలాంటి పద్ధతులు కొత్త కోడ్కు మరింత అనుకూలంగా ఉంటాయి మరియు ఇప్పటికే ఉన్న C/C++ ప్రాజెక్ట్లను తిరిగి పని చేయడం చాలా సమస్యాత్మకం, ప్రత్యేకించి అవి ఎంబెడెడ్ సిస్టమ్లు మరియు ఇంటర్నెట్ ఆఫ్ థింగ్స్ పరికరాల వంటి వనరుల-నిబంధిత పరిసరాలలో అమలు చేయడానికి రూపొందించబడినట్లయితే.
CHERIoT హార్డ్వేర్ భాగాలు RISC-V ఆర్కిటెక్చర్ ఆధారంగా మైక్రోకంట్రోలర్గా రూపొందించబడ్డాయి, రక్షిత CHERI (RISC-Vకి కెపాబిలిటీ హార్డ్వేర్ ఎక్స్టెన్షన్) ప్రాసెసర్ ఆర్కిటెక్చర్ను అమలు చేస్తుంది, ఇది “సామర్థ్యం” (ప్రతి చదవడం మరియు వ్రాయడం) ఆధారంగా నియంత్రిత మెమరీ యాక్సెస్ యొక్క నమూనాను అందిస్తుంది. మెమరీకి ఆపరేషన్ అధికారం ఉంది) . CHERIoTలో అందించబడిన ఇన్స్ట్రక్షన్ సెట్ ఆర్కిటెక్చర్ (ISA) ఆధారంగా, ఒక సాఫ్ట్వేర్ మోడల్ నిర్మించబడింది, ఇది వ్యక్తిగత వస్తువుల స్థాయిలో మెమరీతో పని చేయడం యొక్క భద్రతకు హామీ ఇస్తుంది, ఇప్పటికే విడుదలైన మెమరీకి ప్రాప్యత నుండి రక్షణను అందిస్తుంది మరియు తేలికపాటి మెమరీ యాక్సెస్ ఐసోలేషన్ సిస్టమ్ను అమలు చేస్తుంది. . పేర్కొన్న సాఫ్ట్వేర్ రక్షణ నమూనా నేరుగా C/C++ భాషా నమూనాలో ప్రతిబింబిస్తుంది, ఇది ఇప్పటికే ఉన్న అప్లికేషన్లను రక్షించడానికి ఉపయోగించబడుతుంది (ISA CHERIoTకి మద్దతు ఇచ్చే పరికరాలపై మళ్లీ కంపైల్ చేయడం మరియు రన్ చేయడం మాత్రమే అవసరం).
ప్రతిపాదిత పరిష్కారం ఒక వస్తువు మెమరీ సరిహద్దులను దాటి వెళ్ళడానికి కారణమయ్యే లోపాలను నిరోధించడానికి మిమ్మల్ని అనుమతిస్తుంది, పాయింటర్ ప్రత్యామ్నాయాన్ని అనుమతించదు (అన్ని పాయింటర్లు తప్పనిసరిగా ఇప్పటికే ఉన్న పాయింటర్ల నుండి రూపొందించబడాలి) మరియు మెమరీ యాక్సెస్ను విముక్తి చేసిన తర్వాత (తప్పుని ఉపయోగించి మెమరీకి ఏదైనా యాక్సెస్ ఉంటే) పర్యవేక్షిస్తుంది పాయింటర్ లేదా పాయింటర్ విముక్తి పొందిన వస్తువును సూచించడం వలన మినహాయింపు విసిరివేయబడుతుంది). ఉదాహరణకు, CHERIoTని ఉపయోగించడం వలన ఎటువంటి కోడ్ మార్పులు అవసరం లేకుండా అవిశ్వసనీయ డేటాను నిర్వహించే భాగాలలో ఆటోమేటిక్ హద్దుల తనిఖీ, మెమరీ జీవితకాల ట్రాకింగ్ మరియు పాయింటర్ సమగ్రత అమలును అమలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
ప్రాజెక్ట్లో విస్తరించిన CHERIoT ఇన్స్ట్రక్షన్ సెట్ ఆర్కిటెక్చర్ స్పెసిఫికేషన్, CHERIOT ISAకి మద్దతు ఇచ్చే 32-బిట్ RISC-V CPU యొక్క సూచన అమలు మరియు సవరించిన LLVM టూల్కిట్ ఉన్నాయి. వెరిలాగ్లోని CPU ప్రోటోటైప్ రేఖాచిత్రాలు మరియు హార్డ్వేర్ బ్లాక్ వివరణలు Apache 2.0 లైసెన్స్ క్రింద పంపిణీ చేయబడ్డాయి. LowRISC ప్రాజెక్ట్ నుండి Ibex కోర్ CPUకి ఆధారంగా ఉపయోగించబడింది. CHERIoT ISA కోడ్ మోడల్ సెయిల్ భాషలో నిర్వచించబడింది మరియు BSD లైసెన్స్ క్రింద లైసెన్స్ పొందింది.
అదనంగా, నిజ-సమయ ఆపరేటింగ్ సిస్టమ్ CHERIoT RTOS యొక్క నమూనా ప్రతిపాదించబడింది, ఇది 256 MB RAMతో ఎంబెడెడ్ సిస్టమ్లలో కూడా కంపార్ట్మెంట్లను వేరుచేసే సామర్థ్యాన్ని అందిస్తుంది. CHERIoT RTOS కోడ్ C++లో వ్రాయబడింది మరియు MIT లైసెన్స్ క్రింద పంపిణీ చేయబడుతుంది. OS యొక్క ప్రాథమిక భాగాలు, బూట్లోడర్, షెడ్యూలర్ మరియు మెమరీ డిస్ట్రిబ్యూషన్ సిస్టమ్ వంటివి కంపార్ట్మెంట్ల రూపంలో రూపొందించబడ్డాయి.
CHERIoT RTOSలోని ఒక కంపార్ట్మెంట్ అనేది భాగస్వామ్య లైబ్రరీని పోలి ఉండే కోడ్ మరియు గ్లోబల్ వేరియబుల్స్ యొక్క వివిక్త కలయిక, కానీ రెండో దానిలా కాకుండా, ఇది తన స్థితిని (పరివర్తన చెందే) మార్చగలదు మరియు ప్రత్యేక భద్రతా సందర్భంలో అమలు చేయగలదు. ప్రత్యేకంగా నిర్వచించబడిన ఎంట్రీ పాయింట్లను యాక్సెస్ చేయడం మరియు మరొక కంపార్ట్మెంట్కు కాల్ చేసేటప్పుడు స్పష్టంగా పాస్ చేసిన వస్తువులకు పాయింటర్లను ఉపయోగించడం మినహా, బయటి నుండి ఏ కోడ్ కూడా కంపార్ట్మెంట్లోని కోడ్కి నియంత్రణను బదిలీ చేయదు మరియు వస్తువులను యాక్సెస్ చేయదు. కంపార్ట్మెంట్లోని కోడ్ మరియు గ్లోబల్ వస్తువులకు సమగ్రత మరియు గోప్యత హామీ ఇవ్వబడతాయి.
మూలం: opennet.ru