[2026 주요정보통신기반시설] CI-05 정보누출(Information Disclosure)

웹 애플리케이션 내 중요 정보(개인정보, 금융 정보 등) 및 불필요한 정보(주석 내 디버깅 정보, 초기 샘플페이지, 백업파일 등)의 노출 여부 점검

정보누출(Information Disclosure)

가이드라인 원문

항목내용
항목코드CI-05
점검내용웹 애플리케이션 내 중요 정보(개인정보, 금융 정보 등) 및 불필요한 정보(주석 내 디버깅 정보, 초기 샘플페이지, 백업파일 등)의 노출 여부 점검
점검대상웹 애플리케이션 소스코드, 웹 애플리케이션서버
양호기준중요 정보가 마스킹 처리되어 있으며, 서비스 운영 및 서버 사이드의 구조를 파악할 수 있는 불필요한 정보가 노출되지 않는 경우
취약기준중요 정보가 평문으로 노출되거나, 서비스 운영 및 서버사이드의 구조를 파악할 수 있는 과도한 정보가 노출되는 경우
조치방법중요 정보를 마스킹 처리하고, 샘플 페이지나 불필요한 정보를 제공하는 요소를 삭제하여 과도한 정보 노출을 최소화함으로써 민감정보와 내부시스템구조의 노출을 방지함

상세 설명

1. 판단 기준

기본 판단 기준

  • 양호: 중요 정보가 마스킹 처리되어 있으며, 서비스 운영 및 서버 사이드의 구조를 파악할 수 있는 불필요한 정보가 노출되지 않는 경우
  • 취약: 중요 정보가 평문으로 노출되거나, 서비스 운영 및 서버 사이드의 구조를 파악할 수 있는 과도한 정보가 노출되는 경우

경계 케이스 (Edge Case) 처리 방법

  • 중요정보 노출(일회성 노출)이 반드시 필요한 서비스의 경우 본인인증절차 적용 시 예외처리
  • 예: 본인 인증 후 주민등록번호 전체 확인 (재인증 필요)

권장 설정값

  • 주민등록번호: 뒤에서부터 6자리 마스킹 (예: 901231-1******)
  • 연락처: 뒤 4자리 마스킹 (예: 010-1234-****)
  • 카드번호: 7번째~12번째 자리 마스킹 (예: 9430-82**-****-2393)

2. 점검 방법

Step 1: 중요 정보 평문 노출 점검

1
웹 애플리케이션 내 중요 정보(개인정보, 금융정보 등)의 평문 노출 여부 점검

점검 항목:

  • 주민등록번호
  • 비밀번호
  • 카드번호
  • 계좌번호
  • 연락처

Step 2: 불필요한 파일 노출 점검

1
서버나 WAS의 초기 샘플 페이지, 백업 파일 등 불필요한 정보의 노출 유무 점검

확인할 파일:

  • 초기 페이지: index.html, default.html, iisstart.html
  • 백업 파일: *.bak, *.backup, *.old, *.org
  • 설정 파일: web.config, .env, config.php
  • 로그 파일: *.log

Step 3: HTML 소스코드 점검

1
HTML 소스코드 내 중요 정보가 코드 및 주석을 통한 노출 여부 점검

3. 조치 방법

1. 개인정보 마스킹 처리

마스킹 기준 (개인정보보호위원회 가이드라인):

개인정보설명예시
성명성명 중 한 글자 이상홍*동
주민등록번호뒤에서부터 6자리901231-1******
여권번호뒤에서부터 4자리12345****
연락처뒤 4자리010-1234-****
카드번호7번째~12번째 자리9430-82**-****-2393
계좌번호뒤에서부터 5자리430-20-1*****

구현 예시:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// 주민등록번호 마스킹
public static String maskSSN(String ssn) {
    if (ssn == null || ssn.length() < 8) return ssn;
    return ssn.substring(0, 6) + "-" + "*".repeat(7);
}

// 연락처 마스킹
public static String maskPhoneNumber(String phone) {
    if (phone == null || phone.length() < 9) return phone;
    return phone.replaceAll("(\\d{3})-(\\d{4})-(\\d{4})", "$1-$2-****");
}

2. 불필요한 파일 삭제

삭제 권고 파일 확장자:

확장자설명
*.bak백업 파일
*.backup백업 파일
*.old이전 버전 파일
*.org원본 파일
*.zip압축 파일
*.sqlSQL 덤프 파일
*.log로그 파일
*.tmp임시 파일

3. 검색 엔진 인덱싱 차단

robots.txt 작성:

1
2
3
4
5
6
7
8
User-agent: *
Disallow: /admin/
Disallow: /backup/
Disallow: /config/
Disallow: /logs/
Disallow: *.sql
Disallow: *.bak
Disallow: *.log

META 태그 추가:

1
2
3
<head>
    <meta name="robots" content="noindex, nofollow">
</head>

4. 서버 설정 초기화

Apache/Nginx:

1
2
3
# 기본 페이지 삭제
rm -rf /var/www/html/index.html
rm -rf /usr/share/nginx/html/index.html

IIS:

  • C:\inetpub\wwwroot\iisstart.html 삭제
  • C:\inetpub\wwwroot\aspnet_client\ 삭제

5. 소스 코드 정리

제거해야 할 주석:

1
2
3
<!-- 삭제: <!-- TODO: remove before production -->
<!-- 삭제: <!-- DB: user/pass@host -->
<!-- 삭제: <!-- API Key: xxxxx -->

디버깅 코드 제거:

1
2
// 삭제: console.log('Debug:',敏感数据);
// 삭제: console.error(error);

4. 참고 자료

자주 노출되는 민감 정보:

  1. HTML 주석 내 API 키
  2. JavaScript 내 비밀번호
  3. 에러 메시지 내 경로 정보
  4. HTTP 응답 헤더 내 서버 정보
  5. robots.txt 내 관리자 페이지 경로
  6. Git 저장소 (.git 디렉터리)
  7. 환경 설정 파일 (.env, .config)

OWASP Top 10 - A01:2021 – Broken Access Control:

  • 과도한 정보 노출은 액세스 제어 실패의 일부
  • 최소 권한 원칙 적용 필요

5. 스크립트

  • 취약점 점검 스크립트
    • 이 스크립트는 KISA 주요정보통신기반시설 기술적 취약점 분석·평가 가이드라인(2026)을 준수하여 제작된 자동 점검 도구입니다. 복잡한 단일 파일 방식이 아닌 모듈화된 구조로 설계되어 유지보수가 쉽고 확장이 용이합니다.
    • 다양한 환경에서 테스트를 진행했으나, 혹시 점검 로직에 이슈가 발견되거나 개선이 필요한 경우 적극적인 제보를 부탁드립니다.
Hugo로 만듦
JimmyStack 테마 사용 중