[보안패치] 그누보드 4.37.07 : 패치하시면 안됩니다.
4.37.07 (2014.03.19)
: Blind SQL Injection 취약점 문제 해결 (Suninatas팀 2theT0P님께서 알려 주셨습니다.)
lib/common.lib.php 에 추가
// multi-dimensional array에 사용자지정 함수적용
function array_map_deep($fn, $array)
{
if(is_array($array)) {
foreach($array as $key => $value) {
if(is_array($value)) {
$array[$key] = array_map_deep($fn, $value);
} else {
$array[$key] = call_user_func($fn, $value);
}
}
} else {
$array = call_user_func($fn, $array);
}
return $array;
}
// SQL Injection 대응 문자열 필터링
function sql_escape_string($str)
{
$pattern = '/(and|or).*(union|select|insert|update|delete|from|where|limit|create|drop).*/i';
$replace = '';
$str = preg_replace($pattern, $replace, $str);
$str = call_user_func('mysql_real_escape_string', $str);
return $str;
}
common.php 에 추가 및 기존 코드 위치 이동
# 추가
// sql_escape_string 적용
$_POST = array_map_deep('sql_escape_string', $_POST);
$_GET = array_map_deep('sql_escape_string', $_GET);
$_COOKIE = array_map_deep('sql_escape_string', $_COOKIE);
$_REQUEST = array_map_deep('sql_escape_string', $_REQUEST);
# 위치 이동
// PHP 4.1.0 부터 지원됨
// php.ini 의 register_globals=off 일 경우
@extract($_GET);
@extract($_POST);
@extract($_SERVER);
: Blind SQL Injection 취약점 문제 해결 (Suninatas팀 2theT0P님께서 알려 주셨습니다.)
lib/common.lib.php 에 추가
// multi-dimensional array에 사용자지정 함수적용
function array_map_deep($fn, $array)
{
if(is_array($array)) {
foreach($array as $key => $value) {
if(is_array($value)) {
$array[$key] = array_map_deep($fn, $value);
} else {
$array[$key] = call_user_func($fn, $value);
}
}
} else {
$array = call_user_func($fn, $array);
}
return $array;
}
// SQL Injection 대응 문자열 필터링
function sql_escape_string($str)
{
$pattern = '/(and|or).*(union|select|insert|update|delete|from|where|limit|create|drop).*/i';
$replace = '';
$str = preg_replace($pattern, $replace, $str);
$str = call_user_func('mysql_real_escape_string', $str);
return $str;
}
common.php 에 추가 및 기존 코드 위치 이동
# 추가
// sql_escape_string 적용
$_POST = array_map_deep('sql_escape_string', $_POST);
$_GET = array_map_deep('sql_escape_string', $_GET);
$_COOKIE = array_map_deep('sql_escape_string', $_COOKIE);
$_REQUEST = array_map_deep('sql_escape_string', $_REQUEST);
# 위치 이동
// PHP 4.1.0 부터 지원됨
// php.ini 의 register_globals=off 일 경우
@extract($_GET);
@extract($_POST);
@extract($_SERVER);
첨부파일
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 7개
싱글쿼테이션이랑 더블쿼테이션이 중복될거 같네요.
보안패치된 코드에서 문제가 발생하였습니다.
패치를 적용하신 분들께서는 4.37.06 으로 되돌려 주시기 바랍니다.
제대로 확인하지 못하고 수정된 코드를 올려 불편을 드려 대단히 죄송합니다.
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆