رد شدن به محتوای اصلی

بررسی عمیق Cache Poisoning: راهنمای جامع

۱. مقدمه

در دنیای دیجیتال امروز، سرعت و کارایی اهمیت زیادی دارند. چه در حال مرور وب باشید، چه از خدمات ابری استفاده کنید یا از اپلیکیشن‌های موبایل بهره ببرید، بازیابی سریع اطلاعات معمولاً از طریق مکانیزم‌های cache انجام می‌شود. با این حال، این مکانیزم‌ها بی‌نقص نیستند و می‌توانند به روش‌های مختلفی مورد حمله قرار بگیرند که یکی از آن‌ها cache poisoning است. این مقاله به بررسی مفهوم cache، انواع آن در سیستم‌های مختلف، نحوه وقوع حملات cache poisoning و روش‌های جلوگیری از این حملات می‌پردازد.

۲. Cache چیست؟

۲.۱ تعریف و هدف

Cache یک مؤلفه سخت‌افزاری یا نرم‌افزاری است که داده‌ها را ذخیره می‌کند تا در درخواست‌های آینده سریع‌تر در دسترس باشند. داده‌های ذخیره‌شده در Cache می‌توانند نتیجه یک محاسبه قبلی یا نسخه‌ای از داده‌های موجود در جای دیگر باشند. از Cache در حوزه‌های مختلفی از جمله عملیات پردازنده (CPU)، پایگاه داده و مرور وب استفاده می‌شود.

۲.۲ انواع کش

  • Memory Cache (CPU Cache): درون پردازنده قرار دارد و با ذخیره داده‌های پرکاربرد، سرعت اجرای دستورات را افزایش می‌دهد.

  • Disk Cache: داده‌های ذخیره‌شده روی Hard Disk را در یک حافظه سریع‌تر (مانند SSD یا RAM) نگه‌داری می‌کند تا زمان دسترسی کاهش یابد.

  • Web Cache: صفحات وب یا سایر محتوای وب را ذخیره می‌کند تا مصرف پهنای باند، بار روی سرور و تأخیر کاهش یابد.

۲.۳ عملکرد کش چگونه است؟

وقتی سیستمی درخواستی برای داده ارسال می‌کند، ابتدا Cache بررسی می‌شود:

  • Cache Hit: اگر داده در Cache موجود باشد، مستقیماً ارائه می‌شود و نیازی به بازیابی آن از ذخیره‌ساز کندتر نیست.

  • Cache Miss: اگر داده در Cache موجود نباشد، از منبع اصلی بازیابی شده و برای درخواست‌های آینده در Cache ذخیره می‌شود.

۲.۴ بررسی عمیق کش در CDN

نودهای شبکه توزیع محتوا (CDN) هنگام دریافت داده از سرور اصلی، آن را ذخیره کرده و به کاربران ارائه می‌دهند. این فرآیند مشابه Cache مرورگر است، اما در سطح شبکه اجرا شده و عملکرد سریع‌تری دارد.

۳. اهمیت کش در محاسبات مدرن

Cache باعث افزایش سرعت سیستم‌ها و کاهش بار منابع می‌شود:
عملکرد وب: باعث افزایش سرعت بارگذاری صفحات وب می‌شود.
کارایی پایگاه داده: بار پایگاه داده را با ذخیره نتایج Queryها کاهش می‌دهد.
عملکرد شبکه: با Cache کردن محتوا به صورت محلی، پهنای باند را ذخیره می‌کند.

۴. معرفی Cache Poisoning

۴.۱ Cache Poisoning چیست؟

Cache Poisoning نوعی حمله است که در آن مهاجم داده‌های مخرب را در Cache ذخیره کرده و باعث ارائه اطلاعات نادرست یا خطرناک به کاربران می‌شود. این حملات می‌توانند منجر به انتشار بدافزار، نمایش محتوای نادرست یا سرقت توکن‌های احراز هویت شوند.

۴.۲ پیشینه تاریخی

۱۹۹۳: کریستوف شوبا مقاله‌ای درباره ضعف‌های امنیتی در پروتکل سیستم نام دامنه (DNS) منتشر کرد که شامل حملات Cache Poisoning DNS بود.
۱۹۹۷: CERT گزارشی در مورد آسیب‌پذیری در نرم‌افزار BIND منتشر کرد که به دلیل عدم تصادفی‌سازی شناسه‌های تراکنش، امکان پیش‌بینی و Cache Poisoning را فراهم می‌کرد.
۲۰۰۲: واگنر ساکرامنتو نقصی در پروتکل DNS کشف کرد که احتمال موفقیت حملات را به‌شدت افزایش می‌داد.

۴.۳ اهداف رایج مسمومیت کش

Cache DNS: تغییر رکوردهای DNS برای هدایت ترافیک به سایت‌های مخرب.
Cache وب: تزریق محتوای مخرب به Cache وب برای نمایش اطلاعات نادرست یا آلوده.
Cache پایگاه داده: مسمومیت نتایج ذخیره‌شده در Cache پایگاه داده برای ارائه داده‌های نادرست.

۵. نحوه عملکرد مسمومیت کش

۵.۱ Cache Poisoning DNS

فرآیند یک حمله سنتی

۱. مهاجم (IP: 192.168.3.300) ارتباط بین کاربر (IP: 192.168.1.100) و سرور (IP: 192.168.2.200) را رهگیری می‌کند.
۲. مهاجم از ابزاری مانند arpspoof برای جعل آدرس MAC و تغییر مسیر داده‌ها استفاده می‌کند.
۳. با استفاده از دستور echo 1 > /proc/sys/net/ipv4/ip_forward بسته‌های IP بین کاربر و سرور به مهاجم هدایت می‌شوند.
۴. مهاجم یک فایل میزبان جعلی ایجاد می‌کند که نام دامنه را به IP مخرب خود ارجاع می‌دهد.
۵. کاربران به وب‌سایت جعلی هدایت شده و ممکن است بدافزار دریافت کنند.

روش‌های جدیدتر حمله

مهاجم تلاش می‌کند محتوای مخرب را در سرور Cache ذخیره کند تا به دیگر کاربران ارائه شود.
بررسی ورودی‌هایی در CDN،  که Cache می‌شوند و یافتن بازتاب‌های محتوا در صفحات وب (مانند بازتاب Cookies).

۵.۲ Cache Poisoning وب

در این حمله، مهاجم Cache وب را فریب داده و باعث ذخیره نسخه‌ای مخرب از محتوا می‌شود که به کاربران دیگر ارائه می‌گردد.

۵.۳ Cache Poisoning پایگاه داده

مهاجم نتایج ذخیره‌شده در Cache پایگاه داده را تغییر داده و باعث ارائه اطلاعات نادرست در پاسخ به کوئری‌ها می‌شود.

۶. بررسی حملات عملی و مفاهیم پیشرفته

در آینده، سناریوهای واقعی حمله را بررسی خواهیم کرد و مفاهیم پیشرفته‌ای مانند Web Cache Deception را مورد تحلیل عمیق قرار خواهیم داد.

با تشکر از توجه شما :) ضمنا این پست رو به زبان انگلیسی اینجا میتونید مطالعه کنید.

نظرات

پست‌های معروف از این وبلاگ

استفاده از Wayback Machine برای باگ بانتی!

  سلام و درود به همگی، من علی هستم و امروز با یک پست بسیار کوچک و جمع و جور ولی بشدت کاربردی  همراه شما هستیم، استفاده از Wayback Machine برای باگ بانتی ! خب قبل هر چیز به باید به این توافق برسیم که همچنان در این لحظه دستیابی به اطلاعات حساس یا به اصطلاح Sensitive Information امکان پذیر هست به خصوص در کمپانی‌های بزرگ! اما ساده‌ترین راه برای پیدا کردن و گزارش این نوع آسیب پذیری‌ها چه چیزی می‌باشد؟ بله Wayback Machine، به صورت خیلی خلاصه بخوایم بگیم این وبسایت یک پایگاه داده بزرگ از آرشیو دوره‌ای تمام سایت‌های موجود در اینترنت می‌باشد! دقت کنید استفاده‌ها و کارایی‌های متفاوتی برای ما دارد اما چیزی که امروز بهش میپردازیم،‌ دستیابی به اندپوینت‌های حساس و فایل‌های حساس می‌باشد.

چالش ۳۰ روزه هانت:‌ شماره ۱

دسامبر ۲۰۲۴ - فوریه ۲۰۲۵ در ماه گذشته، یک چالش ۳۰ روزه هانت را آغاز کردم که مهارت‌ها، استقامت و خلاقیتم را به سطح جدیدی رساند. این پست، مستنداتی از گزارش روزانه‌ام است؛ از راه‌اندازی ابزارها و آشنایی با اهداف گرفته تا شناسایی عمیق، فازینگ و در نهایت گزارش‌دهی باگ‌ها. چه تازه‌کار باشید و چه یک محقق باتجربه، امیدوارم تجربه من به درک بهتر این فرآیند کمک کند و شما را برای عبور از چالش‌ها ترغیب نماید. پیش از شروع، توجه داشته باشید که در این مدت تقریباً ۶۰ ساعت وقت صرف کردم و ۵ باگ پیدا کردم (۲ مورد duplicate و ۳ مورد informative). روزهای ۱ تا ۳: ایجاد زیرساخت‌های اولیه ۲۰ تا ۲۲ دسامبر ۲۰۲۴ ایجاد حساب کاربری و تعیین دامنه فعالیت: چالش را با ایجاد یک حساب جدید در یک پلتفرم شکار باگ و انتخاب اولین برنامه هدف آغاز کردم. خواندن و درک قوانین برنامه، اولین گام حیاتی بود. بررسی اولیه: مانند یک کاربر عادی، عملکرد برنامه را بررسی کردم. Burp Suite را با تنظیمات مناسب (افزونه‌های لازم، تنظیمات SSL و محدودسازی دامنه) پیکربندی کردم تا ترافیک را رهگیری و نقشه برنامه را ترسیم کنم. همچنین، دامنه‌ها...