ホームページ  >  記事  >  php教程  >  PHP5.2 における chunk_split() 関数の整数オーバーフローの脆弱性の分析

PHP5.2 における chunk_split() 関数の整数オーバーフローの脆弱性の分析

WBOY
WBOYオリジナル
2016-06-13 12:31:52854ブラウズ

影響を受けるシステム:
PHP PHP
影響を受けないシステム:
PHP PHP 5.2.3
説明:
----------- --- ---------------------------------------------- --- ---------------
BUGTRAQ ID: 24261
CVE(CAN) ID: CVE-2007-2872

PHP は人気のある WEB サーバーサイドですプログラミング言語。

PHP の chunk_split 関数には、不正なパラメータを処理する際の整数オーバーフローの脆弱性があり、ローカルの攻撃者がこの脆弱性を利用して自身の権限を昇格させる可能性があります。

PHP の chunk_split 関数の 1963 行目は、関数の結果に十分なメモリ サイズを割り当てようとしますが、チェックを実行せずに srclen および chunklen パラメータ ブロックを使用します。値の block と endlen が 65534 バイトより大きい場合、整数オーバーフローがトリガーされ、間違ったメモリ サイズが割り当てられ、ヒープ オーバーフローが発生します。

ext/standard/string.c:

1953 static char *php_chunk_split(char *src, int srclen, char *end,
int endlen, int chunklen, int *destlen)
1954 {
1955 char *dest;
1956 char *p, *q;
1957 int チャンク */
1958 intrestlen;
1959
1960 チャンク = srclen / chunklen;
1961restlen = srclen - チャンク * chunklen; /* srclen % chunklen */
1962
1963 dest =safe_emalloc((srclen (チャンク 1) * endlen 1) ,
sizeof(char), 0);
1964
1965 for (p = src, q = dest; p 1966 memcpy(q , p, chunklen);
1967 q = chunklen;
1968 memcpy(q, end, endlen);
1969 q = endlen;
1970 p = chunklen;
1971 }

<*出典: ゲルハルト ワーグナー

リンク: http://marc.info/?l=bugtraq&m=118071054000708&w=2
http://www.php.net/releases/ 5_2_3.php
http://secunia.com/advisories/25456/
*>

テスト方法:
-------------- -------------------------------------------------- ----------------

警告

以下の手順 (方法) は不快感を与える可能性があり、セキュリティの研究と教育のみを目的としています。ご自身の責任でご使用ください。

$a=str_repeat("A", 65535);
$b=1;
$c=str_repeat("A", 65535);
chunk_split($a,$b,$c);
?>

提案:
--------------------- -------------------------------------------------- ----------
メーカー パッチ:

PHP
---
現在、メーカーはこのセキュリティ問題を修正するアップグレード パッチをリリースしています。こちらにアクセスしてください。メーカーのホームページからダウンロードしてください :

http://www.php.net/downloads.php#v5

記事元: NSFOCUS Technology

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