స్పెక్టర్ దాడుల నుండి రక్షణను దాటవేయడానికి అనుమతించే eBPF సబ్‌సిస్టమ్‌లోని దుర్బలత్వాలు

Linux కెర్నల్ (CVE-2021-33624)లో ఒక దుర్బలత్వం గుర్తించబడింది, ఇది స్పెక్టర్ క్లాస్ దుర్బలత్వాలకు వ్యతిరేకంగా రక్షణను దాటవేయడానికి eBPF ఉపవ్యవస్థను ఉపయోగించడానికి అనుమతిస్తుంది, దీని వలన మెమొరీ యొక్క కంటెంట్‌లను గుర్తించడం సాధ్యమవుతుంది కొన్ని కార్యకలాపాల ఊహాజనిత అమలు. స్పెక్టర్ దాడికి ప్రివిలేజ్డ్ కోడ్‌లో నిర్దిష్ట క్రమమైన ఆదేశాల ఉనికి అవసరం, ఇది సూచనల ఊహాజనిత అమలుకు దారి తీస్తుంది. అమలు కోసం ప్రసారం చేయబడిన BPF ప్రోగ్రామ్‌లను మార్చడం ద్వారా, eBPFలో సారూప్య సూచనలను రూపొందించడం మరియు కెర్నల్ మెమరీ యొక్క కంటెంట్‌లను మరియు సైడ్ ఛానెల్‌ల ద్వారా భౌతిక మెమరీ యొక్క ఏకపక్ష ప్రాంతాలను లీక్ చేయడం సాధ్యపడుతుంది.

వెరిఫైయర్‌లోని లోపాల వల్ల ఈ దుర్బలత్వం ఏర్పడుతుంది, ఇది BPF ప్రోగ్రామ్‌లలో లోపాలు మరియు ఆమోదయోగ్యం కాని కార్యాచరణను గుర్తించడానికి ఉపయోగించబడుతుంది. వెరిఫైయర్ సాధ్యమయ్యే కోడ్ అమలు మార్గాలను వివరిస్తుంది, కానీ సూచనల సెట్ ఆర్కిటెక్చర్ యొక్క సెమాంటిక్స్ దృక్కోణం నుండి ఆమోదయోగ్యం కాని బ్రాంచ్ ఎంపికలను దాటవేస్తుంది. BPF ప్రోగ్రామ్‌ను అమలు చేస్తున్నప్పుడు, వెరిఫైయర్ ఖాతాలోకి తీసుకోని అటువంటి శాఖల ఎంపికలు ప్రాసెసర్ ద్వారా తప్పుగా అంచనా వేయబడతాయి మరియు ఊహాజనిత మోడ్‌లో అమలు చేయబడతాయి. ఉదాహరణకు, “లోడ్” ఆపరేషన్‌ను విశ్లేషించేటప్పుడు, నిర్దేశిత చిరునామాతో రిజిస్టర్‌ను ఉపయోగించాలని వెరిఫైయర్ ఆశించారు, దీని విలువ ఎల్లప్పుడూ పేర్కొన్న సరిహద్దుల్లోనే ఉంటుంది, అయితే దాడి చేసే వ్యక్తి ప్రాసెసర్ ఊహాజనిత ఆపరేషన్ చేయడానికి ప్రయత్నించే పరిస్థితులను సృష్టించగలడు. ధృవీకరణ షరతులకు అనుగుణంగా లేని చిరునామా.

కెర్నల్ 4.15 విడుదలైనప్పటి నుండి సమస్య కనిపిస్తుంది మరియు ప్యాచ్‌ల రూపంలో పరిష్కరించబడింది (1, 2, 3, 4). పంపిణీలలో (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch) దుర్బలత్వం స్థిరంగా లేదు.

అదనంగా, స్పెక్టర్ దుర్బలత్వాల నుండి రక్షించడానికి సాధనాల పనితీరు ప్రభావం గురించి మీరు గమనికను గమనించవచ్చు. గమనిక rr (రికార్డ్ మరియు రీప్లే) డీబగ్గర్ యొక్క ఆప్టిమైజేషన్ ఫలితాలను సంగ్రహిస్తుంది, ఇది Firefoxలో కష్టమైన-రిపీట్ లోపాలను డీబగ్ చేయడానికి Mozillaలో ఒకసారి సృష్టించబడింది. డైరెక్టరీల ఉనికిని తనిఖీ చేయడానికి ఉపయోగించే సిస్టమ్ కాల్‌లను కాష్ చేయడం వలన టెస్ట్ ప్రాజెక్ట్ కోసం "rr సోర్స్" ఆపరేషన్ 3 నిమిషాల 19 సెకన్ల నుండి 36 సెకన్లకు తగ్గించబడింది.

ఆప్టిమైజేషన్ రచయిత స్పెక్టర్ రక్షణను నిలిపివేసిన తర్వాత పనితీరు ఎలా మారుతుందో తనిఖీ చేయాలని నిర్ణయించుకున్నారు. సిస్టమ్‌ను “మిటిగేషన్స్=ఆఫ్” పరామితితో బూట్ చేసిన తర్వాత, ఆప్టిమైజేషన్ లేకుండా “rr మూలాల” అమలు సమయం 2 నిమిషాల 5 సెకన్లు (1.6 రెట్లు వేగంగా), మరియు ఆప్టిమైజేషన్‌తో ఇది 33 సెకన్లు (9% వేగంగా). ఆసక్తికరంగా, స్పెక్టర్ రక్షణను నిలిపివేయడం వలన కెర్నల్ స్థాయిలో కోడ్ అమలు సమయాన్ని 1.4 రెట్లు (2m9s నుండి 1m32s వరకు) తగ్గించడమే కాకుండా, వినియోగదారు స్థలంలో (1m9s నుండి 0m33s వరకు) అమలు సమయాన్ని సగానికి తగ్గించారు, బహుశా సామర్థ్యం తగ్గిన CPU కాష్ ఆపరేషన్ మరియు TLB కారణంగా. స్పెక్టర్ రక్షణ ప్రారంభించబడినప్పుడు రీసెట్ అవుతుంది.

మూలం: opennet.ru

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