اخیراً یک آسیبپذیری امنیتی با شناسهی CVE-2024-11235 و شدت 9.2 در نسخههای خاصی از PHP 8 شناسایی شده است. این نقص امنیتی از نوع Use-After-Free است که به دلیل اجرای خاص توابع __set و عملگر ??= همراه با مدیریت استثناها رخ میدهد. در صورت بهرهبرداری از این آسیبپذیری، یک مهاجم میتواند از طریق کنترل چینش حافظه، اقدام به اجرای کد از راه دور کند.
جزئیات آسیبپذیری
این نقص امنیتی زمانی رخ میدهد که در یک کد خاص، ترکیبی از __set Handler یا ??= Operator همراه با استثناها مورد استفاده قرار گیرد. PHP تابع php_request_shutdown را در انتهای چرخه اجرای هر درخواست اجرا نموده و فرآیند مدیریت حافظهی متغیرها را بر اساس تعداد مراجعی که به هر متغیر یا شیء وجود دارد، انجام میدهد. در این مرحله، اگر شمارش مراجع اشتباه انجام شود؛ یعنی شمارش به صفر برسد، در حالی که هنوز بخشی از اسکریپت به آن متغیر دسترسی دارد، حافظه را آزاد میکند. در صورتی که مهاجم حافظهی آزادشده را با کد دلخواه جایگزین کند، میتواند منجر به خرابی حافظه و اجرای کد مخرب گردد.
بردار CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/U:Amber نشان میدهد این آسیبپذیری از شدت نسبتاً بالایی برخوردار است و میتواند بدون نیاز به تعامل کاربر یا داشتن سطح دسترسی خاص، از راه دور مورد سوءاستفاده قرار گیرد. بهرهبرداری از آن دشوار است و نیازمند شرایط خاصی در حافظه یا اجرای کد است، اما در صورت موفقیت، تأثیر قابلتوجهی بر محرمانگی، یکپارچگی و در دسترس بودن دادهها دارد. با توجه به شرایط اجرایی و پیامدهای احتمالی، این آسیبپذیری در دستهبندی هشدار امنیتی با سطح Amber قرار گرفته است که نشاندهنده نیاز به توجه و اقدام اصلاحی سریع میباشد.
نسخههای تحت تأثیر
این آسیبپذیری در نسخههای زیر تأیید شده است:
- تمامی نسخههای PHP از 8.3.0 تا 8.3.18
- تمامی نسخههای PHP از 8.4.0 تا 8.4.4
توصیههای امنیتی
بهروزرسانی PHP به نسخههای امن:
- PHP 8.3.19 یا بالاتر از آن
- PHP 8.4.5 یا بالاتر از آن
منابع خبر:
[1]https://nvd.nist.gov/vuln/detail/CVE-2024-11235
[2]https://github.com/php/php-src/security/advisories/GHSA-rwp7-7vc6-8477
- 96