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

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

 

از انجا که 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 


 

میان‌افزار کوکی (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