🗄️ 전자금융 보안 모의해킹 · 불필요한 파일 노출 방지
Target: 웹 서버 웹루트
평가기준: 위험도 4 WEB-SER 불필요 파일 노출(040)
평가기준: 위험도 4 WEB-SER 불필요 파일 노출(040)
💡 쉽게 말하면
이사하고 남긴 예전 서류 박스를 현관 앞에 그대로 둔 셈입니다. 쓸모없는 사본은 버리거나 잠가 둬야 합니다.
이사하고 남긴 예전 서류 박스를 현관 앞에 그대로 둔 셈입니다. 쓸모없는 사본은 버리거나 잠가 둬야 합니다.
🔓 공격 시뮬레이션 (Red Team)
🛡️ 대응 방안 (Blue Team)
백업·버전관리 파일 요청🔒 Secured Channel
배포 과정에서 남은 백업/버전관리 파일(.bak, .zip, .git)이 웹루트에 노출되면 소스코드와 DB 접속정보·키가 그대로 유출됩니다.
⚡ 노출 파일 직접 다운로드
백업·.git 디렉터리를 추측해 직접 요청
백업·.git 디렉터리를 추측해 직접 요청
OFF
🖥️ 금융 시스템 처리 로그
[SYSTEM] Core Banking Channel ready.
[INFO] 거래 요청 대기 중...
⚖️ 컴플라이언스 위반 분석
공격 실행 후 분석 결과가 표시됩니다.
[심각] 전자금융 보안 기준 위반 감지
- 평가기준 [전자금융] 불필요 파일 노출(040)(위험도 4)
- 소스코드·인증정보 노출 방지 위반
- 전자금융감독규정 제15조 미흡
🛡️ 대응 코드/설정 실습
웹 서버는 백업·버전관리 파일에 대한 접근을 차단(deny)해야 합니다. 아래 설정을 보완하세요.
📚 금융보안원 평가기준 / 조치 가이드
1. 점검 항목
서버 설정 점검 > 불필요한 파일 노출 방지2. 위험 분석
- 백업·임시·버전관리 파일로 소스코드 유출
- DB 접속정보·비밀키 노출
3. 조치 방법
- 노출된 파일 제거
- 접근 차단(deny) 규칙 적용
- 배포 시 불필요 파일 제외
🏗️ 현대 금융 IT 환경에서의 변형
.dockerignore멀티스테이지.git 노출
어디가 달라졌나
컨테이너 빌드에서 COPY . . 한 줄이 .git·.env·백업 파일을 통째로 이미지에 담습니다.
이미지는 레지스트리에 올라가고, 웹루트에 그대로 서빙되면 /.git/config 로 전체 소스 복원이 가능합니다.
현대 스택에서의 조치
.dockerignore에.git·.env·*.bak·node_modules를 넣습니다..gitignore와는 별개 파일입니다.- 멀티스테이지 빌드로 최종 이미지에는 산출물만 남깁니다. 빌드 도구·소스가 따라가지 않습니다.
- 레지스트리에 올리기 전 이미지 내용을 스캔합니다(시크릿·불필요 파일).
# 멀티스테이지 — 최종 이미지에 소스가 없다 FROM gradle:8 AS build COPY . /src RUN gradle bootJar FROM eclipse-temurin:21-jre COPY --from=build /src/build/libs/app.jar /app.jar # 산출물만
놓치기 쉬운 곳 — 이미지 레이어는 지워도 남습니다.
COPY secret.txt 후 RUN rm secret.txt 해도 이전 레이어에 그대로 있어
docker history 로 추출됩니다. 처음부터 넣지 않는 것이 유일한 해법입니다.