크라우니 스피어 스캔 MVP — 무료 공익 보안 진단
개요
한국 서비스 대상 Passive 보안 스캐너 MVP 완성. URL 입력 → TLS/헤더/쿠키/노출파일 자동 체크 → 등급 산출 → HTML/JSON 리포트 생성.
무엇을 했는지
패키지 구조
crowny-spear-scan/
├── bin/cli.js ← CLI (node bin/cli.js <도메인>)
├── checks/
│ ├── tls.js ← TLS 1.2+ / 암호군 / 인증서 만료
│ ├── headers.js ← HSTS / CSP / X-Frame / nosniff / Server노출
│ ├── cookies.js ← Secure / HttpOnly / SameSite
│ └── exposed.js ← .env/.git/config 등 15경로 프로브 + SPA폴백 감지
├── engine/
│ ├── report.js ← 점수/등급 엔진 + HTML 리포트 생성기
│ └── 판정.한선 ← 한선씨 판정 엔진 (독립 실행 가능)
├── reports/output/ ← 날짜별/도메인별 JSON+HTML 리포트
├── CLAUDE.md
└── package.json
crowny.org 자체 스캔 결과
게이트웨이 정상 시: 89점 B등급 (WARN 1: Server 헤더 노출)
- TLS 1.3 + AES-256-GCM-SHA384 ✓
- HSTS, CSP, X-Frame, nosniff 전부 설정 ✓
- 쿠키 없음 ✓
- 노출 파일: SPA 폴백 자동 감지 → 실제 노출 0건 ✓
SPA 폴백 감지 (핵심 기능)
SPA 앱이 모든 경로에 200 HTML 반환하면 노출파일 체크가 오탐(false positive) 발생.
preview 64바이트를 검사하여 <!DOCTYPE 또는 <html 시작이면 SPA 폴백으로 판정 → PASS 강등.
한선씨 판정 엔진
engine/판정.한선 — crownyc 독립 실행 가능. 90점 A등급 + 개선 가이드(항목별 구체적 조치사항) 출력 확인.
관련 파일
/Users/ef/crowny-spear-scan/(전체 패키지)- 리포트:
/Users/ef/crowny-spear-scan/reports/output/2026-04-16/crowny.org.html - 한선씨 엔진:
/Users/ef/crowny-spear-scan/engine/판정.한선
다음 단계
- 외부 도메인 배치 스캔 (한국 주요 서비스)
- notify/email.js — KISA 양식 자동 고지
- 게이트웨이에서 서빙 (spear.crowny.org/scan 라우트)
- 30일 재스캔 + 개선율 대시보드
- Server 헤더 노출 수정 (crowny-gateway)