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

Open Redirect 취약점 제보합니다. #557

Open
arrester opened this issue May 29, 2024 · 6 comments
Open

Open Redirect 취약점 제보합니다. #557

arrester opened this issue May 29, 2024 · 6 comments
Assignees
Labels
security Address potential security vulnerabilities.

Comments

@arrester
Copy link

arrester commented May 29, 2024

Security 탭에서 제보가 불가능하여 Issues를 통해 제보드립니다.

Version: 6.0.3

Vuln: Open Redirect

PoC

http://localhost:8000/bbs/login?url=https://google.com

Impact

  • 피싱 사이트로 연계한 공격이 발생할 수 있습니다.

Secure Code (bbs/login.py)

https://github.com/gnuboard/g6/blob/master/bbs/login.py

아래 코드에서 url 인자에 대해 필터링이 미흡하여 발생하기 때문에 필터링 추가 필요

@router.post("/login")
async def login(
        request: Request,
        member_service: Annotated[MemberService, Depends()],
        mb_id: str = Form(...),
        mb_password: str = Form(...),
        auto_login: bool = Form(default=False),
        url: str = Form(default="/")
):
    """로그인 폼화면에서 로그인"""
    member = member_service.authenticate_member(mb_id, mb_password)

    request.session["ss_mb_id"] = member.mb_id
    # XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다.
    ss_mb_key = session_member_key(request, member)
    request.session["ss_mb_key"] = ss_mb_key

    # 자동로그인
    response = RedirectResponse(url=url, status_code=302)
    # 최고관리자는 보안상 자동로그인 기능을 사용하지 않는다.
    if auto_login and not is_super_admin(request):
        age_1day = 60 * 60 * 24
        cookie_domain = request.state.cookie_domain
        response.set_cookie(key="ck_mb_id", value=member.mb_id,
                            max_age=age_1day * 30, domain=cookie_domain)
        response.set_cookie(key="ck_auto", value=ss_mb_key,
                            max_age=age_1day * 30, domain=cookie_domain)

    return response
@KimTom89 KimTom89 self-assigned this Jun 4, 2024
KimTom89 added a commit that referenced this issue Jun 4, 2024
- Redirect URL을 검증하는 의존성 주입 함수 추가
@arrester
Copy link
Author

arrester commented Jun 9, 2024

패치하신 내용을 검토한 결과 우회가 가능하여 아래 내용을 전달드립니다.
url 파라미터 인자에서 // 에 대한 검증이 없어 별도로 추가한 allow_urls에 개발자가 원하는 도메인을 넣고 관리하더라도 슬래시 2개를 통해 원하는 도메인으로 변경하여 접근하도록 수정할 수 있습니다.

PoC
https://g6.demo.sir.kr/bbs/login?url=//google.com

추가로 해당 취약점 건에 대해 CVE 등록 해주실 수 있으신지 문의드립니다.

@Letm3through
Copy link
Contributor

Letm3through commented Jun 10, 2024

안녕하세요 @arrester @KimTom89 님,
해당 우회 관련 취약점 경우 패치 및 버전 업이 1주일 경과한 시점에서 제가 제보하였습니다.

  • 현 issue 경우 6.03 대상 그 후 우회 관련 언급이 없었음
  • 6.04에 취약점 조치 로직이 추가된후에도 아무런 언급이 없었음
  • 6.04에 대한 Open Redirect 취약점 제보후 댓글에 동일한 내용으로 답변이 달림

제가 제보후 똑같은 내용으로 @arrester 님께서 댓글을 달았기에 관련 취약점 경우 CVE 등록시 제 명의로 등록되는게 맞습니다.
@KimTom89 님, CVE 등록 경우 그누보드측에서 진행해주시는지 알수있을까요?

  • (제가 평상시에는 CVE를 등록하지 않지만) 현재 개발중인 SAST에 reference들을 추가를 위해 CVE 등록을 하였으면 해서요.

@KimTom89
Copy link
Collaborator

@arrester @Letm3through
안녕하세요. 저희 측에서는 따로 CVE를 등록하고 있지 않으며,
취약점 관련 조치 안내(CVE, KVE 등)가 오게되면 이에 대한 대응만 진행하고 있습니다.

@Letm3through
Copy link
Contributor

@KimTom89
알겠습니다. 확인 감사드립니다.
관련 이슈에 조치 PR 또한 제보시 올렸으니 참고하여 진행부탁드립니다.
감사합니다.

@arrester
Copy link
Author

안녕하세요 @Letm3through 님 순서대로 본다면 저 그리고 Letm3through님 둘 다 CVE 등록이 되는게 맞습니다.
저는 우회되는 점에 대해 등록 문의를 한 것이 아닌 6.0.3 버전에서 발생한 취약점에 대해 등록 문의를 한 것입니다.
지금까지 발생된 이력을 요약하면 아래와 같습니다.

  1. 6.0.3 Version 기준 Open Redirect 취약점 제보함 - arrester (이 시점에 CVE 등록)
  2. 패치를 늦게 확인하여 6.0.3에서 발생했던 취약점에 대해 패치가 정상적으로 되었는지 확인을 한 내용을 전달함 이 부분은 해당 취약점을 제보한 입장에서 패치가 정상적으로 되었는지 이행 점검을 하는 부분이라 당연한 부분임 (Letm3through님이 제보한 것과 별개로 진행된 부분)
  3. 이행점검이 진행되기 전 패치 후 버전 업데이트가 완료됨 이후 Letm3through님이 우회되는 부분을 발견 (버전 업데이트 이후기 때문에 이 부분도 CVE 등록)
  4. 따라서 시점에 따라 CVE가 2번 나와야 함 (arrester, Letm3through)

이상입니다.

@arrester
Copy link
Author

@KimTom89
알겠습니다. 답변 감사합니다.

@KimTom89 KimTom89 added the security Address potential security vulnerabilities. label Jun 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
security Address potential security vulnerabilities.
Projects
None yet
Development

No branches or pull requests

3 participants