취약점 유형
상세내용
개요
- 매니저 서비스 이용약관 동의를 통해 권한을 상승시킨 후 전체 티켓목록 조회 및 타인의 티켓에 댓글 작성 가능
재현 과정
1. 관리자(crew)권한 상승 과정
-
웹 프레임워크 파일을 통해 매니저 서비스 이용약관 URL(/terms/agreement?type=MANAGER)을 확인 가능합니다.
-
이용약관 동의 disabled 해제 후 동의를 진행합니다.
-
동의 후에 계정에 관리자(crew) 정보가 입력되며, 정보 배열 안에 실제 정보가 없기 때문에 일부 관리 기능만 사용 가능합니다.
2. 관리자(crew)권한 상승 후 전체 티켓목록 조회
-
웹 프레임워크 파일을 통해 전체 티켓목록 조회 API(/api/tickets/crew) 주소를 확인할 수 있습니다.
-
관리자가 설정한 공개 여부와 관계없이 이벤트, 닫힌 티켓, 임시 저장된 티켓 포함한 모든 티켓의 정보를 확인할 수 있습니다. (제목, 공개여부, 보상여부, 작성자 등 노출)
(※ crew 권한 상승 후 조회가능합니다.)
3. 관리자(crew)권한 상승 후 타인이 작성한 티켓에 댓글 입력
-
웹 프레임워크 파일을 통해 티켓 댓글 입력 API(/api/tickets/:ticket.id/activities) 주소를 확인할 수 있습니다.
-
API의 파라미터가 틀렸을 경우 에러메시지가 노출되며, 이를 활용하여 필수 파라미터의 입력이 가능합니다.
(※ crew 권한 상승 후 조회가능합니다.)
-
현재 열려있는 프로그램의 티켓 중, 타인이 작성한 공개 티켓은 댓글입력이 가능합니다. (해당 테스트 댓글은 삭제 부탁드립니다.)
예상되는 취약점 발생 원인
1. 관리자 권한 상승
- 기업 사용자 또는 관리자만 이용 동의 후 crew 배열이 만들어져야 하지만 누락되어 일반 사용자도 입력된 것으로 예상하고 있습니다.
2. 전체 티켓목록 조회
- 해당 API가 crew 배열을 계정정보에 가지고 있는 것만으로 관리권한 확인을 통과하고 있는 것으로 예상하고 있습니다.
3. 타인이 작성한 티켓 댓글 입력
- 해당 API가 crew 배열을 계정정보에 가지고 있는 것만으로 관리권한 확인을 통과하고 있는 것으로 예상하고 있습니다.
- 개발단계에서 에러 표시에 대한 설정으로 에러 메시지가 자세히 노출됩니다.
- 닉네임 중복확인이 영문 대소문자를 구별하고 있습니다.
예상 결과 및 파급력
1. 전체 티켓목록 조회
- 타인이 임시저장한 티켓을 참고하여 참고한 타인보다 먼저 제보가 가능합니다.
- 이벤트 성격으로 진행한 티켓의 일부 개요를 확인 가능합니다.
- 그 외, 공개 원치 않는 티켓의 일부 개요를 확인 가능합니다.
2. 타인이 작성한 티켓 댓글 입력
- 티켓 작성자와 비슷한 아이디를 만들어 사칭이 가능합니다. (영문 닉네임이 중복 확인을 하지 않음)
- 일부 악의적인 사용자에 의한 댓글 도배로 가용성 문제가 발생할 수 있습니다.
패치 방법
1. 관리자 권한 상승
- 이용 동의 시, 계정 권한을 확인하여 crew배열이 입력되도록 조치합니다.
2. 전체 티켓목록 조회
- 실제 관리권한을 가진 사용자만이 조회할 수 있도록 조치합니다.
- 불필요한 API일 경우 삭제 조치합니다.
3. 타인이 작성한 티켓 댓글 입력
- 실제 관리권한을 가진 사용자만이 조회할 수 있도록 조치합니다.
- API의 파라미터 입력 값이 틀렸을 경우 에러메시지에 자세한 내용을 표시하지 않습니다.
- 닉네임 중복확인이 영문 대소문자를 구별하지 않게 조치합니다.
기타사항 및 레퍼런스
웹 프레임워크 기반의 웹 사이트는 js파일에 사용하는 API가 모두 노출되며, 이를 활용하여 모든 API 권한의 전수확인이 가능합니다.
- 이슈가 발생한 API가 입력되어있는 파일 : /_nuxt/a0f7583.js, /_nuxt/1f122d9.js
타임라인
3. 관리자(crew)권한 상승 후 타인이 작성한 티켓에 댓글 입력의 크루 기능은 관리자 기능이 아닌 팀을 이루어 제보를 할 수 있는 기능입니다.
크루인 상태에서 티켓을 읽을 시 권한 확인이 누락됐던 것으로 보이며, 취약점을 발견한 당시는 8월로 현재 댓글 입력 취약점은 발현되지 않는 것으로 보입니다.
따라서 타인이 제보한 티켓을 열람 가능한 취약점만 유효한 취약점으로 인정되어, 해당 취약점에 대한 패치가 진행될 예정입니다.
안녕하세요 제보자님 취약점이 패치되었습니다. 패치된 취약점을 확인해주세요!
또한 해당 취약점은 종료되지 않은 티켓의 정보를 볼 수 있는 취약점입니다. 하지만 티켓의 내용이나 프로그램 매니저와 대화했던 타임라인 등을 확인할 수는 없습니다.
위의 이유로 파급력을 고려하여 심각도를 높음
에서 보통
으로 변경될 예정입니다.
제보드렸던 이슈는 아래 세가지로 두가지 항목에 대해서 조치확인 되었습니다.
1. 관리자(crew)권한 상승 과정 : 미조치
2. 관리자(crew)권한 상승 후 전체 티켓목록 조회 : 조치완료
3. 관리자(crew)권한 상승 후 타인이 작성한 티켓에 댓글 입력 : 조치완료
1번은 사용자 정보에 crew배열이 삽입되는 이슈로 일부 검증하지 못한 API에서 관리자로 인식할 수 있으므로 조치권고 드립니다.
해당 이슈의 영향도가 낮다고 판단되어 위험수용으로 결정하셨는지 확인 부탁드리겠습니다.
감사합니다.
이전에 작성한 내용과 같이 크루는 관리자가 아닌 팀을 이루어 제보를 할 수 있는 기능입니다.
버그캠프의 해커가 정상적으로 이용할 수 있는 기능이기 때문에 권한 상승 취약점이 아닙니다.
따라서 아래와 같이 정리가 가능할 것 같습니다.
- 관리자 권한 상승 : crew 기능으로 취약점이 아님
- crew 등록 후 타인이 작성한 티켓 정보 조회 : 조치완료
- crew 등록 후 타인이 작성한 티켓에 댓글 입력 : 제보 이전에 해결된 문제
제보해주신 취약점을 확인하여 패치를 진행중입니다.