پینگ مرگ

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

یک پینگ مرگ (به انگلیسی: 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 ISBN 1-59327-144

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