Snap ప్యాకేజీ నిర్వహణ టూల్‌కిట్‌లో స్థానిక రూట్ దుర్బలత్వాలు

SUID రూట్ ఫ్లాగ్‌తో అందించబడిన స్నాప్-కన్ఫైన్ యుటిలిటీలో క్వాలిస్ రెండు దుర్బలత్వాలను (CVE-2021-44731, CVE-2021-44730) గుర్తించింది మరియు స్వీయ-నియంత్రణ ప్యాకేజీలలో డెలివరీ చేయబడిన అప్లికేషన్‌ల కోసం ఎక్జిక్యూటబుల్ ఎన్విరాన్‌మెంట్‌ని సృష్టించడానికి snapd ప్రక్రియ ద్వారా పిలువబడుతుంది. స్నాప్ ఆకృతిలో. దుర్బలత్వాలు సిస్టమ్‌లో రూట్ అధికారాలతో కోడ్‌ని అమలు చేయడానికి స్థానిక అన్‌ప్రివిలేజ్డ్ వినియోగదారుని అనుమతిస్తాయి. ఉబుంటు 21.10, 20.04 మరియు 18.04 కోసం నేటి స్నాప్‌డ్ ప్యాకేజీ నవీకరణలో సమస్యలు పరిష్కరించబడ్డాయి.

మొదటి దుర్బలత్వం (CVE-2021-44730) హార్డ్ లింక్ మానిప్యులేషన్ ద్వారా దాడిని అనుమతిస్తుంది, అయితే సిస్టమ్ హార్డ్ లింక్ రక్షణను నిలిపివేయడం అవసరం (sysctl fs.protected_hardlinksని 0కి సెట్ చేస్తోంది). రూట్‌గా రన్ అయ్యే స్నాప్-అప్‌డేట్-ఎన్‌ఎస్ మరియు స్నాప్-డిస్కార్డ్-ఎన్‌ఎస్ హెల్పర్ ప్రోగ్రామ్‌ల ఎక్జిక్యూటబుల్ ఫైల్‌ల లొకేషన్ యొక్క తప్పు ధృవీకరణ కారణంగా సమస్య ఏర్పడింది. ఈ ఫైల్‌లకు మార్గం /proc/self/exe నుండి దాని స్వంత మార్గం ఆధారంగా sc_open_snapd_tool() ఫంక్షన్‌లో లెక్కించబడుతుంది, ఇది మీ డైరెక్టరీలో స్నాప్-కన్‌ఫైన్ చేయడానికి మరియు స్నాప్- యొక్క మీ స్వంత వెర్షన్‌లను ఉంచడానికి హార్డ్ లింక్‌ని సృష్టించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఈ డైరెక్టరీలో update-ns మరియు స్నాప్-యుటిలిటీలు డిస్కార్డ్-ns. హార్డ్ లింక్ ద్వారా అమలు చేసిన తర్వాత, రూట్ హక్కులతో స్నాప్-కన్‌ఫైన్, దాడి చేసే వ్యక్తి ద్వారా భర్తీ చేయబడిన ప్రస్తుత డైరెక్టరీ నుండి స్నాప్-అప్‌డేట్-ఎన్‌ఎస్ మరియు స్నాప్-డిస్కార్డ్-ఎన్‌ఎస్ ఫైల్‌లను ప్రారంభిస్తుంది.

రెండవ దుర్బలత్వం జాతి పరిస్థితి వల్ల ఏర్పడుతుంది మరియు డిఫాల్ట్ ఉబుంటు డెస్క్‌టాప్ కాన్ఫిగరేషన్‌లో ఉపయోగించుకోవచ్చు. ఉబుంటు సర్వర్‌లో దోపిడీ విజయవంతంగా పని చేయడానికి, మీరు ఇన్‌స్టాల్ చేస్తున్నప్పుడు “ఫీచర్ చేసిన సర్వర్ స్నాప్‌లు” విభాగం నుండి ప్యాకేజీలలో ఒకదాన్ని తప్పక ఎంచుకోవాలి. స్నాప్ ప్యాకేజీ కోసం మౌంట్ పాయింట్ నేమ్‌స్పేస్‌ను సిద్ధం చేసే సమయంలో సెటప్_ప్రైవేట్_మౌంట్() ఫంక్షన్‌లో రేస్ పరిస్థితి స్పష్టంగా కనిపిస్తుంది. ఈ ఫంక్షన్ తాత్కాలిక డైరెక్టరీని సృష్టిస్తుంది “/tmp/snap.$SNAP_NAME/tmp” లేదా దానిలోకి స్నాప్ ప్యాకేజీ కోసం డైరెక్టరీలను బైండ్-మౌంట్ చేయడానికి ఇప్పటికే ఉన్న దాన్ని ఉపయోగిస్తుంది.

తాత్కాలిక డైరెక్టరీ పేరు ఊహించదగినది కాబట్టి, దాడి చేసే వ్యక్తి యజమానిని తనిఖీ చేసిన తర్వాత, కానీ మౌంట్ సిస్టమ్ కాల్‌కు కాల్ చేయడానికి ముందు దాని కంటెంట్‌లను సింబాలిక్ లింక్‌తో భర్తీ చేయవచ్చు. ఉదాహరణకు, మీరు ఏకపక్ష డైరెక్టరీని సూచించే /tmp/snap.lxd డైరెక్టరీలో "/tmp/snap.lxd/tmp" అనే సిమ్‌లింక్‌ని సృష్టించవచ్చు మరియు మౌంట్()కి చేసిన కాల్ సిమ్‌లింక్‌ను అనుసరించి డైరెక్టరీని మౌంట్ చేస్తుంది స్నాప్ నేమ్‌స్పేస్. అదే విధంగా, మీరు మీ కంటెంట్‌లను /var/libలో మౌంట్ చేయవచ్చు మరియు /var/lib/snapd/mount/snap.snap-store.user-fstabని భర్తీ చేయడం ద్వారా, మీ /etc డైరెక్టరీని నేమ్‌స్పేస్‌లో మౌంట్ చేయవచ్చు. /etc/ld.so.preloadని భర్తీ చేయడం ద్వారా రూట్ హక్కులతో మీ లైబ్రరీని లోడ్ చేయడాన్ని నిర్వహించడానికి స్నాప్ ప్యాకేజీ.

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

మూలం: opennet.ru

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