தனிமைப்படுத்தப்பட்ட ஸ்கிரிப்ட்களிலிருந்து கணினி கட்டளைகளை அழைக்க அனுமதிக்கும் பைத்தானில் உள்ள பாதிப்பு

பைதான் 2.7 இல் தோன்றிய நீண்ட காலமாக அறியப்பட்ட பிழையின் பயன்பாட்டின் அடிப்படையில் பைத்தானில் உள்ள தனிமைப்படுத்தப்பட்ட குறியீடு செயல்படுத்தல் அமைப்புகளைத் தவிர்ப்பதற்கான ஒரு முறை வெளியிடப்பட்டது, இது 2012 இல் கண்டறியப்பட்டது மற்றும் பைதான் 3 இல் இன்னும் சரி செய்யப்படவில்லை. பிழை சிறப்பாக இணைக்கப்பட்டதைப் பயன்படுத்த அனுமதிக்கிறது. பைத்தானில் ஏற்கனவே விடுவிக்கப்பட்ட நினைவகத்திற்கான அணுகலைத் தொடங்க பைதான் குறியீடு (பயன்படுத்த-பிறகு-இலவசம்). ஆரம்பத்தில், பிழை பாதுகாப்பு அச்சுறுத்தலை ஏற்படுத்தவில்லை என்றும், பொதுவாக செயற்கையாக உருவாக்கப்பட்ட மிகவும் அரிதான சந்தர்ப்பங்களில் மட்டுமே ஸ்கிரிப்ட்டின் அசாதாரணமான முடிவுக்கு வழிவகுக்கும் என்றும் கருதப்பட்டது.

kn32 என்ற புனைப்பெயரின் கீழ் உள்ள ஒரு பாதுகாப்பு ஆய்வாளர் சிக்கலில் ஆர்வம் காட்டினார் மற்றும் os.system போன்ற முறைகளுக்கு நேரடி அணுகல் இல்லாமல் எந்த கணினி கட்டளையையும் அழைப்பதை சாத்தியமாக்கும் ஒரு வேலை சுரண்டலைத் தயாரிக்க முடிந்தது. சுரண்டல் தூய பைத்தானில் செயல்படுத்தப்படுகிறது மற்றும் வெளிப்புற நூலகங்களை இறக்குமதி செய்யாமல் மற்றும் "code.__new__" ஹேண்ட்லரை நிறுவாமல் செயல்படுகிறது. கொக்கிகளில், "builtin.__id__" மட்டுமே பயன்படுத்தப்படுகிறது, இது பொதுவாக தடை செய்யப்படவில்லை. நடைமுறையில், முன்மொழியப்பட்ட குறியீடு பல்வேறு சேவைகள் மற்றும் சூழல்களில் (உதாரணமாக, கற்றல் சூழல்கள், ஆன்லைன் ஷெல்கள், உள்ளமைக்கப்பட்ட ஹேண்ட்லர்கள், முதலியன) தனிமைப்படுத்தும் பொறிமுறைகளைத் தவிர்க்கப் பயன்படுத்தப்படலாம், இது பைதான் குறியீட்டை செயல்படுத்த அனுமதிக்கிறது, ஆனால் கட்டுப்படுத்துகிறது கிடைக்கும் அழைப்புகள் மற்றும் os.system போன்ற அழைப்பு முறைகளை அனுமதிக்க வேண்டாம்.

முன்மொழியப்பட்ட குறியீடு os.system அழைப்பின் அனலாக் ஆகும், இது CPython இல் உள்ள பாதிப்பைப் பயன்படுத்தி செயல்படுகிறது. எக்ஸ்ப்ளோயிட் பைதான் 3 இன் அனைத்து பதிப்புகளிலும் x86-64 கட்டமைப்பைக் கொண்ட கணினிகளில் வேலை செய்கிறது மற்றும் உபுண்டு 22.04 இல் PIE, RELRO மற்றும் CET பாதுகாப்பு முறைகள் இயக்கப்பட்டாலும் நிலையான செயல்பாட்டைக் காட்டுகிறது. இயங்கக்கூடிய CPython குறியீட்டில் உள்ள செயல்பாடுகளில் ஒன்றின் முகவரியைப் பற்றி பைதான் குறியீட்டிலிருந்து தகவலைப் பெறுவதற்கான பணி கீழே வருகிறது. இந்த முகவரியின் அடிப்படையில், நினைவகத்தில் உள்ள CPython இன் அடிப்படை முகவரி மற்றும் நினைவகத்தில் ஏற்றப்பட்ட libc நிகழ்வில் கணினி() செயல்பாட்டின் முகவரி ஆகியவை கணக்கிடப்படுகின்றன. முடிவில், "/bin/sh" என்ற வரிக்கு முதல் வாதத்தின் சுட்டியை மாற்றுவதன் மூலம் ஒரு குறிப்பிட்ட கணினி முகவரிக்கு நேரடி மாற்றம் தொடங்கப்படுகிறது.

தனிமைப்படுத்தப்பட்ட ஸ்கிரிப்ட்களிலிருந்து கணினி கட்டளைகளை அழைக்க அனுமதிக்கும் பைத்தானில் உள்ள பாதிப்பு


ஆதாரம்: opennet.ru

கருத்தைச் சேர்