php 5.x 보안 업데이트
Web Browser 로는 FTP 접속이 불가능 합니다.
문서번호 : 1218807561
업데이트 : 2008.08.15
상세내용
5.2.6-2 에서 보안 기능 관련 패치가 추가가 되어 기존 동작에 문제를 줄 수 있으니,
아래의 내용을 꼼꼼이 숙지 하신 후에 업데이트를 하십시오.
업데이트 사용자의 경우에는 기존의 설정에 변화가 없으므로 상관이 없으나 만약을
위하여 php.ini 의 설정이 변경이 되어 있는지 확인을 해 보시기 바랍니다. 이번
버전 부터는 기존의 php.ini 을 건드리지 않도록 변경이 되었습니다.
* 보안 버그 fix
. CVE-2008-2665
Directory traversal vulnerability in the posix_access function in PHP 5.2.6
and earlier allows remote attackers to bypass safe_mode restrictions via
a .. (dot dot) in an http URL, which results in the URL being canonicalized
to a local filename after the safe_mode check has successfully run.
. CVE-2008-2666
Multiple directory traversal vulnerabilities in PHP 5.2.6 and earlier allow
context-dependent attackers to bypass safe_mode restrictions by creating a
subdirectory named http: and then placing ../ (dot dot slash) sequences in
an http URL argument to the (1) chdir or (2) ftok function.
* pear 1.7.2 update
* Official Patch
- News 51773: afford a larger stack here and other json parsers out there
go deeper than 128
- News 51899: Avoid leaks when zlib streams can not be closed properly.
- fixed bug #45030 Destination image alpha channel noise when using
imagecopyresampled
- fixed bug #44617 wrong HTML entity output when substitute_character=entity
- fixed bug #43993 mb_substr_count() behaves differently to substr_count()
with overlapping needles
- fixed bug #45691 Some per-dir or runtime settings may leak into other
requests
* php.ini option 추가
- allow_include_extension = .php .php3
include / require / include_once / require_once 사용시에 등록된 파일 확장자
만 허가합니다. 등록되지 않은 경우 security issue 에러 메시지를 출력합니다.
이 옵션이 켜졌을 경우, include 실패 시에, require 와 동일하게 script engine
이 정지 됩니다.
이 옵션이 켜졌을 경우, php upload 시에 지정된 확장자의 upload 를 보안상
block 시킵니다. 이 경우 _FILES 의 err 변수가 UPLOAD_ERR_ILLEGAL(-1)로
설정이 됩니다.
처음 설치시에, 위의 값이 기본값으로 되니 주의 하시기 바랍니다.
* image 악성 코드 방어 기능 추가
jpg header 나 gif 본문등에 PHP code 를 삽입하여 injection에 사용하는 경우를
막기 위한 기능 입니다. 기본값은 Off 입니다. (이용 하시려면 php.ini 에서 설정
해 주셔야 합니다.
- upload_image_check
image 안에 <? 로 시작하는 문자열을 찾아서 <?를 포함하여 연속으로
17byte 가 ASCII 일 경우 악성 코드로 판단하여 upload 를 block 합니다.
이 기능은 .jpg, .jpeg, .png, .gif 확장자를 가진 파일을 업로드 할 때만 작동
합니다. 필터가 되었을 경우 _FILES 의 [err] member 의 값은
UPLOAD_ERR_SECURITY(-2)로 기록이 됩니다.
- upload_image_check_log
upload_image_check 에 걸렸을 경우 에러 로그에 해당 내용을 기록하며, filter
된 문자열이 어떤 것인지 기록됩니다.
- upload_image_check_test
upload_image_check에 필터되었을 경우, 체크만 하고 통과를 시킵니다.
upload_image_check 기능을 적용하기 전에, upload_image_check_log 와 이
옵션을 이용하여 sampling 을 할 수 있습니다. 예를 들어
upload_image_check = On
upload_image_check_log = On
upload_image_check_test = On
과 같이 설정을 하면, 체크를 하여 log 에 기록은 하지만 정상적으로 업로드는
진행이 됩니다. 이를 위해서 _FIELS 의 member 중 [sec]와 [secstr] 이 확장이
되었습니다. 필터가 되었을 경우, [err] member 는 정상적으로 0의 값을 가지지만
[sec] member는 필터가 되었을 경우, UPLOAD_ERR_SECURITY(-2)로 기록이 되고,
필터된 문자열은 [secstr] 변수에 남게 됩니다. 만약 이 경우 php code 단에서
다음과 같이 처리할 수 있습니다.
$files = $_FILES['userfile'];
if ( $files['sec'] == UPLOAD_ERR_SECURITY ) {
file_put_contents ('/tmp/security_log',
"want/path/$files['tmp_name'] - [{$files['secstr']] by ");
}
move_uploaded_file ($files['tmp_name'], "want/path/$files['tmp_name']);
- upload_image_check_whitelist
image 내부에 water mark 나 기타 image generator 가 meta 정보를 넣는 경우가
있습니다. 이 경우를 위하여 white list 를 만들 수 있습니다. PHP 내부에서
adobe 관련 meta 정보를 기본으로 white list 로 가지고 있으며, 혹시 문제가
되는 경우 이 옵션에 지정한 파일에 한줄씩 기입 하시면 됩니다. 기본 whitelist
는 다음과 같습니다.
<?xpacket begin
<?xpacket end
<?adobe-xap
<?xml
* php.ini 기본값 변경 사항
- 5.2.6-2 부터는 기존의 php.ini 설정을 원복 시키지 않습니다. 신규 설치시에만
적용 됩니다.
- retister_globals 의 값이 기본 On 에서 Off 로 변경
- disable_functions 에 기본으로 phpinfo, ini_get, php_uname, get_cfg_var 를
등록 이 함수들은 보통 PHP 프로그램 설치 installer 에서 많이 사용하며,
프로그램 내부에서도 사용을 많이 하는 편입니다. 하지만, web 을 이용한 attack
에도 굉장히 빈번하게 사용이 되는 관계로 기본으로 block을 시키게 되었습니다.
주의하실 것은 아래의 기존 함수들을 사용하지 못하는 개념이 아니라 php.ini
의 disable_functions 에 등록을 하여 악용을 방지하라는 의미입니다.
대안으로, 5.2.6-2 부터는 이 함수들에 대한 alias function 을 제공하니,
다음과 같이 변경하여 사용하시면 되겠습니다.
phpinfo => ___phpinfo
ini_get => ___ini_get
ini_set => ___ini_set
ini_get_all => ___ini_get_all
get_cfg_var => ___get_cfg_var
php_uname => ___php_uname
이 외에,
phpversion => ___phpversion
sys_get_temp_dir => ___sys_get_temp_dir
을 지원하며, 이 들 함수는 weh shell 에서 아주 사용 빈도가 높은 이유로,
막을 것을 권장 합니다.
또한, ___phpinfo 등과 같이 alias 가 되지 않은 PHP 에서 사용이 가능 하도록
하기 위하여 /usr/lib/php/alias_table.php 를 제공합니다.
- upload_tmp_dir 의 값이 기본 /tmp 에서 /var/lib/php/tmp 로 변경
- safe_mode_exec_dir 의 값이 기본으로 /var/lib/php/bin 으로 변경
시스템 함수 사용시에, /var/lib/php/bin 에 존재하는 명령만 가능 합니다.
필요한 명령들을 /var/lib/php/bin 에 soft link 시키시면 됩니다.
* urldecode / rawurldecode 에서 %00 을 제거하고 실행
uri 에 %2500 을 넘겨서 urldecode 통과할 경우 null byte attack 이 가능하므로,
%00 자체가 urldecode 에서 수행되지 않도록 방어
* Korean Extension 1.0.4 update
- pcre / gd library 버전이 오래되어 발생하는 문제 수정
* eAccelerator 0.9.5.3 update
- http://eaccelerator.net/ticket/232
- changed mtime check method to mm from inode
- add mtime check interval function
* memcache 3.0.1 update
Autoupdates 지원 : 일부 지원
pkgsysupdate -v
pkgadd -F "php*"
update 패키지
RPMS :
+ PHP5
. php-pear-1.7.2-1.noarch.rpm
. php-binary-5.2.6-2.i686.rpm
. php-5.2.6-2.i686.rpm
. php-fcgi-5.2.6-2.i686.rpm
. php-devel-5.2.6-2.i686.rpm
. php-gd-5.2.6-2.i686.rpm
. php-mssql-5.2.6-2.i686.rpm
. php-bcmath-5.2.6-2.i686.rpm
. php-geoip-5.2.6-2.i686.rpm
. php-mysql-5.2.6-2.i686.rpm
. php-gettext-5.2.6-2.i686.rpm
. php-mysqli-5.2.6-2.i686.rpm
. php-bz2-5.2.6-2.i686.rpm
. php-hash-5.2.6-2.i686.rpm
. php-openssl-5.2.6-2.i686.rpm
. php-calendar-5.2.6-2.i686.rpm
. php-iconv-5.2.6-2.i686.rpm
. php-pdo-5.2.6-2.i686.rpm
. php-curl-5.2.6-2.i686.rpm
. php-imap-5.2.6-2.i686.rpm
. php-pdo-mysql-5.2.6-2.i686.rpm
. php-dba-5.2.6-2.i686.rpm
. php-korean-5.2.6-2.i686.rpm
. php-pdo-pgsql-5.2.6-2.i686.rpm
. php-krisp-5.2.6-2.i686.rpm
. php-pgsql-5.2.6-2.i686.rpm
. php-eaccelerator-5.2.6-2.i686.rpm
. php-rrd-5.2.6-2.i686.rpm
. php-exif-5.2.6-2.i686.rpm
. php-mcrypt-5.2.6-2.i686.rpm
. php-sockets-5.2.6-2.i686.rpm
. php-fileinfo-5.2.6-2.i686.rpm
. php-memcache-5.2.6-2.i686.rpm
. php-sqlite-5.2.6-2.i686.rpm
. php-ftp-5.2.6-2.i686.rpm
. php-mhash-5.2.6-2.i686.rpm
. php-yp-5.2.6-2.i686.rpm
. php-nis-5.2.6-2.i686.rpm
. php-json-5.2.6-2.i686.rpm
SRPMS :
. php-5.2.6-2.src.rpm
. php-extension-5.2.6-2.src.rpm
참고 :
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2665
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-2666
|