중요 기능에 대한 인증 누락으로 인한 계정 탈취

Writer what_web Program 버그캠프 (Bugcamp)

WEB Not applicable None No Reward Created: Aug 20, 2022 (2 months ago) Last Updated: Aug 22, 2022 (a month ago)

Weakness

Missing Critical Step in Authentication / CWE-304

Description

보고서 요약
버그캠프 웹 응용 프로그램은 이메일 변경 시 현재 비밀번호를 묻는 방식으로 합법적인 사용자인지 확인하지 않습니다. 따라서 이메일 변경 기능은 현재 비밀번호가 필요하지 않으므로 악의적인 사용자는 다른 사용자의 비밀번호를 몰라도 이메일 변경이 가능합니다. 결과적으로 bugcamp 의 추가 보안 계층(예: 암호 프롬프트)을 무력화하고 사용자가 버그캠프 계정에 다시 액세스하지 못하도록 계정의 이메일을 변경하여 소유권을 차단할 수 있습니다.

보고서 설명:
계정의 이메일 변경은 보호해야 하는 웹 애플리케이션의 민감한 부분 중 하나이므로 이메일 변경 기능은 합법적인 사용자의 신뢰성을 검증해야 합니다. 따라서 Facebook, Google, HackerOne, Shopify, Yahoo, Microsoft 등과 같은 대부분의 웹 사이트는 이메일 변경 시 어떤식으로든 합법적인 사용자의 진위 여부를 확인하기 위해 현재 비밀번호를 묻습니다. 단, bugcamp.io 웹사이트는 이메일 변경 시 인증이 필요하지 않으므로 현재 비밀번호를 입력하지 않고도 이메일 계정을 변경할 수 있습니다.

재현 단계

  1. https://bugcamp.io/sign-in 에서 로그인을 진행한 후 (https://bugcamp.io/settings/authentication) 페이지에서 계정의 이메일을 변경하십시오.
  2. 이메일 변경 시 현재 비밀번호가 필요하지 않으므로 현재 비밀번호를 입력하지 않고도 이메일 변경에 성공할 수 있습니다.

계정 탈취 시나리오

여기서 공격자는 부적절한 세션 관리, XSS, 인증 우회, HTTP Request Smuggling, CRLF, 웹 캐시 중독과 같은 기술을 사용하거나 사용자가 공유 컴퓨터(사무실, 도서관, 카페, 학교 컴퓨터)에 로그인하여 계정을 열어두거나 혹은 사회 공학 및 기타 방법을 사용하여 암호 없이 사용자 계정에 어떻게든 성공적으로 액세스했다고 가정합니다.

  • 공격자는 계정설정 페이지에서 피해자의 현재 이메일을 공격자의 이메일로 변경합니다.
  • 계정의 이메일이 변경되었지만 공격자는 변경한 피해자의 계정에 대한 현재 비밀번호를 알지 못합니다
  • 이 과정에서 공격자는 비밀번호 찾기 페이지를 통해 변경한 공격자의 이메일을 입력하고 비밀번호 재설정 링크를 발행합니다.
  • 발행된 재설정 링크를 사용하여 공격자는 비밀번호를 변경합니다.

또한 버그캠프는 계정의 이메일이 변경되어도 자신의 이메일이 변경되었음을 알리는 어떠한 인증 메일이 전송되지 않습니다. 따라서 피해자는 자신의 계정이 도용되었다는 사실을 모르고 자신의 계정에 로그인을 시도하여 비밀번호를 찾으려고 하지만 존재하지 않는 이메일로 계정에 액세스할 수 없습니다. 따라서 이 과정을 통해 공격자는 피해자의 계정을 완전히 탈취 할 수있습니다.

고치다
계정 이메일 변경 시 현재 비밀번호가 틀리면 오류 메시지를 표시하고, 현재 비밀번호가 맞을 경우 해당 계정의 이메일을 변경할 수 있도록 현재 비밀번호를 요청하는 보안 조치가 필요합니다. 따라서 계정의 이메일 주소를 변경할 때 현재 비밀번호를 묻는다면 이미 계정이 도용된 경우에도 2차 공격을 할 수 없으므로 계정이 완전히 도용되는 것을 방지할 수 있습니다.

타격
부적절한 인증은 공격의 문을 여는 주요 원인이 될 수 있습니다. 결과적으로 공격자는 ‘도용된’ 세션을 이용하고 올바른 암호로 자신을 인증할 필요 없이 사용자 계정의 이메일을 변경하여 계정을 완전히 제어할 수 있습니다. 결과적으로 버그캠프에 대한 추가 보안 계층(예: 암호 프롬프트)을 무력화하고 사용자가 버그캠프 계정에 다시 액세스하지 못하도록 차단합니다.

Timeline

what_web submitted ticket. August 20, 2022 (2 months ago)
Jerry MANAGER changed the status from 'Submitted' to 'Not applicable'. August 22, 2022 (a month ago)
Jerry MANAGER changed the disclosure from 'Closed' to 'Disclosed (Full)'. August 22, 2022 (a month ago)
Jerry MANAGER posted a comment. August 22, 2022 (a month ago)

버그캠프 버그바운티 프로그램에 참여해주셔서 감사합니다.

해당 제보는 공격자가 이미 victim 의 계정을 탈취한 것을 전제로 하는 내용의 제보이므로 무효로 평가되었습니다.
( “공격자에게 악용될 소지가 현격히 낮은 취약점” 및 “위협 가능성만을 제시하는 제보(e.g. 패스워드 복잡도 미흡, 서버 정보 노출 등)”)

Jerry MANAGER changed the severity from 'Medium' to 'None'. August 22, 2022 (a month ago)