PHP 5.2下chunk_split()関数整数オーバーフローホール分析


影響を受けるシステム:PHP PHP<5.2.3影響を受けないシステム:PHP PHP 5.2.3記述:----------------------------------------------------------------BUGRAQ ID:24261 CVE(CAN)ID:CVE-2007-2872 PHPは人気のあるWEBサーバ端末プログラミング言語である。PHP中のchunk_split関数は、奇形パラメータを扱う際に整数オーバーホールがあり、ローカル攻撃者はこのホールを利用して自分の権限を高めることができます。PHP中chunk_SPlit関数の1963行は関数結果に十分なメモリサイズを割り当てることを試みたが、何の検査も行わずにsrcelenとchunklenパラメータブロックを使用した。値のブロックとendlenが65534バイトより大きいと、整数オーバーフローがトリガされ、エラーのメモリサイズが割り当てられ、スタックオーバーフローが発生します。ext/standard/string.cn:1953 static char*php_chunk_split(char*src,int srcle,char*end,int endlen,int chunklen,int*destlen)1954{1955 char*dest;1956 char*p、**q;1957 int chunks/*complettee chunks!*/1958 int restlen19591960 chunks=srclan/chunklen;1961 restlen=srcelen-chunks*chunklen;srclan%chunklen*/19621963 dest=safe_emmalloc((srcelen+(chunks+1)*endlen+1)、size of(char)、0)19641965 for(p=src、q=dest)p<(src+srcelen-chunklen+1);){1966 memcpy(q,p,chunklen)1967 q+=chunklen;1968 memcpy(q,end,endlen)1969 q+=endlen;1970 p+=chunklen;1971)<*出所:Gerhard Wagnerリンク:http://marc.info/?l=bugtraq&m=118071054000708&w=2 http://www.php.net/releases/5_2_3.php http://secunia.com/advisories/25456/*>試験方法:------------------------以下の手順(方法)は攻撃性を持つ可能性があると警告し、安全研究と教育のためにのみ使用する。使用者はリスクを自負しています。a=strurepeat("A",65535);b=1;c=str_repeat(「A」、65535)chunk_スプリット($a、$b、$c);提案:----------------------------------メーカーパッチ:PHP---現在、メーカーはこのセキュリティ問題を修復するためにアップグレードパッチを発行しています。メーカーのホームページにダウンロードしてください。