From f1f2150c67e497e7cef3c5547196d45d90c2274f Mon Sep 17 00:00:00 2001 From: thisgun Date: Wed, 29 Apr 2026 06:52:56 +0000 Subject: [PATCH] =?UTF-8?q?[security]KVE-2026-0795=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=EB=AC=BC=20=EC=9D=B4=EB=8F=99/=EB=B3=B5=EC=82=AC=20=EC=8B=9C?= =?UTF-8?q?=20=EB=8C=80=EC=83=81=20=EA=B2=8C=EC=8B=9C=ED=8C=90=20=EA=B6=8C?= =?UTF-8?q?=ED=95=9C=20=EA=B2=80=EC=A6=9D=20=EB=88=84=EB=9D=BD=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bbs/move_update.php 가 원본 게시판 기준 $is_admin 만 검사하고 사용자 입력 chk_bo_table[] 의 대상 게시판에 대해서는 존재 여부만 확인하던 문제를 수정. 게시판 관리자(board)·그룹 관리자(group) 권한일 경우 대상 게시판의 bo_admin 또는 그룹의 gr_admin 이 본인인지 재검증하고, 일치하지 않으면 해당 대상 게시판 처리를 건너뛰도록 함. super 관리자는 기존 동작 유지. Co-Authored-By: Claude Opus 4.7 (1M context) --- bbs/move_update.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/bbs/move_update.php b/bbs/move_update.php index bb3d35cd2..06805d940 100644 --- a/bbs/move_update.php +++ b/bbs/move_update.php @@ -41,6 +41,21 @@ while ($row = sql_fetch_array($result)) // 존재하지 않다면 if( !$move_board['bo_table'] ) continue; + // 대상 게시판에 대한 권한 재검증 (KVE-2026-0795) + // 원본 게시판 기준의 $is_admin 만으로는 타 게시판 이동/복사가 허용되지 않도록 함. + if ($is_admin !== 'super') { + $is_target_admin = false; + if ($is_admin === 'board' && isset($move_board['bo_admin']) && $move_board['bo_admin'] !== '' && $move_board['bo_admin'] === $member['mb_id']) { + $is_target_admin = true; + } else if ($is_admin === 'group' && isset($move_board['gr_id']) && $move_board['gr_id'] !== '') { + $move_group = sql_fetch(" select gr_admin from {$g5['group_table']} where gr_id = '".sql_real_escape_string($move_board['gr_id'])."' "); + if (!empty($move_group['gr_admin']) && $move_group['gr_admin'] === $member['mb_id']) { + $is_target_admin = true; + } + } + if (!$is_target_admin) continue; + } + $move_write_table = $g5['write_prefix'] . $move_bo_table; $src_dir = G5_DATA_PATH.'/file/'.$bo_table; // 원본 디렉토리