Кіріспе

Компьютерлік жүйеге пинг арқылы шабуыл жасау
"Өлім пингі" – компьютерлік жүйеге жасалатын шабуыл түрі, ол компьютерге бұрыс немесе зиянды пинг жіберуді қамтиды. Бұл шабуылда хост басқа хостқа үлкен немесе заңсыз пакет өлшемімен жүздеген пинг сұрауларын жібереді, оны желіден тыс қалдыруға немесе ICMP Echo жауаптарымен айналыстыруға тырысады. Дұрыс құрастырылған пинг пакеті әдетте 56 байт көлемінде болады, немесе Интернет-бақылау хабарлама протоколы (ICMP) басқасымен есептегенде 64 байт, ал Интернет-протоколының (IP) 4-нұсқасының басқасымен 84 байт. Дегенмен, кез келген IPv4 пакеті (пингтерді қоса алғанда) 65 535 байтқа дейін болуы мүмкін. Кейбір компьютерлік жүйелер ең үлкен пакеттен үлкен пинг пакетін дұрыс өңдеуге ешқашан арналмаған, себебі ол Интернет-протоколын бұзады. Басқа үлкен, бірақ жақсы құрастырылған пакеттер сияқты, "өлім пингі" де тарату алдында 8 октетке бөлінеді. Алайда, мақсатты компьютер бұрыс пішімді пакетті қайта құрастырғанда буфердің толып кетуі мүмкін, бұл жүйелік апатқа әкеліп соғады және зиянды кодты енгізуге мүмкіндік береді. Артық байт мөлшері машинаның тиімді өңдеуіне кедеріс келтіреді, бұлт ортасына әсер етеді және операциялық жүйе процестерінде қайта жүктеуге немесе апатқа әкелетін бұзушылықтарға себеп болады. TCP/IP-нің алғашқы нұсқаларында бұл қате пайдалану оңай және Unix, Linux, Mac, Windows және сыртқы құрылғыларды қоса алғанда, әртүрлі жүйелерге әсер етуі мүмкін. Жүйелер "өлім пингін" брандмауэрлер мен басқа анықтау әдістері арқылы сүзіп бастағанда, кейінірек "пингге шабуыл" деп аталатын пинг шабуылының басқа түрі пайда болды, ол құрбанды көптеген пинг сұрауларымен шатастырып, қалыпты трафиктің жүйеге жетуіне кедеріс келтіреді (қызмет көрсетуден бас тартудың қарапайым шабуылы). "Өлім пингі" шабуылы технологияның жетістіктерімен көбінесе бейтараптандырылды. 1998 жылдан кейін шығарылған құрылғыларда осындай шабуылдарға қарсы қорғаныс шаралары бар, олар осы нақты қауіпке төзімді. Алайда, маңызды жаңалық ретінде, Windows жүйелеріндегі IPv6 пакеттерін нысанаға алған нұсқа анықталды, бұл Microsoft-ты 2013 жылдың ортасында жаңарту шығаруға мәжбүр етті.

Толық ақпарат

IP-бастысы қоса алғанда, IPv4 пакетінің ең үлкен ұзындығы 65535 (216 − 1) байтты құрайды, бұл шектеу 16 биттік IP-басты өрісін пайдалану арқасында туындайды, ол пакеттің жалпы ұзындығын сипаттайды. Негізгі дерек байланысы қабаты көбінесе максималды кадр мөлшеріне (MTU қараңыз) шектеу қояды. Ethernet желілерінде бұл әдетте 1500 байтқа тең. Мұндай жағдайда үлкен IP пакеті бірнеше IP пакетіне (IP фрагменттері деп те аталады) бөлінеді, осылайша әрбір IP фрагменті белгіленген шекке сәйкес келеді. IP фрагменттерін қабылдағыш толық IP пакетіне қайта құрастырып, оны қалыпты түрде өңдейді. Фрагментация кезінде әрбір IP фрагменті бастапқы IP пакетінің қай бөлігін қамтитыны туралы ақпаратты сақтауы тиіс. Бұл ақпарат IP-бастың Fragment Offset өрісінде сақталады. Бұл өріс 13 биттен тұрады және бастапқы IP пакетіндегі ағымдағы IP фрагментінің деректерінің орнын көрсетеді. Оффсет 8 байттық бірліктермен өлшенді. Бұл 65 528 ((213 − 1) * 8) дейін максималды оффсетті қамтамасыз етеді. IP-бастың 20 байтын қоссақ, ең көп 65 548 байтқа жетеді, бұл максималды кадр мөлшерінен асып түседі. Демек, максималды оффсеті бар IP фрагментінде 7 байттан аспайтын дерек болуы керек, әйтпесе ол максималды пакет ұзындығының шегінен шығып кетеді. Зардап шегуші IP фрагментін максималды оффсетпен және 8 байттан көп дерекпен (физикалық қабаттың мүмкіндік беретін шекте) жіберуі мүмкін. Қабылдағыш барлық IP фрагменттерін жинағанда, ол 65535 байттан үлкен IP пакетіне ие болады. Бұл қабылдағыш бөліп алған жад буферлерін толып кетуіне және түрлі проблемаларға әкелуі мүмкін. Жоғарыда сипатталғаннан көрініп тұрғандай, мәселе ICMP-мен байланысты емес, ол тек проблеманы пайдалану үшін жеткілікті көлемдегі пайдалы жүктеме ретінде қолданылады. Бұл IP фрагменттерін қайта құрастыру процесінде туындайтын мәселе, ол кез келген протоколды (TCP, UDP, IGMP және т.б.) қамтуы мүмкін. Мәселені шешу үшін қайта құрастыру процесінде қосымша тексерулерді енгізу қажет. Әрбір кіріс IP фрагментін тексеру кезінде IP-бастың "Фрагмент оффсеті" және "Жалпы ұзындығы" өрістерінің қосындысы 65535-тен кем немесе оған тең екеніне көз жеткізіледі. Егер қосынды артық болса, пакет жарамсыз деп есептеледі және IP фрагменті назардан тыс қалады. Кейбір өрт қабырғалары бұл тексеруді орындау арқылы бұзушылықты жойылмаған хосттарды қорғайды. Мәселені шешудің тағы бір жолы – пакеттерді қайта құрастыру үшін 65535 байттан үлкен жад буферін пайдалану. (Бұл, әдетте, спецификацияны бұзу болып табылады, өйткені ол рұқсат етілгеннен үлкен пакеттерді қолдайды.)

IPv6-да өлімнің белгісі

2013 жылы Microsoft Windows жүйесінде өлімнің Пинг-інің IPv6 нұсқасы анықталды. Windows TCP/IP стегі кіріс ICMPv6 пакеттерін өңдеу кезінде жадты дұрыс бөлуге қабілетсіз болды, бұл қашықтан қызмет көрсетуден бас тартуға алып келуі мүмкін. Бұл осалдық 2013 жылдың тамызында MS13-065 арқылы жойылды. Бұл осалдықтың CVE идентификаторы – 2020 жылы ICMPv6-да маршрутизатор хабарламаларына байланысты тағы бір қате табылды, ол тіпті қашықтан кодты орындауға әкелуі мүмкін.