설명
Spring Boot 오류 응답에 예외 메시지, 스택 트레이스, binding error, 내부 경로 같은 상세 속성이 포함되면 공격자가 애플리케이션 내부 구조와 입력 검증 실패 원인을 파악할 수 있습니다. 운영 환경에서는 오류 속성을 최소화해야 합니다.
잠재적 영향
- 클래스명, 경로, 쿼리, 내부 상태 노출
- 취약한 입력값 추측과 공격 자동화 지원
- 민감한 예외 메시지 노출
해결 방법
- 운영 설정에서 메시지·스택 트레이스·바인딩 오류·예외 타입의 공개를 제한하세요. Spring Boot 3.x에서는 아래
server.error.*속성을 사용합니다. Spring Boot 4.x에서는 대응하는spring.web.error.*속성을 확인하세요. - 커스텀 오류 응답은 일반화된 메시지와 추적 ID만 포함합니다.
- 필요한 상세 오류는 접근이 제한된 서버 로그에 기록하되, 비밀번호와 토큰 등은 제거하세요. 커스텀 오류 처리기가 설정을 무시하고 상세 정보를 반환하지 않는지도 확인하세요.
예시
Spring Boot 3.x 기본 오류 응답의 설정 예시입니다. 실제 오류 응답을 확인하고, 사용자 정의 응답도 같은 정보 최소화 원칙을 적용하세요.
변경 전
properties
server.error.include-message=always
server.error.include-stacktrace=always
변경 후
properties
server.error.include-message=never
server.error.include-stacktrace=never
server.error.include-binding-errors=never
server.error.include-exception=false
설명:
- 변경 전: 메시지와 스택 트레이스를 기본 오류 응답에 항상 포함합니다.
- 변경 후: 지정한 상세 속성을 기본 오류 응답에서 제외합니다. 이 설정만으로 별도의 컨트롤러가 반환하는 오류 내용까지 정리되지는 않습니다.