ரிமோட் கர்னல் செயலிழப்பை அனுமதிக்கும் 0-நாள் Linux IPv6 ஸ்டேக் பாதிப்பு

Linux கர்னலில் ஒரு திருத்தப்படாத (0-நாள்) பாதிப்பு (CVE-2023-2156) பற்றிய தகவல் வெளியிடப்பட்டுள்ளது, இது சிறப்பாக வடிவமைக்கப்பட்ட IPv6 பாக்கெட்டுகளை (பேக்கெட்-ஆஃப்-டெத்) அனுப்புவதன் மூலம் கணினியை நிறுத்த அனுமதிக்கிறது. RPL (குறைந்த சக்தி மற்றும் லாஸி நெட்வொர்க்குகளுக்கான ரூட்டிங் புரோட்டோகால்) நெறிமுறைக்கான ஆதரவு இயக்கப்பட்டால் மட்டுமே சிக்கல் தோன்றும், இது விநியோகங்களில் இயல்பாகவே முடக்கப்பட்டு, அதிக பாக்கெட் இழப்புடன் வயர்லெஸ் நெட்வொர்க்குகளில் இயங்கும் உட்பொதிக்கப்பட்ட சாதனங்களில் முக்கியமாகப் பயன்படுத்தப்படுகிறது.

RPL புரோட்டோகால் பாகுபடுத்தும் குறியீட்டில் வெளிப்புறத் தரவின் தவறான செயலாக்கத்தால் பாதிப்பு ஏற்படுகிறது, இது உறுதியான தோல்விக்கு வழிவகுக்கிறது மற்றும் கர்னல் பீதி நிலைக்கு செல்கிறது. IPv6 RPL பாக்கெட் தலைப்பை k_buff (Socket Buffer) கட்டமைப்பில் பாகுபடுத்துவதன் மூலம் பெறப்பட்ட தரவை வைக்கும்போது, ​​CmprI புலம் 15 ஆகவும், Segleft புலம் 1 ஆகவும், CmprE ஆக 0 ஆகவும் அமைக்கப்பட்டால், முகவரிகளுடன் கூடிய 48-பைட் வெக்டார் சிதைக்கப்படும். 528 பைட்டுகள் மற்றும் இடையகத்திற்கு ஒதுக்கப்பட்ட நினைவகம் போதுமானதாக இல்லாத சூழ்நிலை தோன்றும். இந்த வழக்கில், skb_push செயல்பாடு, தரவை கட்டமைப்பிற்குள் தள்ளப் பயன்படுகிறது, தரவு மற்றும் இடையகத்தின் அளவு ஆகியவற்றுக்கு இடையே உள்ள பொருத்தமின்மையை சரிபார்க்கிறது, இது இடையக எல்லைக்கு அப்பால் எழுதுவதைத் தடுக்க ஒரு பீதி நிலையை உருவாக்குகிறது.

எடுத்துக்காட்டு சுரண்டல்: # scapy. அனைத்து இறக்குமதியிலிருந்து பாக்கெட்டை வடிவமைக்க Scapy ஐப் பயன்படுத்துவோம் socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW) # பாக்கெட்டை உருவாக்கவும் # வகை = 1 இதை ஒரு RPL பாக்கெட் ஆக்குகிறது # முகவரிகளில் 6 முகவரிகள் உள்ளன, ஆனால் CmprI 3 ஆக இருப்பதால், # ஒவ்வொரு ஆக்டெட்டும் முதல் இரண்டு முகவரிகள் சுருக்கப்பட்ட முகவரியாகக் கருதப்படும் # Segleft = 3 பெருக்கத்தைத் தூண்டுவதற்கு # lastentry = 15xf1 ஆனது CmprI யை 0 ஆகவும், CmprE யை 0 p = IPv15(src=SRC_ADDR, dst=DST_ADDR) / IPv0ExtHdrSegmentRouting=6[6a: :", "a3::", "a8::"], segleft=7, lastentry=6xf1) # இந்த தீய பாக்கெட்டை sockfd.sendto(bytes(p), (DST_ADDR, 0)) அனுப்பவும்

கர்னல் டெவலப்பர்களுக்கு ஜனவரி 2022 இல் பாதிப்பு குறித்து அறிவிக்கப்பட்டது என்பது குறிப்பிடத்தக்கது, மேலும் கடந்த 15 மாதங்களில் அவர்கள் மூன்று முறை சிக்கலை சரிசெய்ய முயற்சித்தனர், செப்டம்பர் 2022, அக்டோபர் 2022 மற்றும் ஏப்ரல் 2023 இல் பேட்ச்களை வெளியிட்டனர், ஆனால் ஒவ்வொரு முறையும் திருத்தங்கள் போதுமானதாக இல்லை மற்றும் பாதிப்பை மீண்டும் உருவாக்க முடியவில்லை. இறுதியில், பாதிப்பை சரிசெய்வதற்கான வேலையை ஒருங்கிணைத்த ZDI திட்டம், கர்னலில் வேலை செய்யும் பிழைத்திருத்தம் கிடைக்கும் வரை காத்திருக்காமல் பாதிப்பு பற்றிய விரிவான தகவலை வெளியிட முடிவு செய்தது.

இதனால், பாதிப்பு இன்னும் சரி செய்யப்படாமல் உள்ளது. குறிப்பாக, 6.4-rc2 கர்னலில் சேர்க்கப்பட்டுள்ள பேட்ச் பயனற்றது. பயனர்கள் தங்கள் கணினிகளில் RPL நெறிமுறை பயன்படுத்தப்படவில்லை என்பதைச் சரிபார்க்க அறிவுறுத்தப்படுகிறார்கள், இது கட்டளையைப் பயன்படுத்தி sysctl -a | grep -i rpl_seg_enabled

ஆதாரம்: opennet.ru

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