
از انجا که Guzzle در سیستم مدیریت محتوای Drupal نیز بعنوان کتابخانه third-party برای مدیریت درخواستها و پاسخهای HTTP مورد استفاده قرار میگیرد[1]، لذا این آسیبپذیری، نسخههای 9.2.0 تا 9.2.16 و 9.3.0 تا 9.3.9 Drupal را نیز تحت تأثیر قرار میدهد. منشأ این آسیبپذیری توابع matchesDomain و extractCookies میباشد که به ترتیب در ماژولهای SetCookie.php و CookieJar.php میباشد. در این آسیب پذیری یکسان بودن دامنه کوکی با دامنه سروری که کوکی را از طریق هدر Set-Cookies مقدار دهی میکند، بررسی نمی شود. بدین ترتیب سرور مخرب اجازه مییابد تا کوکیها را برای دامنهای نامرتبط تنظیم نماید. جدول 1 مشخصات آسیب پذیری را نشان میدهد.
جدول 1. مشخصات آسیبپذیری CVE-2022-29248
ردیف |
عنوان |
مقدار |
1 |
تاریخ انتشار آسیبپذیری |
2022-05-25 |
2 |
تاریخ بروزسانی آسیبپذیری |
2022-06-07 |
2 |
شدت آسیبپذیری (طبقcvss نسخه 3) |
بالا (8.1 از 10) |
4 |
نسخه آسیبپذیر |
تا قبل از نسخه 6.5.6 از نسخه 7.0.0 تا قبل از 7.4.3 |
5 |
نوع ضعف |
Exposure of Sensitive Information to an Unauthorized Actor |
میانافزار کوکی (Cookie Middleware) در حالت پیشفرض غیرفعال میباشد و لذا اکثرا کاربران این کتابخانه تحت تاثیر این آسیب پذیری قرار نمیگیرند. این آسیب پذیری صرفا کاربرانی را تحت تأثیر قرار میدهد که به صورت دستی میان افزار کوکی را اضافه کنند یا کلاینتی را با ['cookies'=>true] بسازند. علاوه بر این کاربرانی که از یک کلاینت Guzzle برای فراخوانی چندین دامنه استفاده نمیکنند و Redirect Forwarding را غیرفعال کردهاند، تحت تأثیر این آسیبپذیری قرار نمیگیرند.
برای رفع آسیب پذیری نسخه های 6.5.6 و 7.4.3 مطابق با اصلاحیه Guzzle به کامیت شماره 74a8602c6faec9ef74b7a9391ac82c5e65b1cdab فایل های SetCookie.php و CookieJar.php باید مطابق با شکل های زیر تصحیح گردند[2].
شکل 1- اصلاحیه Guzzle در فایل SetCookie.php
شکل 2- اصلاحیه Guzzle در فایل CookieJar.php
منابع
- https://www.drupal.org/sa-core-2022-010
- https://github.com/guzzle/guzzle/commit/74a8602c6faec9ef74b7a9391ac82c5e65b1cdab
- https://nvd.nist.gov/vuln/detail/CVE-2022-29248