PHP 記憶體管理器符號比較多個溢出漏洞

來源:互聯網
上載者:User

受影響系統:PHP PHP 5.2.0

不受影響系統:PHP PHP 5.2.1

描述:BUGTRAQ ID: 23238

PHP是廣泛使用的通用目的指令碼語言,特別適合於Web開發,可嵌入到HTML中。PHP的記憶體管理器實現上存在漏洞,本地攻擊者可能利用此漏洞提升許可權。如果通過emalloc()函數分配記憶體的話,PHP中新的Zend記憶體管理器會在內部的_zend_mm_alloc_int()函數中處理這個請求,首先使用ZEND_MM_TRUE_SIZE宏判斷所請求記憶體塊的真實大小,如下所示:

static void *_zend_mm_alloc_int(zend_mm_heap *heap, size_t size ZEND_FILE_LINE_DC ...) {     size_t true_size, best_size = 0x7fffffff;     zend_mm_free_block *p, *end, *best_fit = NULL;     true_size = ZEND_MM_TRUE_SIZE(size);     The macro expands to     (((long)size<(long)ZEND_MM_MIN_SIZE)?(ZEND_MM_ALIGNED_MIN_HEADER_SIZE):     (ZEND_MM_ALIGNED_SIZE(size+ZEND_MM_ALIGNED_HEADER_SIZE+END_MAGIC_SIZE)))

但在進行比較之前這段代碼將大小設定為有符長型,因此如果請求了正常情況下會導致記憶體破壞或越界的很大的記憶體塊,就可能將其處理為負數,僅分配很小的記憶體塊,導致多個可利用的緩衝區溢位。

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。