불필요한 기능 활성화, 기본 계정·비밀번호 사용, 상세 에러 메시지 노출 등 잘못된 보안 설정으로 인한 취약점입니다.
// ❌ 취약: 경로 검증 없는 파일 다운로드
const filePath = path.join(__dirname,
'../public/uploads/', filename);
// ?file=../../app.js → 소스코드 노출
// ❌ 취약: 스택 트레이스 노출
res.status(500).render('error', {
stack: err.stack // 내부 경로, 코드 구조 노출
});
// ✅ 안전: 경로 정규화 후 허용 디렉토리 검증
const safePath = path.resolve(__dirname, '../public/uploads/', filename);
const uploadDir = path.resolve(__dirname, '../public/uploads/');
if (!safePath.startsWith(uploadDir)) {
return res.status(403).send('접근 금지');
}
// ✅ 안전: 프로덕션에서 에러 상세 숨김
if (process.env.NODE_ENV === 'production') {
res.status(500).render('error', { message: '서버 오류가 발생했습니다.' });
} else {
res.status(500).render('error', { message: err.message, stack: err.stack });
}