Кіріспе
Компьютерлік жүйеге пинг арқылы шабуыл жасау
"Өлім пингі" – компьютерлік жүйеге жасалатын шабуыл түрі, ол компьютерге бұрыс немесе зиянды пинг жіберуді қамтиды. Бұл шабуылда хост басқа хостқа үлкен немесе заңсыз пакет өлшемімен жүздеген пинг сұрауларын жібереді, оны желіден тыс қалдыруға немесе ICMP Echo жауаптарымен айналыстыруға тырысады. Дұрыс құрастырылған пинг пакеті әдетте 56 байт көлемінде болады, немесе Интернет-бақылау хабарлама протоколы (ICMP) басқасымен есептегенде 64 байт, ал Интернет-протоколының (IP) 4-нұсқасының басқасымен 84 байт. Дегенмен, кез келген IPv4 пакеті (пингтерді қоса алғанда) 65 535 байтқа дейін болуы мүмкін. Кейбір компьютерлік жүйелер ең үлкен пакеттен үлкен пинг пакетін дұрыс өңдеуге ешқашан арналмаған, себебі ол Интернет-протоколын бұзады. Басқа үлкен, бірақ жақсы құрастырылған пакеттер сияқты, "өлім пингі" де тарату алдында 8 октетке бөлінеді. Алайда, мақсатты компьютер бұрыс пішімді пакетті қайта құрастырғанда буфердің толып кетуі мүмкін, бұл жүйелік апатқа әкеліп соғады және зиянды кодты енгізуге мүмкіндік береді. Артық байт мөлшері машинаның тиімді өңдеуіне кедеріс келтіреді, бұлт ортасына әсер етеді және операциялық жүйе процестерінде қайта жүктеуге немесе апатқа әкелетін бұзушылықтарға себеп болады. TCP/IP-нің алғашқы нұсқаларында бұл қате пайдалану оңай және Unix, Linux, Mac, Windows және сыртқы құрылғыларды қоса алғанда, әртүрлі жүйелерге әсер етуі мүмкін. Жүйелер "өлім пингін" брандмауэрлер мен басқа анықтау әдістері арқылы сүзіп бастағанда, кейінірек "пингге шабуыл" деп аталатын пинг шабуылының басқа түрі пайда болды, ол құрбанды көптеген пинг сұрауларымен шатастырып, қалыпты трафиктің жүйеге жетуіне кедеріс келтіреді (қызмет көрсетуден бас тартудың қарапайым шабуылы). "Өлім пингі" шабуылы технологияның жетістіктерімен көбінесе бейтараптандырылды. 1998 жылдан кейін шығарылған құрылғыларда осындай шабуылдарға қарсы қорғаныс шаралары бар, олар осы нақты қауіпке төзімді. Алайда, маңызды жаңалық ретінде, Windows жүйелеріндегі IPv6 пакеттерін нысанаға алған нұсқа анықталды, бұл Microsoft-ты 2013 жылдың ортасында жаңарту шығаруға мәжбүр етті.
A ping of death is a type of attack on a computer system that involves sending a malformed or otherwise malicious ping to a computer. In this attack, a host sends hundreds of ping requests with a packet size that is large or illegal to another host to try to take it offline or to keep it preoccupied responding with ICMP Echo replies. A correctly formed ping packet is typically 56 bytes in size, or 64 bytes when the Internet Control Message Protocol (ICMP) header is considered, and 84 bytes including Internet Protocol (IP) version 4 header. However, any IPv4 packet (including pings) may be as large as 65,535 bytes. Some computer systems were never designed to properly handle a ping packet larger than the maximum packet size because it violates the Internet Protocol. Like other large but well formed packets, a ping of death is fragmented into groups of 8 octets before transmission. However, when the target computer reassembles the malformed packet, a buffer overflow can occur, causing a system crash and potentially allowing the injection of malicious code. The excessive byte size prevents the machine from processing it effectively, impacting the cloud environment and causing disruptions in the operating system processes leading to reboots or crashes. In early implementations of TCP/IP, this bug is easy to exploit and can affect a wide variety of systems including Unix, Linux, Mac, Windows, and peripheral devices. As systems began filtering out pings of death through firewalls and other detection methods, a different kind of ping attack known as ping flooding later appeared, which floods the victim with so many ping requests that normal traffic fails to reach the system (a basic denial of service attack). The ping of death attack has been largely neutralized by advancements in technology. Devices produced after 1998 include defenses against such attacks, rendering them resilient to this specific threat. However, in a notable development, a variant targeting IPv6 packets on Windows systems was identified, leading Microsoft to release a patch in mid 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-да маршрутизатор хабарламаларына байланысты тағы бір қате табылды, ол тіпті қашықтан кодты орындауға әкелуі мүмкін.