보안개구리
[게시판 실습] - 정보 누출 (1) 로그인 시도 시 계정 존재 유무 확인 가능 본문
[설 명]
웹 사이트에 중요 정보(개인 정보, 계정 정보, 금융 정보 등)가 노출되거나 에러 발생 시 과도한 정보 (애플리케이션 정보, DB 정보, 웹 서버 구성 정보, 개발 과정의 코멘트 등)가 노출될 경우 공격자들의 2차 공격을 위한 정보로 활용될 수 있어, 웹 사이트에 노출되는 중요 정보는 마스킹을 적용하여야 하며 발생 가능한 에러에 대해 최소한의 정보 또는 사전에 준비된 메시지만 출력하도록 해야 한다
[점검 내용]
웹 서비스 시 불필요한 정보가 노출되는지 여부
[점검 기준]
웹 사이트에 중요정보가 노출되거나, 에러 발생 시 과도한 정보가 노출되는 경우 취약
[대응 방법]
* 사용자가 중요 정보 입력 시 마스킹 처리를 하여 노출 방지
* 개인정보의 조회, 출력 시 일부 정보에 마스킹을 적용
* 웹 페이지 운영 시 불필요한 주석은 전부 제거
* 중요정보를 HTML이 아닌 서버단으로 이동
* 로그인 실패 시 반환되는 에러메시지는 특정 ID 가입 여부를 식별할 수 없도록 구현
* 웹에서 발생하는 모든 에러에 대하여 통합 에러페이지로 Redirect 되도록 설정
[진단 과정]
1) 존재하지 않는 아이디 로그인 시도 시 '존재하지 않는 아이디입니다' 라는 메시지를 통해 해당 아이디는 존재하지 않는다는 사실을 확인할 수 있습니다.
2) 존재하는 아이디로 로그인 시 잘못된 패스워드를 입력하면 '비밀번호가 틀립니다'라는 메시지를 통해 해당 아이디가 존재함을 확인할 수 있습니다.
3) 로그인 시 반환되는 응답값(응답메시지)을 통해 계정의 존재 유무가 노출되는 것은 보안상으로 취약합니다. 소스코드 확인 시 아이디가 존재했을 때 메시지와 패스워드가 불일치 시 출력되는 메시지가 각각 존재함을 확인하였습니다. 계정의 존재유무를 알 수 없도록 코드를 수정하겠습니다.
4) 기존 소스코드를 수정하여 로그인 실패시 메시지는 '계정 정보가 일치하지 않습니다'로 통일하였습니다. 1,2번의 과정을 다시 한 결과 두 응답 메시지가 모두 동일함을 확인하였습니다.
'웹 진단 > 게시판 실습' 카테고리의 다른 글
[게시판 실습] - XSS (1) Reflected XSS 공격 취약 (0) | 2024.06.05 |
---|---|
[게시판 실습] - SQL Injection (1) 로그인 시 로그인 검증 우회 (0) | 2024.06.03 |
[게시판 실습] - 약한 문자열 강도 (2) 로그인 실패 시 로그인 제한 결여 (0) | 2024.05.30 |
[게시판 실습] - 약한 문자열 강도 (1) 회원가입 시 패스워드 복잡도 미흡 (0) | 2024.05.29 |
[게시판 실습] - 게시판 소개 (0) | 2024.05.27 |