پینگ مرگ
این مقاله نیازمند ویکیسازی است. لطفاً با توجه به راهنمای ویرایش و شیوهنامه، محتوای آن را بهبود بخشید. (ژوئیه ۲۰۱۲) |
یک پینگِ مرگ (به انگلیسی: Ping of death) نوعی حمله روی یک کامپیوتر است که شامل ارسال یک پینگ ناهنجار و یا در غیر این صورت مخرب به یک رایانه میباشد. اندازهٔ یک پینگ به طور معمول ۳۲ بایت (یا ۸۴ بایت با در نظر گرفتن سرآیند آیپی)است؛ در طول تاریخ، بسیاری از سامانههای رایانهای نمیتوانستند یک بستهی پینگ که بزرگتر از بیشترین اندازهی بستهی نسخهی 4 آیپی، یعنی ۶۵۵۳۵ بایت را مدیریت کنند. فرستادن پینگی با این اندازه میتوانست منجر به خرابی رایانه هدف شود*[۱].
در پیاده سازیهای اولیهی تیسیپی/آیپی، این اشکال به سادگی قابل سوءاستفاده کردن بود. این سوءاستفاده، طیف گستردهای از سیستم هارا تحت تأثیر قرار داد، مانند یونیکس، لینوکس، مک، ویندوز، چاپگرها و مسیریابها. با این حال، اکثر سیستمها از سال ۱۹۹۷ تا ۱۹۹۸ درست شدهاند، بنابراین این مشکل عمدتاً تاریخی است. به طور کلی ارسال یک بستهی پینگ ۶۵۵۳۵ بایتی، پروتکل اینترنت نوشته شده در RFC 791*[۲] را نقض خواهد کرد، اما بستهای با این اندازه در صورت قطعه قطعه شدن(به انگلیسی: Fragmentation) میتواند فرستاده شود؛ هنگامی که کامپیوتر مقصد بسته را دوباره سر هم میکند، ممکن است یک سرریز میانگیر رخ دهد که اغلب منجر به از کار افتادن سیستم میشود. در سالهای اخیر، نوع متفاوتی از حملهی پینگ شایع شدهاست- سیل پینگ (به انگلیسی: ping flooding)، قربانی را با بیشترین ترافیک پینگ غرق میکند طوری که ترافیک معمولی نتواند به سیستم برسد(یک حمله محرومسازی از سرویس پایه).
اطلاعات دقیق
همانطور که در RFC 791 تعریف شدهاست، بیشترین طول بستهی پروتکل اینترنت نسخه ۴ که شامل سرآیند آیپی (به انگلیسی: آیپی Header) نیز باشد، ۶۵۵۳۵ بایت است، محدوده نشان داده شده با استفاده از محدودهی سرآیند آیپی به عرض ۱۶ بیت است که طول کل بسته را شرح میدهد. لایهی زیرین پیوند دادهها محدودیت هایی روی بیشترین اندازهی فریم میگذارد(بیشترین واحد انتقال یا MTU را ببینید). در اترنت معمولاً ۱۵۰۰ بایت است. در چنین حالتی، یک بستهی آیپی بزرگ به چندین بستهی آیپی تقسیم میشود (که با نام قطعههای آیپی شناخته میشود)، به طوری که هر قطعهی آیپی با حد قرارداد شده مطابقت خواهد داشت. گیرندهی قطعههای آیپی، آنها را دوباره سر هم خواهد کرد تا به بستهی کامل آیپی مبدل شود و طبق معمول به پردازش آن ادامه خواهد داد. هنگامی که قطعه قطعه کردن انجام شد، هر قطعه آیپی نیاز دارد اطلاعاتی در مورد قسمتی از بستهٔ آیپی اصلی که در آن وجود دارد، حمل کند. این اطلاعات در فیلد افست قطعه در سرآیند آیپی نگهداری میشود. طول این فیلد ۱۳ بیت است و شامل افست دادهها در قطعه آیپی فعلی، در بستهی آیپی اصلی میباشد. افست در واحدی از ۸ بایت داده میشود. این مسئله اجازهی داشتن بیشترین افست یعنی ۶۵۵۲۸ را میدهد. یعنی هر قطعه آیپی با بیشترین افست، نباید دادههای بیشتر از ۷ بایت داشته باشد، در غیر این صورت از حد مجاز تعیین شده برای بیشترین طول بسته تجاوز خواهد کرد. یک کاربر مخرب میتواند یک قطعه آیپی با بیشترین افست و با دادههایی خیلی بیشتر از ۸ بایت(به همان بزرگی که لایهی فیزیکی اجازه میدهد) ارسال کند. هنگامی که گیرنده تمام قطعههای آیپی را سر هم میکند، با یک بسته آیپی بزرگتر از ۶۵۵۳۵ بایت به کار خود خاتمه میدهد. این احتمالاً منجر به سرریز در بافرهای حافظهای میشود که گیرنده برای بسته در نظر گرفتهاست و میتواند منجر به مشکلات بسیاری شود. همانطور که از توصیف بالا مشهود است، مشکل هیچ ربطی به ICMP ندارد. این مشکلی در زمینهی دوباره سر هم کردن قطعههای آیپی است که میتواند شامل هر نوع پروتکلی باشد (IGMP، TCP، UDP و غیره). راه حل این مشکل، اضافه کردن کنترلهایی در روند سر هم کردن قطعات است. این کنترل برای هر قطعهٔ ورودی آیپی اطمینان حاصل میکند که افست قطعه و کل طول فیلدها در سرآیند آیپی هر قطعه آیپی، کوچکتر از ۶۵۵۳۵ است. اگر جمع بزرگتر شد، بنابراین بسته نامعتبر است و قطعهی آیپی نادیده گرفته میشود. این کنترل توسط دیوار آتش انجام میشود، برای محافظت از میزبانهایی که این مشکل را درست نکردهاند. راه حل دیگر برای این مسئله، استفاده از یک میانگیر حافظه بزرگتر از ۶۵۵۳۵ بایت برای دوباره سر هم کردن بستهاست.(این اساساً نادیده گرفتن مشخصات است، چرا که پشتیبانی از بستههایی را اضافه میکند که بزرگتر از اندازهی مجاز هستند)