محققان امنیتی با زنجیرهسازی چندین ضعف کوچک در قابلیت پردازش تصویر Cloudflare، موفق شدند سیاست امنیت محتوا (Content Security Policy یا CSP) را دور زده و کدهای مخرب JavaScript را در سایتهایی که این سیاست را اعمال کرده بودند، اجرا کنند.
جزئیات فنی اکسپلویت
این تحقیق که با عنوان “Cache Me If You Can” منتشر شده، یک باگ Cross-Site Scripting (XSS) را از طریق اندپوینت /cdn-cgi/image/ در دامنه cloudflare.com نشان میدهد. از آنجایی که این صفحات از دامنه خود مشتری بارگذاری میشوند، هرگونه آسیبپذیری در آنها با سطح دسترسی و اعتماد همان سایت اجرا میشود.
محققان متوجه شدند که ابزار svg-hush (که برای پاکسازی تصاویر SVG استفاده میشود) در هنگام پردازش مقادیر Namespace (مانند تنظیمات xmlns) دچار خطا میشود. یک مهاجم میتواند با قرار دادن کاراکترهای خاص در این مقادیر، از فیلتر عبور کرده و تگهای اسکریپت را تزریق کند. از آنجایی که فیلتر فایل را پیش از این تأیید کرده است، تگهای مخرب از سیستم عبور میکنند.
دور زدن CSP از طریق مدیریت کش
علاوه بر تزریق کد، محققان از یک ترفند در مرورگر Chromium استفاده کردند. آنها دریافتند که با استفاده از هدرهای Cache-Control، میتوان سیاست CSP را در بارگذاریهای بعدی حذف کرد. با استفاده از تکنیکهای مربوط به bfcache و دستور history.back()، مهاجم میتواند مرورگر را مجبور کند تا نسخه ذخیره شده در کش (که فاقد سیاست CSP است) را بارگذاری کند و در نتیجه کد مخرب اجرا شود.
همچنین مشخص شد که قابلیت Image Transformations در Cloudflare، ریدایرکتها را بدون بررسی آدرس نهایی دنبال میکند. محققان از طریق اندپوینت /cdn-cgi/access/logout/ توانستند یک ریدایرکت ایجاد کنند که به فایل مهاجم اشاره میکند و این زنجیره حمله را کامل میکند.
پیامدهای گستردهتر
این روش تنها محدود به Cloudflare نیست. محققان توانستند از روشهای مشابه در سرویسهای دیگری مانند Netlify Image CDN استفاده کنند تا هدرهای CSP و Content-Type را حذف کنند. همچنین سرویسهای ذخیرهسازی ابری مانند Amazon S3 و Google Cloud Storage نیز به دلیل امکان بازنویسی هدرها از طریق لینکهای امضا شده (Signed Links)، در معرض این نوع حملات قرار دارند.
توصیههای امنیتی برای تیمهای SOC و مهندسان
- عدم اعتماد مطلق به بدنه فایل: هدرهایی که از طریق سرویسهای تصویر یا لایههای ذخیرهسازی عبور میکنند، بخشی از امنیت سایت شما هستند.
- کنترل هدرها: از ارسال هدرهای
Cache-ControlوX-*از منابع غیرقابل اعتماد خودداری کنید. - استفاده از هدرهای محافظتی: تنظیم هدر
X-Content-Type-Options: nosniffبرای جلوگیری از حدس زدن نوع فایل توسط مرورگر ضروری است. - مدیریت ریدایرکتها: بستن آسیبپذیریهای Open Redirect میتواند از تکمیل این نوع زنجیرههای حمله جلوگیری کند.