설명
비밀번호, 토큰, 세션 식별자, API 키 같은 민감 정보를 로그나 표준 출력에 그대로 남기면 로그 접근 권한만으로도 계정 탈취, 세션 탈취, 내부 구성 정보 노출로 이어질 수 있습니다. 운영 환경에서는 stdout, stderr도 로그 수집기로 전달되는 경우가 많습니다.
잠재적 영향
- 로그 조회 권한을 가진 사용자가 인증 정보나 세션 값을 볼 수 있습니다.
- SIEM, 백업, 외부 로그 서비스로 민감 값이 복제될 수 있습니다.
- 사고 대응 과정에서 삭제하기 어려운 장기 보존 데이터가 생길 수 있습니다.
해결 방법
- 비밀번호, 토큰, Authorization 헤더 값은 로그에 남기지 않습니다.
- 필요한 경우 고정된 마스킹 문자열, 해시된 추적 ID, 또는 서버 측 참조값만 기록합니다.
- 공통 redaction helper나 logging filter를 사용해 민감 필드를 중앙에서 제거합니다.
- stdout/stderr 출력도 운영 로그로 취급하고 동일한 정책을 적용합니다.
예시
변경 전
python
import logging
def bad_parameterized_token(token):
logging.info("token=%s", token)
변경 후
python
import logging
def safe_masked_token(token):
logging.info("token=%s", "[REDACTED]")
설명:
- 변경 전: 토큰 값이 로그에 그대로 남습니다.
- 변경 후: 토큰 대신 고정된 마스킹 문자열을 기록합니다.