చెక్‌పాయింట్ సేఫ్-లింకింగ్ ప్రొటెక్షన్ టెక్నిక్‌ను ప్రతిపాదించింది, దీని వలన దుర్బలత్వాలను ఉపయోగించడం మరింత కష్టమవుతుంది

చెక్‌పాయింట్ కంపెనీ సమర్పించారు సేఫ్-లింకింగ్ ప్రొటెక్షన్ మెకానిజం, ఇది malloc కాల్‌ని అమలు చేస్తున్నప్పుడు కేటాయించిన బఫర్‌లకు పాయింటర్‌ల నిర్వచనం లేదా సవరణను మార్చే దోపిడీలను సృష్టించడం కష్టతరం చేస్తుంది. సేఫ్-లింకింగ్ దుర్బలత్వాలను ఉపయోగించుకునే అవకాశాన్ని పూర్తిగా నిరోధించదు, కానీ కనిష్ట ఓవర్‌హెడ్‌తో ఇది నిర్దిష్ట వర్గాల దోపిడీల సృష్టిని గణనీయంగా క్లిష్టతరం చేస్తుంది, ఎందుకంటే దోపిడీ చేయగల బఫర్ ఓవర్‌ఫ్లోతో పాటు, సమాచారం లీకేజీకి కారణమయ్యే మరొక దుర్బలత్వాన్ని కనుగొనడం అవసరం. మెమరీలో కుప్ప యొక్క స్థానం.

Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) మరియు Google TCMalloc కోసం సేఫ్-లింకింగ్‌ని అమలు చేసే ప్యాచ్‌లు సిద్ధం చేయబడ్డాయి మరియు Chromium (లో)లో రక్షణను అప్‌గ్రేడ్ చేయడానికి కూడా ప్రతిపాదించబడ్డాయి
2012 నుండి, Chromium ఇప్పటికే అదే సమస్యను పరిష్కరించే లక్ష్యంతో MaskPtr రక్షణ సాంకేతికతను నిర్మించింది, అయితే చెక్‌పాయింట్ నుండి పరిష్కారం అధిక పనితీరును ప్రదర్శిస్తుంది).
ఆగస్టు విడుదలలో డెలివరీ కోసం సూచించబడిన ప్యాచ్‌లు ఇప్పటికే ఆమోదించబడ్డాయి గ్లిబ్క్ 3.32 మరియు సేఫ్-లింకింగ్ డిఫాల్ట్‌గా ప్రారంభించబడుతుంది. uClibc-NG సేఫ్-లింకింగ్‌కు మద్దతు ఇస్తుంది ప్రవేశించింది విడుదల 1.0.33లో చేర్చబడింది మరియు డిఫాల్ట్‌గా ప్రారంభించబడింది. gperftoolsలో మార్పులు (పాత tcmalloc) ఆమోదించబడిన, కానీ భవిష్యత్ విడుదలలో ఒక ఎంపికగా అందించబడుతుంది.

డెవలపర్లు TCMalloc (కొత్త tcmalloc) అంగీకరించడానికి నిరాకరించింది మార్పు, తీవ్రమైన పనితీరు క్షీణతను ఉటంకిస్తూ, ప్రతిదీ ఆశించిన విధంగా పని చేస్తుందో లేదో క్రమం తప్పకుండా తనిఖీ చేయడానికి విస్తృతమైన పరీక్షలను జోడించాల్సిన అవసరం ఉంది. చెక్‌పాయింట్ ఇంజనీర్ల పరీక్షలో సేఫ్-లింకింగ్ పద్ధతి అదనపు మెమరీ వినియోగానికి దారితీయదని తేలింది మరియు హీప్ ఆపరేషన్‌లు చేసేటప్పుడు పనితీరు సగటున 0.02% మాత్రమే తగ్గిపోతుంది మరియు చెత్త సందర్భంలో 1.5% తగ్గింది (పోలిక కోసం, ఓవర్‌హెడ్ ఇన్ Chromiumలో ఉపయోగించే పద్ధతి "2% కంటే తక్కువ"గా అంచనా వేయబడింది). చేర్చడం
సేఫ్-లింక్ చేయడం వల్ల ఫ్రీ() అని పిలిచిన ప్రతిసారీ 2-3 అదనపు అసెంబ్లీ సూచనలు అమలు చేయబడతాయి మరియు malloc() అని పిలిచిన ప్రతిసారీ 3-4 సూచనలు ఉంటాయి. ప్రారంభ మరియు యాదృచ్ఛిక విలువ ఉత్పత్తి దశలను అమలు చేయడం అవసరం లేదు.

చెక్‌పాయింట్ సేఫ్-లింకింగ్ ప్రొటెక్షన్ టెక్నిక్‌ను ప్రతిపాదించింది, దీని వలన దుర్బలత్వాలను ఉపయోగించడం మరింత కష్టమవుతుంది

సేఫ్-లింకింగ్ అనేది వివిధ హీప్ ఇంప్లిమెంటేషన్‌ల భద్రతను మెరుగుపరచడానికి మాత్రమే కాకుండా, బఫర్‌ల పక్కనే ఉంచబడిన పాయింటర్‌ల యొక్క సింగిల్ లింక్డ్ జాబితాలను ఉపయోగించే ఏదైనా డేటా స్ట్రక్చర్‌లకు సమగ్రత నియంత్రణలను జోడించడానికి కూడా ఉపయోగించవచ్చు. ఈ పద్ధతిని అమలు చేయడం చాలా సులభం మరియు ఒక స్థూలాన్ని జోడించడం మరియు కోడ్‌లోని తదుపరి బ్లాక్‌కు పాయింటర్‌లకు వర్తింపజేయడం మాత్రమే అవసరం (ఉదాహరణకు, Glibc కోసం మార్పులు కోడ్ యొక్క కొన్ని పంక్తులు). ఈ పద్ధతి క్రింది మార్పులకు అనుగుణంగా ఉంటుంది:

+#PROTECT_PTR(pos, ptr) \ నిర్వచించండి
+ ((__typeof (ptr)) (((((size_t) pos) >> 12) ^ ((size_t) ptr)))

+# REVEAL_PTR(ptr) PROTECT_PTR (&ptr, ptr)ని నిర్వచించండి

- nextp = p->fd;
+ nextp = REVEAL_PTR (p->fd);
...

Fast-Bins మరియు TCache వంటి సింగిల్ లింక్డ్ జాబితాలను రక్షించడానికి ASLR అడ్రస్ రాండమైజేషన్ మెకానిజం (mmap_base) నుండి యాదృచ్ఛిక డేటాను ఉపయోగించడం ఈ పద్ధతి యొక్క సారాంశం. జాబితాలోని తదుపరి మూలకానికి పాయింటర్‌కు విలువ వర్తించే ముందు, అది ముసుగు మార్పిడిని నిర్వహిస్తుంది మరియు పేజీ అమరిక కోసం తనిఖీ చేస్తుంది. పాయింటర్ "(L >> PAGE_SHIFT) XOR (P)" ఆపరేషన్ ఫలితంగా భర్తీ చేయబడుతుంది, ఇక్కడ P అనేది పాయింటర్ యొక్క విలువ మరియు L అనేది పాయింటర్ నిల్వ చేయబడిన మెమరీ స్థానం.

చెక్‌పాయింట్ సేఫ్-లింకింగ్ ప్రొటెక్షన్ టెక్నిక్‌ను ప్రతిపాదించింది, దీని వలన దుర్బలత్వాలను ఉపయోగించడం మరింత కష్టమవుతుంది

సిస్టమ్‌లో ఉపయోగించినప్పుడు ASLR (అడ్రస్ స్పేస్ లేఅవుట్ రాండమైజేషన్) హీప్ బేస్ అడ్రస్‌తో ఉన్న L బిట్లలో కొంత భాగం యాదృచ్ఛిక విలువలను కలిగి ఉంటుంది, ఇవి P ఎన్‌కోడ్ చేయడానికి కీగా ఉపయోగించబడతాయి (12-బైట్ పేజీల కోసం 4096-బిట్ షిఫ్ట్ ఆపరేషన్ ద్వారా సంగ్రహించబడింది). ఈ తారుమారు దోపిడీలో పాయింటర్ హైజాకింగ్ ప్రమాదాన్ని తగ్గిస్తుంది, ఎందుకంటే పాయింటర్ దాని అసలు రూపంలో నిల్వ చేయబడదు మరియు దానిని భర్తీ చేయడానికి కుప్ప కేటాయింపు గురించి జ్ఞానం అవసరం. అదనంగా, ప్యాచ్ కోడ్ బ్లాక్ అలైన్‌మెంట్ కోసం అదనపు చెక్‌ను కూడా కలిగి ఉంది, ఇది పాయింటర్‌ను సమలేఖనం చేయని విలువతో భర్తీ చేయడానికి దాడి చేసేవారిని అనుమతించదు మరియు సమలేఖనం చేయబడిన బిట్‌ల సంఖ్య గురించి తెలుసుకోవడం అవసరం, ఇది 64-బిట్ సిస్టమ్‌లలో అదనంగా నిరోధించడాన్ని అనుమతిస్తుంది. సమలేఖనాన్ని పరిగణనలోకి తీసుకోని 15 దాడి ప్రయత్నాలలో 16 .

పాక్షిక పాయింటర్ రీరైటింగ్ (తక్కువ బైట్‌లను మార్చడం), పూర్తి పాయింటర్ రీరైటింగ్ (దాడి చేసేవారి కోడ్‌కి దారి మళ్లించడం) మరియు సమలేఖనం చేయని చిరునామాలో జాబితా స్థానాన్ని మార్చడం వంటి దాడుల నుండి రక్షించడానికి ఈ పద్ధతి ప్రభావవంతంగా ఉంటుంది. ఉదాహరణగా, mallocలో సేఫ్-లింకింగ్ ఉపయోగించడం ఇటీవల దోపిడీని నిరోధించడాన్ని అనుమతిస్తుంది అని చూపబడింది గుర్తించారు అదే బలహీనత పరిశోధకులచే CVE-2020-6007 ఫిలిప్స్ హ్యూ బ్రిడ్జ్ స్మార్ట్ లైట్‌లో, బఫర్ ఓవర్‌ఫ్లో ఏర్పడి, పరికరంపై నియంత్రణ సాధించడానికి మిమ్మల్ని అనుమతిస్తుంది.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి