آسیب‌پذیری در کتابخانه Guzzle

آسیب‌پذیری در کتابخانه Guzzle

تاریخ ایجاد

در تمام نسخه‌های قبل از 6.5.6 و از نسخه 7.0.0 تا 7.4.3 کتابخانه Guzz، یک ‫آسیب‌پذیری با شدت بالا (8.1 از 10) وجود دارد. از آنجا که Guzzle در سیستم مدیریت محتوای Drupal نیز بعنوان کتابخانه third-party برای مدیریت درخواست‌ها و پاسخ‌های HTTP مورد استفاده قرار می‌گیرد، لذا این آسیب‌پذیری، نسخه‌های 9.2.0 تا 9.2.16 و 9.3.0 تا 9.3.9 Drupal را نیز تحت تأثیر قرار می‌دهد. منشأ این آسیب‌پذیری توابع matchesDomain و extractCookies بوده که به ترتیب در ماژول‌های SetCookie.php و CookieJar.php است. در این آسیب‌پذیری یکسان بودن دامنه کوکی با دامنه سروری که کوکی را از طریق هدر Set-Cookies مقدار‌دهی می‌کند، بررسی نمی‌شود. بدین ترتیب سرور مخرب اجازه می‌یابد تا کوکی‌ها را برای دامنه‌ای نامرتبط تنظیم نماید.
 

drupal guzzle

میان‌افزار کوکی (Cookie Middleware) در حالت پیش‌فرض غیرفعال می‌باشد و لذا اکثرا کاربران این کتابخانه تحت تاثیر این آسیب‌پذیری قرار نمی‌گیرند. این آسیب‌پذیری صرفا کاربرانی را تحت تأثیر قرار می‌دهد که به صورت دستی میان‌افزار کوکی را اضافه کنند یا کلاینتی را با ['cookies'=>true] بسازند. علاوه بر این کاربرانی که از یک کلاینت Guzzle برای فراخوانی چندین دامنه استفاده نمی‌کنند و Redirect Forwarding را غیرفعال کرده‌اند، تحت تأثیر این آسیب‌پذیری قرار نمی‌گیرند.
برای رفع آسیب‌پذیری نسخه‌های 6.5.6 و 7.4.3 مطابق با اصلاحیه Guzzle به کامیت شماره 74a8602c6faec9ef74b7a9391ac82c5e65b1cdab فایل‌های SetCookie.php و CookieJar.php باید مطابق با شکل‌های زیر تصحیح گردند.

drupal guzzle

اصلاحیه Guzzle در فایل SetCookie.php

drupal guzzle

اصلاحیه Guzzle در فایل CookieJar.php

منبع:

https://www.drupal.org/sa-core-2022-010
https://github.com/guzzle/guzzle/commit/74a8602c6faec9ef74b7a9391ac82c5e65b1cdab