پینگ مرگ

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