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)
아래 코드에서 url 인자에 대해 필터링이 미흡하여 발생하기 때문에 필터링 추가 필요
```python
@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
```
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)
아래 코드에서 url 인자에 대해 필터링이 미흡하여 발생하기 때문에 필터링 추가 필요
```python
@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
```
댓글 6개
arrester
1년 전
패치하신 내용을 검토한 결과 우회가 가능하여 아래 내용을 전달드립니다.
url 파라미터 인자에서 // 에 대한 검증이 없어 별도로 추가한 allow_urls에 개발자가 원하는 도메인을 넣고 관리하더라도 슬래시 2개를 통해 원하는 도메인으로 변경하여 접근하도록 수정할 수 있습니다.
PoC
`https://g6.demo.sir.kr/bbs/login?url=//google.com`
추가로 해당 취약점 건에 대해 CVE 등록 해주실 수 있으신지 문의드립니다.
url 파라미터 인자에서 // 에 대한 검증이 없어 별도로 추가한 allow_urls에 개발자가 원하는 도메인을 넣고 관리하더라도 슬래시 2개를 통해 원하는 도메인으로 변경하여 접근하도록 수정할 수 있습니다.
PoC
`https://g6.demo.sir.kr/bbs/login?url=//google.com`
추가로 해당 취약점 건에 대해 CVE 등록 해주실 수 있으신지 문의드립니다.
Letm3through
1년 전
안녕하세요 @arrester @KimTom89 님,
해당 우회 관련 취약점 경우 패치 및 버전 업이 1주일 경과한 시점에서 제가 제보하였습니다.
- 현 issue 경우 6.03 대상 그 후 우회 관련 언급이 없었음
- 6.04에 취약점 조치 로직이 추가된후에도 아무런 언급이 없었음
- 6.04에 대한 Open Redirect 취약점 제보후 댓글에 동일한 내용으로 답변이 달림
제가 제보후 똑같은 내용으로 @arrester 님께서 댓글을 달았기에 관련 취약점 경우 CVE 등록시 제 명의로 등록되는게 맞습니다.
@KimTom89 님, CVE 등록 경우 그누보드측에서 진행해주시는지 알수있을까요?
- (제가 평상시에는 CVE를 등록하지 않지만) 현재 개발중인 SAST에 reference들을 추가를 위해 CVE 등록을 하였으면 해서요.
해당 우회 관련 취약점 경우 패치 및 버전 업이 1주일 경과한 시점에서 제가 제보하였습니다.
- 현 issue 경우 6.03 대상 그 후 우회 관련 언급이 없었음
- 6.04에 취약점 조치 로직이 추가된후에도 아무런 언급이 없었음
- 6.04에 대한 Open Redirect 취약점 제보후 댓글에 동일한 내용으로 답변이 달림
제가 제보후 똑같은 내용으로 @arrester 님께서 댓글을 달았기에 관련 취약점 경우 CVE 등록시 제 명의로 등록되는게 맞습니다.
@KimTom89 님, CVE 등록 경우 그누보드측에서 진행해주시는지 알수있을까요?
- (제가 평상시에는 CVE를 등록하지 않지만) 현재 개발중인 SAST에 reference들을 추가를 위해 CVE 등록을 하였으면 해서요.
KimTom89
1년 전
@arrester @Letm3through
안녕하세요. 저희 측에서는 따로 CVE를 등록하고 있지 않으며,
취약점 관련 조치 안내(CVE, KVE 등)가 오게되면 이에 대한 대응만 진행하고 있습니다.
안녕하세요. 저희 측에서는 따로 CVE를 등록하고 있지 않으며,
취약점 관련 조치 안내(CVE, KVE 등)가 오게되면 이에 대한 대응만 진행하고 있습니다.
Letm3through
1년 전
@KimTom89
알겠습니다. 확인 감사드립니다.
관련 이슈에 조치 PR 또한 제보시 올렸으니 참고하여 진행부탁드립니다.
감사합니다.
알겠습니다. 확인 감사드립니다.
관련 이슈에 조치 PR 또한 제보시 올렸으니 참고하여 진행부탁드립니다.
감사합니다.
arrester
1년 전
안녕하세요 @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)
이상입니다.
저는 우회되는 점에 대해 등록 문의를 한 것이 아닌 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
1년 전
@KimTom89
알겠습니다. 답변 감사합니다.
알겠습니다. 답변 감사합니다.
게시글 목록
| 번호 | 제목 |
|---|---|
| 232 | |
| 230 | |
| 228 | |
| 226 | |
| 225 | |
| 224 | |
| 222 | |
| 221 | |
| 212 | |
| 211 | |
| 209 | |
| 208 | |
| 207 | |
| 206 | |
| 202 | |
| 201 | |
| 200 | |
| 199 | |
| 198 | |
| 197 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기