게시판 파일 업로드 기능을 이용해 제로보드XE를 해킹할 수 있는 보안 문제가 발견되자 제로보드XE 개발자는 파일 업로드를 관리하는 modules/file/file.controller.php 파일의 내용을 수정해 보안 문제를 해결하는 보안 패치를 배포하기 시작하였습니다. 제로보드XE 보안 문제에 대한 자세한 내용은 제로보드XE 홈페이지(새창)를 참고하시기 바랍니다.
file.controller.php의 수정
#1. 원본 file.controller.php
// 이미지인지 기타 파일인지 체크하여 upload path 지정
if(preg_match("/(jpg|jpeg|gif|png|wmv|wma|mpg|mpeg|avi|swf|flv|mp1|mp2|mp3|asaf|wav|asx|mid|midi|asf|mov|moov|qt|rm|ram|ra|rmm|m4v)$/i", $file_info['name'])) {
$path = sprintf("./files/attach/images/%s/%s", $module_srl,getNumberingPath($upload_target_srl,3));
$filename = $path.$file_info['name'];
$direct_download = 'Y';
} else {
modules/file/file.controller.php을 메모장으로 열어 ‘// 이미지인지 기타 파일인지 체크하여 upload path’를 검색한 후 빨간색 부분을 아래 회색 박스(#2)에 표시된 빨간색 내용으로 교체합니다.
#2. 수정이 완료된 file.controller.php
// 이미지인지 기타 파일인지 체크하여 upload path 지정
if(preg_match("/(jpg|jpeg|gif|png|wmv|wma|mpg|mpeg|avi|swf|flv|mp1|mp2|mp3|asaf|wav|asx|mid|midi|asf|mov|moov|qt|rm|ram|ra|rmm|m4v)$/i", $file_info['name'])) {
// direct 파일에 해킹을 의심할 수 있는 확장자가 포함되어 있으면 바로 삭제함
$file_info['name'] = preg_replace('/\.(php|phtm|htm|cgi|pl|exe|jsp|asp|inc)/i', '$0-x',$file_info['name']);
$path = sprintf("./files/attach/images/%s/%s",$module_srl,getNumberingPath($upload_target_srl,3));
$filename = $path.$file_info['name'];
$direct_download = 'Y';
} else {