TPI 웹보안 점검 리포트
소스코드 분석 결과 본 애플리케이션은 Node.js (Express) 백엔드와 React 프론트엔드로 구성된 SPA/REST API 단일 아키텍처 구조를 취하고 있습니다. PostgreSQL 및 Redis 메모리 DB가 결합되어 있으며, Docker 컨테이너를 기반으로 배포됩니다.
프론트엔드 (Frontend)
React 18.2.0, Vite, Tailwind CSS, Axios, React Router v6. localStorage에 인증 토큰 저장 구현됨.
백엔드 (Backend)
Node.js v18 LTS, Express.js framework, Sequelize ORM (혼용된 Raw Query 구문 존재), jsonwebtoken.
인증 및 데이터베이스
JWT (JSON Web Token) 기반 stateless 인증. PostgreSQL 14, Redis Cache, Multer 파일 업로드 레포지토리.
| 취약점 명칭 | 위험도 | 위치 (File & Line) | 설명 | 권장 조치사항 |
|---|
치명적 취약점 패치 및 자격증명 교체
1. SQL 인젝션 구문을 Sequelize Prepared Statement로 전체 교체.
2. 하드코딩된 JWT Secret Key 및 AWS API 키 즉시 재발급 후 환경변수(.env) 이관.
3. 파일 업로드 확장자 화이트리스트 검증 및 저장 경로 실행 권한 제거.
인증 구조 강화 및 IDOR 조치
1. 비밀번호 저장 알고리즘 MD5 → bcrypt (Cost Factor 12) 변경 및 재설정 유도.
2. IDOR 방지를 위한 사용자 객체 소유권 미들웨어 검증 적용.
3. XSS 방지를 위한 innerHTML 제거 및 DOMPurify 도입.
컨테이너 보안 및 CI/CD SAST 도입
1. Dockerfile 비권한 사용자(non-root) 실행 설정 및 보안 헤더(Helmet) 일괄 적용.
2. GitHub Actions CI 파이프라인 내 SonarQube / Trivy 정적 분석 도구 자동화.
본 TPI 웹 애플리케이션 보안 진단 결과, 소스코드 및 설정 관리 측면에서 Critical 등급 4건을 포함한 다수의 심각한 취약점이 발견되었습니다. 특히 소스코드 내부 비밀키 유출, 인증 없는 RAW SQL 쿼리 처리, 검증 없는 파일 업로드는 시스템 전체의 권한 탈취로 이어질 수 있는 심각한 상태입니다.
제공해 드린 우선순위 조치 로드맵에 따라 Phase 1의 치명적 항목을 즉시 조치할 것을 강력히 권고하며, 향후 개발 주기(SDLC) 내에 보안 코드 리뷰 및 정적 코드 분석 도구(SAST)를 연동하여 지속적인 보안성을 확보하시기 바랍니다.