کشف یک آسیب‌پذیری بحرانی در کتابخانه php-svg-lib

کشف یک آسیب‌پذیری بحرانی در کتابخانه php-svg-lib

تاریخ ایجاد

یک آسیب‌پذیری بحرانی در کتابخانه php-svg-lib که کتابخانه‌ای برای تجزیه فایل svg‌ است، با شناسه CVE-2023-50252 و شدت 9.8 شناسایی شده‌است. کتابخانه php-svg-lib هنگام مدیریت تگ <use> که به تگ <image> ارجاع می‌دهد، ویژگی‌ها را از تگ <use> به تگ <image> ادغام می‌کند. آسیب‌پذیری مذکور به خصوص زمانی که ویژگی href از تگ <use> پاک‌سازی نشده باشد ظاهر می‌شود.
این مسئله می‌تواند منجر به خوانش‌ ناامن فایل و درنتیجه بروز آسیب‌پذیری PHAR Deserialization در نسخه‌های قبل از نسخه هشتم php شود.
هنگام تجزیه تگ <use>، سعی می‌شود شیء ارجاع شده توسط ویژگی (attribute) href پیدا شود. اگر پیدا شد، آن را در ویژگی referenced$ ذخیره می‌کند. هنگامی که UseTag::handle فراخوانی می‌شود، ویژگی‌های تگ <use> با ویژگی های تگ ارجاع شده ادغام می شوند.
مشکل زمانی پیش می‌آید که شیء ارجاع‌ داده‌شده، یک تگ <image> باشد. در این صورت هرگونه اعتبارسنجی قبل از تگ <image> دور زده می‌شود.
برای نمایش یک تصویر با تگ <image> از اشاره‌گر (ویژگی href) موجود در تگ <use> استفاده می‌شود و اگر به یک فایل PHAR اشاره داشته ‌باشد، منجر به پردازش آن فایل به جای مرجع اصلی می‌شود که این همان آسیب‌پذیری PHAR  Deserialization است.
مطابق شکل زیر،‌ ویژگی href در تگ <use> به یک فایل PHAR اشاره دارد و کتابخانه php-svg-lib به‌وسیله تابع file_get_contents این فایل را پردازش می‌کند.

php-svg-lib

 

محصولات آسیب‌پذیر
نسخه‌های ماقبل نسخه 0.5.1 این کتابخانه، آسیب پذیر هستند و عملیات phar desrialization ذکر شده، در نسخه‌های پیش از نسخه هشتم php رخ می‌دهد.
این نقص همچنین می‌تواند بسته به کلاس‌های موجود در سیستم، نتایجی مانند حذف فایل به نحوی که باعث انکار سرویس شود و حتی اجرای کد از راه دور را نیز به دنبال داشته‌باشد.

توصیه‌های امنیتی
برای جلوگیری از خطرات احتمالی ناشی از آسیب‌پذیری مذکور، توصیه می‌شود در سیستم‌هایی که از php-svg-lib  استفاده می‌کنند، اعتبارسنجی ورودی را با استفاده از منطقی شبیه به کد زیر پیاده‌سازی کنند:

Mitigation


منابع خبر:


[1] https://nvd.nist.gov/vuln/detail/CVE-2023-50252
[2] https://github.com/dompdf/php-svg-lib/security/advisories/GHSA-jq98-9543-m4cr