Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

보안취약점. 비밀글이 게시판 목록에서 내용, 썸네일이 노출되는 문제 #287

Closed
kkigomi opened this issue Sep 12, 2023 · 3 comments

Comments

@kkigomi
Copy link
Contributor

kkigomi commented Sep 12, 2023

참고: https://sir.kr/cm_free/1668768

비밀글로 작성한 게시물이 그누보드의 기본 gallery 스킨에서 글의 일부 내용과 썸네일 이미지(파일 첨부, 에디터 이미지 첨부)가 노출되는 문제가 있습니다.

목록(/bbs/list.php)에서 아래와 같이 본문 내용을 감추는 방법으로 패치해보려 했으나, 파일 첨부한 이미지는 get_list_thumbnail() 함수에서 비밀글 임을 알지 못하기 때문에 파일첨부한 이미지의 썸네일은 노출되네요.

diff --git forkSrcPrefix/bbs/list.php forkDstPrefix/bbs/list.php
index 208a51d4558ed037c7cfa00e4cd806c0ec950ce1..2c6792763c81549e26d8408487d7f716f8f9db56 100644
--- forkSrcPrefix/bbs/list.php
+++ forkDstPrefix/bbs/list.php
@@ -200,6 +200,24 @@ if($page_rows > 0) {
         $list_num = $total_count - ($page - 1) * $list_page_rows - $notice_count;
         $list[$i]['num'] = $list_num - $k;
 
+        // 비밀글은 권한이 없으면 내용을 가림
+        if (strstr($list[$i]['wr_option'], 'secret')) {
+            if (
+                // 그룹, 게시판 등의 관리자 권한
+                !$is_admin
+                // 비회원 글이거나, 로그인 회원의 소유의 글 확인
+                && (
+                    !!$list[$i]['mb_id'] && $list[$i]['mb_id'] !== $member['mb_id']
+                    || !$list[$i]['mb_id']
+                )
+            ) {
+                $list[$i]['wr_content'] = '비밀글입니다';
+                $list[$i]['wr_link1'] = '';
+                $list[$i]['wr_link2'] = '';
+                $list[$i]['file'] = array('count' => 0);
+            }
+        }
+
         $i++;
         $k++;
     }

스킨마다 비밀글을 확인하고 처리할 수는 있겠으나 보다 안전한 방법을 찾는 것이 좋을 것 같습니다.
get_list_thumbnail() 함수는 게시판 목록 등에서 사용되는 만큼 그 목적성이 뚜렷한 편이라 생각은 되어서 이 함수에 비밀글임을 확인하게 하는 등의 방법을 적용할 수는 있겠으나, 아직 자세히 살펴보지는 못해서 확신이 서질 않네요.

파일 첨부된 이미지의 썸네일 문제만 해결되면 위 코드와 함께 적용하면 개별 스킨마다 처리하지 않아도 내용과 썸네일 이미지를 가릴 수 있을 것으로 보입니다.

@kkigomi kkigomi changed the title 비밀글이 게시판 목록에서 내용, 섬네일이 노출되는 문제 비밀글이 게시판 목록에서 내용, 썸네일이 노출되는 문제 Sep 12, 2023
@kkigomi
Copy link
Contributor Author

kkigomi commented Sep 12, 2023

비밀글의 답변글에 권한을 부여하기 위한 'ss_secret_' . $bo_table . '_' . $write['wr_num'] 이런 세션키를 사용하는 조건 또한 내용이 노출되도록 할 수는 있겠으나, #265 이슈 중 답변글의 권한이 잘못 부여될 수 있는 문제가 해결되지 않았기에 이 조건을 포함하지 않았습니다.

제목도 가릴 수는 있겠으나 현재 latest 위젯에서도 제목을 가리고 있지는 않아서 일단 그냥 두었습니다.

@kkigomi
Copy link
Contributor Author

kkigomi commented Sep 12, 2023

이참에... 글, 댓글의 권한을 확인할 수 있는 함수 하나 만들어졌으면 좋겠습니다.

list.php, 게시판 스킨, latest(), latest 스킨 등등 어디에서 처리를 하든, if 문 조건을 구구절절 나열하며 권한을 체크하는 게 여기저기 덕지덕지 붙어야해서 이를 간편하게 체크 가능한 함수가 하나 있었으면 좋겠네요.

@kkigomi kkigomi changed the title 비밀글이 게시판 목록에서 내용, 썸네일이 노출되는 문제 보안취약점. 비밀글이 게시판 목록에서 내용, 썸네일이 노출되는 문제 Sep 12, 2023
@thisgun
Copy link
Contributor

thisgun commented Oct 19, 2023

안녕하세요. SIR 입니다.

알려주셔서 감사합니다.

글, 댓글의 권한을 확인할 수 있는 함수는 차후에 고려하여 진행하도록 하겠습니다.

@kkigomi kkigomi closed this as completed Nov 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants