기타IT관련정보/기타

제로보드 관리자 메일발송에서 SQL injection 버그패치(07.05.23)

박디 2007. 5. 25. 01:15
제로보드4의 패치가 또 나왔습니다. 수정된 부분이 아래 있으니 해당부분에 붙혀넣기 하여 수정

하시거나
http://nzeo.com 에서 패치파일을 받아 적용하시기바랍니다. 아래는 원문입니다.

---------------------------------------------


관리자 메일 발송 코드에서 $s_que 변수를 이용한 SQL Injection을 일으킬 수 있는 코드가 발견되어 패치합니다.

첨부된 admin_sendmail_ok.zip 파일의 압축을 풀면 나오는 admin_sendmail_ok.php파일을 사용하시는 제로보드4의 디렉토리에 덮어쓰시면 됩니다.

수정된 부분은 다음과 같습니다.

= admin_sendmail_ok.php ===============================================================

@@ -28,16 +28,18 @@
        if(!$true) $true = 0;
        if(!$nomailing) $nomailing = 0;
        if(!$sendnum) $sendnum = 100;
+    $group_no = (int)$group_no;
+    $s_que = '';
        if(!$total_member_num) {
                $temp=mysql_fetch_array(mysql_query("select count(*) from $member_table where group_no='$group_no'",$connect));
                $total_member_num=$temp[0];
        }

        if($cart) {
-               $temp=explode("||",$cart);
-               $s_que=" and ( no='$temp[1]' ";
-               for($i=2;$i<count($temp);$i++) $s_que.=" or no='$temp[$i]' ";
-               $s_que.=" )";
+               $temp = explode("||",$cart);
+        for($i=0;$i<count($temp);$i++) $target_srls[] = (int)$temp[$i];
+        $s_que = sprintf(' and ( no in (%s) )', "'".implode("','", $target_srls)."'");
        } else {


===============================================================================

위에서 - 가 붙은 줄은 삭제된 것을 의미하며 +가 붙은 줄은 추가된 것을 의미합니다.

이 보안버그를 알려주신 달팽이 (ID : mirr1004)님께 감사의 말씀 드립니다.


혹시 이 패치 적용후 메일 발송에 문제가 생기거나 보안 버그가 지속적으로 발견되면 꼭 알려주시면 감사하겠습니다.