پینگ مرگ
یک پینگ مرگ (به انگلیسی: Ping of death) نوعی حمله روی یک کامپیوتر است که شامل ارسال یک پینگ ناهنجار و یا در غیراینصورت مخرب به یک کامپیوتر میباشد. اندازهی یک پینگ به طور معمول ۳۲ بایت (یا ۸۴ بایت با در نظر گرفتن سرآیند آیپی) است؛ در طول تاریخ، بسیاری از سیستم های کامپیوتری نمیتوانستند یک بستهی پینگ که بزرگتر از بیشترین اندازهی بستهی نسخهی ۴ آیپی، یعنی ۶۵۵۳۵ بایت را مدیریت کنند. فرستادن پینگی با این اندازه میتوانست منجر به خرابی کامپیوتر هدف شود*[۱]. در پیاده سازیهای اولیهی TCP/IP، این اشکال به سادگی قابل سوءاستفاده کردن بود. این سوءاستفاده، طیف گستردهای از سیستمها را تحت تأثیر قرار داد، مانند یونیکس، لینوکس، مک، ویندوز، چاپگرها و مسیریابها. با این حال، اکثر سیستمها از سال ۱۹۹۷ تا ۱۹۹۸ درست شدهاند، بنابراین این مشکل عمدتاً تاریخی است*[۲]. به طور کلی ارسال یک بستهی پینگ ۶۵۵۳۵ بایتی، پروتکل اینترنت نوشته شده در RFC 791 را نقض خواهد کرد، اما بستهای با این اندازه در صورت قطعهقطعهشدن (به انگلیسی: fragment) میتواند فرستاده شود؛ هنگامی که کامپیوتر مقصد بسته را دوباره سر هم میکند، ممکن است یک سرریز میانگیر رخ دهد که اغلب منجر به از کار افتادن سیستم میشود. در سالهای اخیر، نوع متفاوتی از حملهی پینگ شایع شده است- سیل پینگ (به انگلیسی: ping flooding)، قربانی را با بیشترین ترافیک پینگ غرق میکند طوری که ترافیک معمولی نتواند به سیستم برسد(یک حمله محرومسازی از سرویس پایه).
اطلاعات دقیق
همانطور که در RFC 791 تعریف شده است، بیشترین طول بستهی آیپی نسخه ۴ که شامل سرآیند آی پی نیز باشد، ۶۵۵۳۵ بایت است، محدوده نشان داده شده با استفاده از محدودهی سرآیند آیپی به عرض ۱۶ بیت است که طول کل بسته را شرح میدهد. لایهی زیرین پیوند دادهها محدودیتهایی روی بیشترین اندازهی فریم می گذارد(MTU را ببینید). در اترنت معمولاً ۱۵۰۰ بایت است. در چنین حالتی، یک بستهی آیپی بزرگ به چندین بستهی آیپی تقسیم میشود (که با نام قطعههای آیپی شناخته میشود)، به طوری که هر قطعهی آیپی با حد قرارداد شده مطابقت خواهد داشت. گیرندهی قطعههای آیپی، آنها را دوباره سر هم خواهد کرد تا به بستهی کامل آیپی مبدل شود و طبق معمول به پردازش آن ادامه خواهد داد. هنگامی که قطعهقطعهکردن انجام شد، هر قطعه آیپی نیاز دارد اطلاعاتی در مورد قسمتی از بستهی آیپی اصلی که در آن وجود دارد، حمل کند. این اطلاعات در فیلد افست قطعه در سرآیند آیپی نگهداری میشود. طول این فیلد ۱۳ بیت است و شامل افست دادهها در قطعه آیپی فعلی، در بستهی آیپی اصلی می باشد. افست در واحدی از ۸ بایت داده میشود. این مسئله اجازهی داشتن بیشترین افست یعنی ۶۵۵۲۸ را میدهد. یعنی هر قطعه آیپی با بیشترین افست، نباید دادههای بیشتر از ۷ بایت داشته باشد، در غیر این صورت از حد مجاز تعیین شده برای بیشترین طول بسته تجاوز خواهد کرد. یک کاربر مخرب میتواند یک قطعه آیپی با بیشترین افست و با دادههایی خیلی بیشتر از ۸ بایت(به همان بزرگی که لایهی فیزیکی اجازه میدهد) ارسال کند. هنگامی که گیرنده تمام قطعههای آیپی را سر هم میکند، با یک بسته آیپی بزرگتر از ۶۵۵۳۵ بایت به کار خود خاتمه میدهد. این احتمالاً منجر به سرریز در بافرهای حافظهای میشود که گیرنده برای بسته در نظر گرفته است و میتواند منجر به مشکلات بسیاری شود. همانطور که از توصیف بالا مشهود است، مشکل هیچ ربطی به ICMP ندارد. این مشکلی در زمینهی دوباره سر هم کردن قطعههای آی پی است که میتواند شامل هر نوع پروتکلی باشد(TCP,UDP,IGMP,...). راه حل این مشکل، اضافه کردن کنترلهایی در روند سر هم کردن قطعات است. این کنترل برای هر قطعهی ورودی آیپی اطمینان حاصل میکند که افست قطعه و کل طول فیلدها در سرآیند آیپی هر قطعه آیپی، کوچکتر از ۶۵۵۳۵ است. اگر جمع بزرگتر شد، بنابراین بسته نامعتبر است و قطعهی آیپی نادیده گرفته میشود. این کنترل توسط دیوار آتش انجام میشود، برای محافظت از میزبانهایی که این مشکل را درست نکردهاند. راه حل دیگر برای این مسئله، استفاده از یک میانگیر حافظه بزرگتر از ۶۵۵۳۵ بایت برای دوباره سر هم کردن بسته است.( این اساساً نادیده گرفتن مشخصات است، چرا که پشتیبانی از بستههایی را اضافه میکند که بزرگتر از اندازهی مجاز هستند)
جستارهای وابسته
نوشتهها
۱- ^ Erikson, Jon (1977) HACKING the art of exploitation (2nd ed.) San Francisco: NoStarch Press p. 256 ISBN 1-59327-144