Linux కెర్నల్ చెత్త కలెక్టర్‌లో రేస్ పరిస్థితి, అది ప్రత్యేకాధికారాల పెరుగుదలకు దారితీస్తుంది

గూగుల్ ప్రాజెక్ట్ జీరో బృందం నుండి జాన్ హార్న్, ఒకప్పుడు స్పెక్టర్ మరియు మెల్ట్‌డౌన్ వల్నరబిలిటీలను గుర్తించాడు, Linux కెర్నల్ గార్బేజ్ కలెక్టర్‌లో దుర్బలత్వాన్ని (CVE-2021-4083) ఉపయోగించుకోవడానికి ఒక సాంకేతికతను ప్రచురించాడు. యునిక్స్ సాకెట్లలో ఫైల్ డిస్క్రిప్టర్‌లను శుభ్రపరిచేటప్పుడు రేస్ పరిస్థితి కారణంగా ఈ దుర్బలత్వం ఏర్పడుతుంది మరియు కెర్నల్ స్థాయిలో వారి కోడ్‌ని అమలు చేయడానికి స్థానిక అన్‌ప్రివిలేజ్డ్ యూజర్‌ను సంభావ్యంగా అనుమతిస్తుంది.

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

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

రేసు స్థితిలోకి వచ్చే అవకాశాన్ని పెంచడానికి, అనేక ఉపాయాలు ఉపయోగించబడ్డాయి, ఇది సిస్టమ్-నిర్దిష్ట ఆప్టిమైజేషన్‌లను పరిచయం చేసేటప్పుడు దోపిడీ విజయ సంభావ్యతను 30%కి పెంచడం సాధ్యమైంది. ఉదాహరణకు, ఫైల్ డిస్క్రిప్టర్‌లతో స్ట్రక్చర్‌ని యాక్సెస్ చేసే సమయాన్ని అనేక వందల నానోసెకన్‌ల వరకు పెంచడానికి, ప్రాసెసర్ కాష్ నుండి డేటా మరొక CPU కోర్‌లో యాక్టివిటీతో క్యాష్‌ను చెత్తగా వేయడం ద్వారా తొలగించబడింది, దీని వలన మెమరీ నుండి కాకుండా మెమరీ నుండి స్ట్రక్చర్‌ను తిరిగి పొందడం సాధ్యమైంది. వేగవంతమైన CPU కాష్.

రెండవ ముఖ్యమైన లక్షణం రేస్ పరిస్థితి సమయాన్ని పెంచడానికి హార్డ్‌వేర్ టైమర్ ద్వారా ఉత్పన్నమయ్యే అంతరాయాలను ఉపయోగించడం. క్షణం ఎంపిక చేయబడింది, తద్వారా రేస్ పరిస్థితి సంభవించినప్పుడు అంతరాయ హ్యాండ్లర్ కాల్పులు జరిపి, కోడ్ అమలుకు కొంత సమయం అంతరాయం కలిగిస్తుంది. నియంత్రణ తిరిగి రావడాన్ని మరింత ఆలస్యం చేయడానికి, వెయిట్‌క్యూలో దాదాపు 50 వేల ఎంట్రీలు ఎపోల్‌ని ఉపయోగించి రూపొందించబడ్డాయి, దీనికి అంతరాయ హ్యాండ్లర్ ద్వారా శోధించడం అవసరం.

90 రోజుల నాన్-డిస్క్‌లోజర్ వ్యవధి తర్వాత దుర్బలత్వాన్ని ఉపయోగించుకునే సాంకేతికత బహిర్గతం చేయబడింది. సమస్య కెర్నల్ 2.6.32 నుండి కనిపిస్తుంది మరియు డిసెంబర్ ప్రారంభంలో పరిష్కరించబడింది. పరిష్కారము కెర్నల్ 5.16లో చేర్చబడింది మరియు పంపిణీలలో సరఫరా చేయబడిన కెర్నల్ మరియు కెర్నల్ ప్యాకేజీల యొక్క LTS శాఖలకు కూడా బదిలీ చేయబడింది. ఇలాంటి సమస్య CVE-2021-0920 యొక్క విశ్లేషణ సమయంలో దుర్బలత్వాన్ని గుర్తించడం గమనార్హం, ఇది MSG_PEEK ఫ్లాగ్‌ను ప్రాసెస్ చేస్తున్నప్పుడు చెత్త కలెక్టర్‌లో వ్యక్తమవుతుంది.

మూలం: opennet.ru

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