ホームページ >php教程 >php手册 >PHP メモリ マネージャーのシンボル比較の複数のオーバーフローの脆弱性

PHP メモリ マネージャーのシンボル比較の複数のオーバーフローの脆弱性

WBOY
WBOYオリジナル
2016-06-21 09:00:24874ブラウズ

影響を受けるシステム: 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 マクロを使用して、リクエストされたメモリ ブロックの実際のサイズを決定します。

<ccid_code>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)))</ccid_code>

しかし、このコードは比較するずっと前にサイズを符号付きに設定するため、通常どおりにリクエストすると、メモリ破損または境界外の大きなブロックが発生します。のメモリは負の数として扱われる可能性があり、小さなメモリ ブロックのみが割り当てられるため、悪用可能なバッファ オーバーフローが複数発生する可能性があります。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。