آسیبپذیری Cache Poisoning چیست؟
Cache Poisoning (مسمومسازی کش) یک ضعف امنیتی است که در آن مهاجم با تزریق پاسخ جعلی به لایهٔ کش
(Cache Server، CDN یا مرورگر) باعث میشود کاربران بعدی همان پاسخ مخرب را مشاهده کنند.
انواع Cache Poisoning
نوع |
توضیح کوتاه |
هدف اصلی |
Web-Cache Poisoning |
مسمومسازی کش معکوس (CDN/Reverse-Proxy) |
آلودهکردن پاسخی که چند کاربر دریافت میکنند |
Browser-Cache Poisoning |
مسمومسازی کش مرورگر قربانی |
جعل محتوای ذخیرهشده برای همان کاربر |
DNS Cache Poisoning |
تزریق رکورد جعلی در کش DNS |
هدایت کاربر به IP جعلی |
در این متن، تمرکز بر Web-Cache Poisoning است.
مکانیزم حمله Web-Cache Poisoning
- یافتن ورودی قابل کش (URL یا هدرهایی که در کلید کش مؤثرند).
- ارسال درخواست مخرب با پارامتر یا هدر اضافی.
- برگشت پاسخ و ذخیره آن در کش.
- سرو همان پاسخ آلوده به کاربران بعدی.
هدرهای کلیدی در Cache Poisoning
هدر |
نکتهٔ امنیتی |
Host | اختلاف آن کلید کش را میشکند. |
X-Forwarded-Host , X-Forwarded-Proto | اگر در کلید کش نباشد، قابل سواستفاده است. |
X-Original-URL , X-Rewrite-URL | میتواند پاسخ متفاوتی تولید کند. |
X-Forwarded-For | محتوای وابسته به IP ولی کش نادیده بگیرد ⇒ آسیب. |
Accept-Encoding , Accept-Language | نبود Vary مناسب کش را مسموم میکند. |
Cache-Control | تنظیم بد، ماندگاری پاسخ آلوده. |
Vary | ناکامل باشد، پاسخ اشتباه به همه. |
Content-Type , Content-Encoding | دستکاری میتواند XSS را پنهان کند. |
مثال عملی (Web-Cache Poisoning کلاسیک)
GET /profile?id=123 HTTP/1.1
Host: example.com
X-Forwarded-Host: attacker.com
- سرور
X-Forwarded-Host
را در HTML قرار میدهد («Welcome to attacker.com»).
- CDN پاسخ را بدون لحاظ این هدر کش میکند.
- کاربران بعدی همان HTML آلوده را میبینند.
جلوگیری از Cache Poisoning
- کلید کش دقیق بسازید (استفاده از
Vary
یا حذف هدر ناامن).
- پاسخ را به هدرهای نامطمئن وابسته نکنید.
- پیکربندی صحیح
Cache-Control
:
# صفحات حساس
Cache-Control: no-store, private
# محتوای عمومی
Cache-Control: public, max-age=300
- استفاده از
Content-Security-Policy (CSP)
برای کاهش XSS.
- اعتبارسنجی/اینکد ورودی و خروجی.
- فعالسازی WAF یا ماژولهای ضد Poisoning.
جمعبندی
Cache Poisoning به ذخیره نسخهٔ آلوده در کش و سرو آن به سایر کاربران منتهی میشود. با
کلید کش دقیق، عدم اعتماد به هدرهای کنترلنشده و
تنظیم درست Cache-Control میتوان خطر را به حداقل رساند.