[보안패치] 그누보드 4.37.07 : 패치하시면 안됩니다. 정보
[보안패치] 그누보드 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);
댓글 전체
감사합니다.
저도 감사합니다. ^^
고맙습니다.
감사합니다.
mysql_real_escape_string 때문에
싱글쿼테이션이랑 더블쿼테이션이 중복될거 같네요.
싱글쿼테이션이랑 더블쿼테이션이 중복될거 같네요.
해당 패치를 하고 난뒤부터 에디터에서 글을쓴뒤 글자 크기 및 색상등을 변경하면 제대로 적용되지 않는 현상이 발생합니다.
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
보안패치된 코드에서 문제가 발생하였습니다.
패치를 적용하신 분들께서는 4.37.06 으로 되돌려 주시기 바랍니다.
제대로 확인하지 못하고 수정된 코드를 올려 불편을 드려 대단히 죄송합니다.
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
보안패치된 코드에서 문제가 발생하였습니다.
패치를 적용하신 분들께서는 4.37.06 으로 되돌려 주시기 바랍니다.
제대로 확인하지 못하고 수정된 코드를 올려 불편을 드려 대단히 죄송합니다.
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆