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

آسیب پذیری در کتابخانه Guzzle Guzzle یک PHP HTTP Client می‌باشد. در تمام نسخه‌های قبل از 6.5.6 و از نسخه 7.0.0 تا 7.4.3 کتابخانه Guzz، یک آسیب‌پذیری با شدت بالا (8.1 از 10) وجود دارد.

 

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

 

 

      منابع