JWT 서명 키가 코드에 포함됨
높음실행 검증 안 함
src/auth/auth.module.ts:18
토큰 서명 키가 코드에 직접 포함된 예시입니다. 실제 사용 중인 키가 유출됐다면 환경변수로 옮기는 것만으로는 부족하며, 키 교체와 기존 토큰 영향도 검토해야 합니다.
- 발견 규칙
- teum/hardcoded-secret
- 분류
- CWE-798
수정안 비교
예제 코드
발견 시점 코드
삭제, 기존 18행: JwtModule.register({삭제, 기존 19행: secret: 'DEMO_KEY_NOT_A_REAL_SECRET',삭제, 기존 20행: signOptions: { expiresIn: '15m' },유지, 기존 21행: });
수정 제안 · 예시
추가, 수정 18행: JwtModule.registerAsync({추가, 수정 19행: inject: [ConfigService],추가, 수정 20행: useFactory: (config: ConfigService) => ({추가, 수정 21행: secret: config.getOrThrow('JWT_SECRET'),추가, 수정 22행: signOptions: { expiresIn: '15m' },추가, 수정 23행: }),유지, 수정 24행: });
ConfigService 가져오기와 모듈 설정을 확인하세요. 기존 expiresIn은 유지했습니다. 키 교체는 배포 순서와 토큰 무효화 정책을 별도로 검토해야 합니다.
수정 후 확인할 것
직접 확인할 항목
- 실제 키 노출 여부와 교체 절차 확인
- 환경변수 누락 시 시작 실패와 기존 만료 시간 유지 확인
검토한 내용을 상태로 남기세요.
현재 처리 상태: 수정 중
샘플의 상태만 바뀌며 코드에는 적용되지 않아요. 위험 수용은 사유와 기한이 필요한 실제 작업 공간에서 기록해요. 재점검 관측 결과는 직접 변경하지 않아요.