یک پینگ مرگ (به انگلیسی: Ping of death) نوعی حمله روی یک کامپیوتر است که شامل ارسال یک پینگ ناهنجار یا در غیر این‌صورت مخرب، به یک کامپیوتر می‌باشد. اندازۀ یک پینگ به‌طور معمول ۳۲ بایت (یا ۸۴ بایت با در نظر گرفتن سرآیند آی‌پی) است؛ در طول تاریخ، بسیاری از سیستمهای کامپیوتری نمی‌توانستند یک بسته‌ی پینگ که بزرگتر از بیشترین اندازۀ بستۀ پروتکل اینترنت نسخه ۴، یعنی ۶۵۵۳۵ بایت را مدیریت کنند. فرستادن پینگی با این اندازه می‌توانست منجر به خرابی کامپیوتر هدف شود*[۱]. در پیاده‌سازی‌های اولیۀ مجموعه پروتکل اینترنت (به انگلیسی: TCP/IP)، این اشکال به سادگی قابل سوءاستفاده کردن بود. این سوءاستفاده، طیف گسترده‌ای از سیستم‌ها را تحت تأثیر قرار داد، مانند یونیکس، لینوکس، مک اواس، ویندوز، چاپگرها و مسیریابها. با این حال، اکثر سیستم‌ها از سال ۱۹۹۷ تا ۱۹۹۸ درست شده‌اند، بنابراین این مشکل عمدتاً تاریخی است*[۲]. به‌طور کلی ارسال یک بستۀ پینگ ۶۵۵۳۵ بایتی، پروتکل اینترنت نوشته شده در RFC 791 را نقض خواهد کرد، اما بسته‌ای با این اندازه در صورت قطعه‌قطعه‌شدن (به انگلیسی: Fragmentaion) می‌تواند فرستاده شود؛ هنگامی که کامپیوتر مقصد بسته را دوباره سر هم می‌کند، ممکن است یک سرریز میانگیر (به انگلیسی: Buffer overflow) رخ دهد که اغلب منجر به از کار افتادن سیستم می‌شود. در سال‌های اخیر، نوع متفاوتی از حملۀ پینگ شایع شده‌است؛ سیل پینگ (به انگلیسی: Ping flooding)، قربانی را با بیشترین ترافیک پینگ غرق می‌کند طوری که ترافیک معمولی نتواند به سیستم برسد(یک حمله محروم‌سازی از سرویس پایه).

پینگ ناهنجار به سمت کامپیوتر می رود

اطلاعات دقیق ویرایش

همانطور که در RFC 791 تعریف شده‌است، بیشترین طول بستۀ پروتکل اینترنت نسخه ۴ که شامل سرآیند آی پی (به انگلیسی: IP header) نیز باشد، ۶۵۵۳۵ بایت است، محدوده نشان داده شده با استفاده از محدودۀ سرآیند آی‌پی به عرض ۱۶ بیت است که طول کل بسته را شرح می‌دهد. لایۀ زیرین پیوند داده‌ها محدودیت‌هایی روی بیشترین اندازۀ فریم می‌گذارد(MTU را ببینید). در اترنت معمولاً ۱۵۰۰ بایت است. در چنین حالتی، یک بستۀ آی‌پی بزرگ به چندین بستۀ آی‌پی تقسیم می‌شود (که با نام قطعه‌های آی‌پی شناخته می‌شود)، به طوری که هر قطعۀ آی‌پی با حد قرارداد شده مطابقت خواهد داشت. گیرندۀ قطعه‌های آی‌پی، آن‌ها را دوباره سر هم خواهد کرد تا به بستۀ کامل آی‌پی مبدل شود و طبق معمول به پردازش آن ادامه خواهد داد. هنگامی که قطعه‌قطعه کردن انجام شد، هر قطعه آی‌پی نیاز دارد اطلاعاتی در مورد قسمتی از بستۀ آی‌پی اصلی که در آن وجود دارد، حمل کند. این اطلاعات در فیلد افست قطعه در سرآیند آی‌پی نگهداری می‌شود. طول این فیلد ۱۳ بیت است و شامل افست داده‌ها در قطعه آی‌پی فعلی، در بستۀ آی‌پی اصلی می‌باشد. افست در واحدی از ۸ بایت داده می‌شود. این مسئله اجازۀ داشتن بیشترین افست یعنی ۶۵۵۲۸ را می‌دهد. یعنی هر قطعه آی‌پی با بیشترین افست، نباید داده‌های بیشتر از ۷ بایت داشته باشد، در غیر این صورت از حد مجاز تعیین شده برای بیشترین طول بسته تجاوز خواهد کرد. یک کاربر مخرب می‌تواند یک قطعه آی‌پی با بیشترین افست و با داده‌هایی خیلی بیشتر از ۸ بایت(به همان بزرگی که لایۀ فیزیکی اجازه می‌دهد) ارسال کند. هنگامی که گیرنده تمام قطعه‌های آی‌پی را سر هم می‌کند، با یک بسته آی‌پی بزرگتر از ۶۵۵۳۵ بایت به کار خود خاتمه می‌دهد. این احتمالاً منجر به سرریز در بافرهای حافظه‌ای می‌شود که گیرنده برای بسته در نظر گرفته‌است و می‌تواند منجر به مشکلات بسیاری شود. همانطور که از توصیف بالا مشهود است، مشکل هیچ ربطی به ICMP ندارد. این مشکلی در زمینۀ دوباره سر هم کردن قطعه‌های آی پی است که می‌تواند شامل هر نوع پروتکلی مانند(IGMP, UDP, TCP, …) باشد. راه حل این مشکل، اضافه کردن کنترل‌هایی در روند سر هم کردن قطعات است. این کنترل برای هر قطعۀ ورودی آی‌پی اطمینان حاصل می‌کند که افست قطعه و کل طول فیلدها در سرآیند آی‌پی هر قطعه آی‌پی، کوچکتر از ۶۵۵۳۵ است. اگر جمع بزرگتر شد، بنابراین بسته نامعتبر است و قطعۀ آی‌پی نادیده گرفته می‌شود. این کنترل توسط دیوار آتش انجام می‌شود، برای محافظت از میزبان‌هایی که این مشکل را درست نکرده‌اند. راه حل دیگر برای این مسئله، استفاده از یک میانگیر حافظه بزرگتر از ۶۵۵۳۵ بایت برای دوباره سر هم کردن بسته‌است.(این اساساً نادیده گرفتن مشخصات است، چرا که پشتیبانی از بسته‌هایی را اضافه می‌کند که بزرگتر از اندازۀ مجاز هستند)

جستارهای وابسته ویرایش

نوشته‌ها ویرایش

۱- ^ Erikson, Jon (1977) HACKING the art of exploitation (2nd ed.) San Francisco: NoStarch Press p. 256

پیوند به بیرون ویرایش