설명
런타임 스택 트레이스나 panic 덤프를 HTTP 응답에 그대로 기록하면 내부 패키지 구조, 파일 경로, 런타임 문맥이 노출될 수 있습니다.
잠재적 영향
- 공격자가 내부 구조를 파악해 후속 공격을 정교화할 수 있습니다.
- 일부 런타임 값이나 경로 정보가 민감 정보로 노출될 수 있습니다.
해결 방법
- 상세 스택 트레이스는 보호된 서버 로그에만 기록하고 민감한 값을 제거하세요.
- 사용자 응답에는 일반화된 오류 메시지만 반환하세요.
- 로그 접근 권한과 보관 기간도 제한하세요.
예시
변경 전
go
w.Write(debug.Stack())
변경 후
go
log.Print(string(debug.Stack()))
http.Error(w, "internal server error", http.StatusInternalServerError)
설명:
- 변경 전: 런타임 스택 트레이스나 panic 덤프를 HTTP 응답에 그대로 기록하면 공격자가 내부 패키지 구조, 파일 경로, 프레임워크 구성, 일부 민감한 런타임 문맥을 수집할 수 있습니다.
- 변경 후: 상세 스택 트레이스는 서버 로그에만 기록하고 사용자 응답에는 일반화된 오류 메시지만 반환합니다.