Evie_Tao
(Evie Tao)
1
문제 설명
커스터마이징된 Discourse 배포 환경의 보안 검토 과정에서, 관리자 > 설정 인터페이스에서 OAuth2 클라이언트 시크릿에 대한 잠재적 민감 정보 노출 문제가 발견되었습니다.
상세 내용
- 관리자 설정 페이지에서 OAuth2 클라이언트 시크릿(그리고 잠재적으로 다른 민감한 토큰/키)이 마스킹(예: 별표 사용) 처리 없이 평문으로 표시되고 있습니다.
- 관리자는 설정에 평문 시크릿을 직접 입력해야 합니다. 관리자 UI에 접근 권한이 있는 사람은 전체 시크릿을 볼 수 있습니다.
- 공격자가 관리자 세션에 접근(임시적 접근 포함)할 경우, 클라이언트 시크릿을 쉽게 확보하여 무단 OAuth2 토큰 요청을 하거나 제3자 서비스로의 요청을 위조하는 데 사용할 수 있습니다.
보안 영향
- 관리자 UI에서의 시크릿 평문 노출은 자격 증명 유출 위험을 높입니다.
- 마스킹 처리의 부재는 시크릿 처리를 위한 보안 모범 사례에 부합하지 않습니다.
- 시크릿/토큰은 권한 상승, 사칭, 또는 통합된 서비스에 대한 추가 공격에 악용될 수 있습니다.
질문
- 관리자 설정 UI에서 OAuth2 시크릿과 같은 민감한 필드를 마스킹 처리할 계획이 있습니까? (예: ****** 으로 표시하고 필요 시 표시 옵션 제공)
- Discourse 배포 환경에서 민감한 자격 증명의 보안을 강화하기 위한 권장 접근 방식이나 플러그인이 있습니까?
- 이 문제에 대해 이전에 논의된 바가 있습니까? 공식적인 수정이 이루어지기 전까지 사용 가능한 우회 방법이 있습니까?
이 중요한 보안 문제에 대한 관심에 감사드립니다!
Moin
2
안녕하세요 @Evie_Tao
보안 관련 문제를 많이 보고하고 계시네요. GitHub 저장소에 설명되어 있듯이 HackerOne에 보고해 보셨나요?
Overview · discourse/discourse · GitHub
관리자에게 정보를 공개하는 것은 문제가 되지 않는다고 봅니다. 하지만 불필요하게 노출되는 것을 방지하기 위해 민감한 항목으로 표시되어야 합니다. google_oauth2_client_secret과 같은 경우처럼요.
이것은 간단한 수정 사항입니다:
비밀성과 편의성 사이의 트레이드오프가 있습니다. UI에서 시크릿을 마스킹 해제하는 것을 허용하지 않으면, 관리자도 데이터베이스에서 쉽게 읽을 수 있는 다른 방법이 있으므로 접근 불가능하다는 착각만 줄 뿐입니다.
그러나 모든 시크릿(사실상 모든 사이트 설정)은 환경 변수를 통해 지정할 수 있으며, 이렇게 하면 관리자 UI에 표시되지 않습니다.
(@pmusaraj, 맞나요?)