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

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

kn32 అనే మారుపేరుతో ఉన్న ఒక భద్రతా పరిశోధకుడు సమస్యపై ఆసక్తిని కనబరిచాడు మరియు os.system వంటి పద్ధతులకు ప్రత్యక్ష ప్రాప్యత లేకుండా ఏదైనా సిస్టమ్ కమాండ్‌కి కాల్ చేయడం సాధ్యం చేసే పని దోపిడీని సిద్ధం చేయగలిగాడు. దోపిడీ స్వచ్ఛమైన పైథాన్‌లో అమలు చేయబడుతుంది మరియు బాహ్య లైబ్రరీలను దిగుమతి చేయకుండా మరియు “code.__new__” హ్యాండ్లర్‌ను ఇన్‌స్టాల్ చేయకుండా పని చేస్తుంది. హుక్స్‌లో, "బిల్టిన్.__id__" మాత్రమే ఉపయోగించబడుతుంది, ఇది సాధారణంగా నిషేధించబడదు. ఆచరణాత్మకంగా, ప్రతిపాదిత కోడ్‌ను వివిధ సేవలు మరియు పరిసరాలలో (ఉదాహరణకు, అభ్యాస పరిసరాలలో, ఆన్‌లైన్ షెల్‌లు, అంతర్నిర్మిత హ్యాండ్లర్లు మొదలైనవి) ఐసోలేషన్ మెకానిజమ్‌లను దాటవేయడానికి ఉపయోగించవచ్చు, ఇది పైథాన్ కోడ్‌ను అమలు చేయడానికి అనుమతిస్తుంది, కానీ పరిమితం చేస్తుంది అందుబాటులో ఉన్న కాల్‌లు మరియు os.system వంటి కాల్ పద్ధతులను అనుమతించవద్దు.

ప్రతిపాదిత కోడ్ os.system కాల్ యొక్క అనలాగ్, ఇది CPythonలో దుర్బలత్వాన్ని ఉపయోగించడం ద్వారా పని చేస్తుంది. ఎక్స్‌ప్లోయిట్ x3-86 ఆర్కిటెక్చర్‌తో ఉన్న సిస్టమ్‌లపై పైథాన్ 64 యొక్క అన్ని వెర్షన్‌లతో పనిచేస్తుంది మరియు PIE, RELRO మరియు CET ప్రొటెక్షన్ మోడ్‌లు ప్రారంభించబడినప్పటికీ ఉబుంటు 22.04లో స్థిరమైన ఆపరేషన్‌ను ప్రదర్శిస్తుంది. ఎక్జిక్యూటబుల్ CPython కోడ్‌లోని ఫంక్షన్‌లలో ఒకదాని చిరునామా గురించి పైథాన్ కోడ్ నుండి సమాచారాన్ని పొందడం వరకు పని వస్తుంది. ఈ చిరునామా ఆధారంగా, మెమరీలో CPython యొక్క మూల చిరునామా మరియు మెమరీలో లోడ్ చేయబడిన libc ఉదాహరణలో సిస్టమ్() ఫంక్షన్ యొక్క చిరునామా గణించబడతాయి. ముగింపులో, "/bin/sh" లైన్‌కు మొదటి ఆర్గ్యుమెంట్ యొక్క పాయింటర్ యొక్క ప్రత్యామ్నాయంతో నిర్దిష్ట సిస్టమ్ చిరునామాకు ప్రత్యక్ష పరివర్తన ప్రారంభించబడుతుంది.

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


మూలం: opennet.ru

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