స్నాప్ ప్యాకేజీ మేనేజ్‌మెంట్ టూల్‌కిట్‌లో రూట్ దుర్బలత్వం

క్వాలిస్ ఈ సంవత్సరం (CVE-2022-3328) స్నాప్-కన్ఫైన్ యుటిలిటీలో మూడవ ప్రమాదకరమైన దుర్బలత్వాన్ని గుర్తించింది, ఇది SUID రూట్ ఫ్లాగ్‌తో వస్తుంది మరియు స్వీయ-నియంత్రణ ప్యాకేజీలలో పంపిణీ చేయబడిన అప్లికేషన్‌ల కోసం ఎక్జిక్యూటబుల్ వాతావరణాన్ని సృష్టించడానికి snapd ప్రక్రియ ద్వారా పిలువబడుతుంది. స్నాప్ ఆకృతిలో. దుర్బలత్వం స్థానిక అన్‌రివిలేజ్డ్ యూజర్‌ని డిఫాల్ట్ ఉబుంటు కాన్ఫిగరేషన్‌లో రూట్‌గా కోడ్ అమలును సాధించడానికి అనుమతిస్తుంది. సమస్య snapd 2.57.6 విడుదలలో పరిష్కరించబడింది. ఉబుంటు యొక్క అన్ని మద్దతు ఉన్న శాఖల కోసం ప్యాకేజీ నవీకరణలు విడుదల చేయబడ్డాయి.

ఆసక్తికరంగా, స్నాప్-కన్‌ఫైన్‌లో ఇదే విధమైన ఫిబ్రవరి దుర్బలత్వాన్ని పరిష్కరించే ప్రక్రియలో ప్రశ్నలోని దుర్బలత్వం పరిచయం చేయబడింది. పరిశోధకులు ఉబుంటు సర్వర్ 22.04కు రూట్ యాక్సెస్‌ను అందించే పనిని సిద్ధం చేయగలిగారు, ఇది స్నాప్-కన్‌ఫైన్‌లోని దుర్బలత్వంతో పాటు, మల్టీపాత్ ప్రక్రియలో రెండు దుర్బలత్వాలను కూడా కలిగి ఉంటుంది (CVE-2022-41974, CVE-2022-41973) , ప్రివిలేజ్డ్ కమాండ్‌లు మరియు సింబాలిక్ లింక్‌లతో అసురక్షిత పనిని ప్రసారం చేసేటప్పుడు అధికార తనిఖీని దాటవేయడంతో అనుబంధించబడింది.

snap-confineలో దుర్బలత్వం తప్పక_mkdir_and_open_with_perms() ఫంక్షన్‌లోని రేస్ పరిస్థితి కారణంగా ఏర్పడింది, యజమానిని తనిఖీ చేసిన తర్వాత సింబాలిక్ లింక్‌తో ఉన్న /tmp/snap.$SNAP_NAME డైరెక్టరీకి ప్రత్యామ్నాయం నుండి రక్షించడానికి జోడించబడింది, కానీ మౌంట్ సిస్టమ్‌కు కాల్ చేయడానికి ముందు స్నాప్ ఫార్మాట్‌లో ప్యాకేజీ కోసం డైరెక్టరీలను బైండ్-మౌంట్ చేయడానికి కాల్ చేయండి. జోడించిన రక్షణ ఏమిటంటే /tmp/snap.$SNAP_NAME డైరెక్టరీని యాదృచ్ఛిక పేరుతో /tmpలో ఉన్న మరొక డైరెక్టరీకి మార్చడం మరియు అది రూట్ స్వంతం కాకపోతే.

/tmp/snap.$SNAP_NAME డైరెక్టరీ పేరుమార్పు ఆపరేషన్‌ను ఉపయోగించుకుంటున్నప్పుడు, స్నాప్ ప్యాకేజీ కంటెంట్‌ల రూట్ కోసం snap-confine /tmp/snap.rootfs_XXXXXX డైరెక్టరీని కూడా సృష్టిస్తుంది అనే వాస్తవాన్ని పరిశోధకులు ఉపయోగించుకున్నారు. పేరులోని "XXXXXX" భాగం mkdtemp() ద్వారా యాదృచ్ఛికంగా ఎంపిక చేయబడింది, అయితే "rootfs_XXXXXX" పేరుతో ఉన్న ప్యాకేజీ sc_instance_name_validate ఫంక్షన్‌లో ధృవీకరించబడుతుంది (అంటే $SNAP_NAME అనేది "rootfs_XXXXXX"కి సెట్ చేయబడి, ఆపై పేరు మార్చే ఆపరేషన్ రూట్ స్నాప్‌తో /tmp/snap.rootfs_XXXXXX డైరెక్టరీని ఓవర్‌రైట్ చేయడానికి దారి తీస్తుంది).

/tmp/snap.rootfs_XXXXXX యొక్క ఏకకాల వినియోగాన్ని సాధించడానికి మరియు /tmp/snap.$SNAP_NAME పేరు మార్చడానికి, స్నాప్-కంఫైన్ యొక్క రెండు సందర్భాలు ప్రారంభించబడ్డాయి. మొదటి ఉదాహరణ సృష్టించిన తర్వాత /tmp/snap.rootfs_XXXXXX, ప్రక్రియ బ్లాక్ చేయబడుతుంది మరియు రెండవ ఉదాహరణ rootfs_XXXXXX అనే ప్యాకేజీ పేరుతో ప్రారంభమవుతుంది, దీని వలన రెండవ సందర్భం యొక్క తాత్కాలిక డైరెక్టరీ /tmp/snap.$SNAP_NAME రూట్ డైరెక్టరీ /tmp/snap అవుతుంది. మొదటి వాటిలో .rootfs_XXXXXX. పేరు మార్చడం పూర్తయిన వెంటనే, రెండవ పర్యాయం క్రాష్ అయింది మరియు /tmp/snap.rootfs_XXXXXX రేస్ కండిషన్ మానిప్యులేషన్‌తో భర్తీ చేయబడింది, ఫిబ్రవరి దుర్బలత్వాన్ని ఉపయోగించుకునేటప్పుడు. ప్రత్యామ్నాయం తర్వాత, మొదటి ఉదాహరణ నుండి ఎగ్జిక్యూషన్ లాక్ తీసివేయబడింది మరియు దాడి చేసేవారు స్నాప్ రూట్ డైరెక్టరీపై పూర్తి నియంత్రణను పొందారు.

మౌంట్() కాల్ నుండి ఫైల్ సిస్టమ్‌లోని ఏదైనా డైరెక్టరీకి రైటబుల్ రియల్ డైరెక్టరీ /tmpని బైండ్-మౌంట్ చేయడానికి sc_bootstrap_mount_namespace() ఫంక్షన్ ద్వారా ఉపయోగించిన సిమ్‌లింక్ /tmp/snap.rootfs_XXXXXX/tmpని సృష్టించడం చివరి దశ. మౌంట్ చేయడానికి ముందు సిమ్‌లింక్‌లను అనుసరిస్తుంది. ఇటువంటి మౌంటు AppArmor పరిమితుల ద్వారా నిరోధించబడింది, కానీ ఈ బ్లాక్‌ను దాటవేయడానికి, దోపిడీ మల్టీపాత్‌లో రెండు సహాయక దుర్బలత్వాలను ఉపయోగించింది.

మూలం: opennet.ru

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