점검 목록
실행하는 모든 점검을 이용 조건별로 나누었습니다. 소유자 인증이 필요 없는 점검은 모든 공개 웹사이트에 대해 매 스캔마다 실행됩니다. 소유자 점검은 탐색 요청을 보내므로 도메인을 인증한 뒤에만 실행됩니다. 유료 점검은 현재 개발 중인 고급 항목입니다.
실행하는 모든 점검을 이용 조건별로 나누었습니다. 소유자 인증이 필요 없는 점검은 모든 공개 웹사이트에 대해 매 스캔마다 실행됩니다. 소유자 점검은 탐색 요청을 보내므로 도메인을 인증한 뒤에만 실행됩니다. 유료 점검은 현재 개발 중인 고급 항목입니다.
6개 모듈, 22개 점검
| 심각도 | 점검 항목 | 모듈 | ID | 소유자 인증 불필요(18) | 웹사이트 소유자 전용(4) | 유료(5) |
|---|---|---|---|---|---|---|
| 심각 | 환경 변수 파일(.env)을 누구나 읽을 수 있음 누구나 이 변수들(보통 데이터베이스 URL과 API 키)을 내려받을 수 있습니다. 봇이 | 노출된 파일 | EXP-001 | 소유자 인증 불필요 | · | · |
| 심각 | Git 저장소가 노출됨
| 노출된 파일 | EXP-002 | 소유자 인증 불필요 | · | · |
| 심각 | 클라이언트 코드에 시크릿 키 노출 모든 방문자에게 전송되는 JavaScript에서 비공개 API 키가 발견되었습니다. 누구나 복사해 계정을 사용할 수 있습니다. | 클라이언트 측 시크릿 | SEC-001 | 소유자 인증 불필요 | · | · |
| 심각 | Supabase service_role 키 노출 service_role 키는 Row Level Security를 완전히 우회합니다. 이 키를 가진 사람은 모든 테이블을 읽고 수정할 수 있습니다. | 클라이언트 측 시크릿 | SEC-002 | 소유자 인증 불필요 | · | · |
| 심각 | TLS 인증서가 만료되었거나 곧 만료됨 인증서가 만료되면 브라우저가 전체 화면 보안 경고를 표시하고 대부분의 방문자가 떠납니다. | 전송 & TLS | TLS-002 | 소유자 인증 불필요 | · | · |
| 높음 | CORS가 모든 출처를 허용함 서버가 어떤 Origin이든 Access-Control-Allow-Origin에 그대로 반환합니다. 자격 증명까지 허용되면 어떤 웹사이트든 사용자 데이터를 읽을 수 있습니다. | HTTP 헤더 | COR-001 | 소유자 인증 불필요 | · | · |
| 높음 | HTTPS가 강제되지 않음 사이트가 HTTPS로 제공되지 않거나, HTTP가 HTTPS로 리디렉션되지 않습니다. 공용 Wi‑Fi에서 트래픽이 도청되거나 변조될 수 있습니다. | 전송 & TLS | TLS-001 | 소유자 인증 불필요 | · | · |
| 높음 | TLS 인증서를 신뢰할 수 없음 브라우저가 인증서를 거부합니다(호스트 이름 불일치, 자체 서명, 불완전한 체인). 방문자에게 보안 경고가 표시됩니다. | 전송 & TLS | TLS-003 | 소유자 인증 불필요 | · | · |
| 보통 | 쿠키에 보안 플래그 없음 Secure, HttpOnly, SameSite가 없는 쿠키는 HTTP로 탈취되거나, 삽입된 스크립트에 읽히거나, 교차 사이트 요청에 함께 전송될 수 있습니다. | HTTP 헤더 | CK-001 | 소유자 인증 불필요 | · | · |
| 보통 | SPF 레코드 없음 SPF가 없으면 수신 메일 서버가 어떤 서버가 내 도메인으로 메일을 보낼 수 있는지 알 수 없어 사칭이 쉬워집니다. | DNS & 이메일 | DNS-001 | 소유자 인증 불필요 | · | · |
| 보통 | DMARC가 없거나 적용되지 않음 적용된 DMARC 정책이 없으면 공격자가 내 도메인에서 보낸 것처럼 보이는 이메일을 보낼 수 있습니다. | DNS & 이메일 | DNS-002 | 소유자 인증 불필요 | · | · |
| 보통 | Content-Security-Policy가 없거나 약함 충분한 CSP가 없으면 삽입된 스크립트가 페이지와 사용자 세션에 완전히 접근할 수 있습니다. | HTTP 헤더 | HDR-001 | 소유자 인증 불필요 | · | · |
| 보통 | 클릭재킹 방어 없음 다른 사이트가 숨겨진 프레임에 페이지를 불러와 사용자가 버튼을 누르도록 속일 수 있습니다. | HTTP 헤더 | HDR-002 | 소유자 인증 불필요 | · | · |
| 보통 | HSTS가 없거나 기간이 너무 짧음 Strict-Transport-Security가 없으면 같은 네트워크의 공격자가 연결을 HTTP로 다운그레이드할 수 있습니다. | 전송 & TLS | TLS-005 | 소유자 인증 불필요 | · | · |
| 낮음 | CAA 레코드 없음 어떤 인증 기관이든 내 도메인의 인증서를 발급할 수 있습니다. CAA로 실제 사용하는 CA만 허용할 수 있습니다. | DNS & 이메일 | DNS-004 | 소유자 인증 불필요 | · | · |
| 낮음 | 기본 보안 헤더 없음 X-Content-Type-Options와 Referrer-Policy는 MIME 스니핑을 막고 전체 URL이 다른 사이트로 새는 것을 막는 간단한 기본 설정입니다. | HTTP 헤더 | HDR-003 | 소유자 인증 불필요 | · | · |
| 낮음 | 서버 또는 프레임워크 버전 노출 버전 정보는 공격자가 기술 스택을 알려진 취약점과 대조하는 데 도움이 됩니다. | HTTP 헤더 | HDR-004 | 소유자 인증 불필요 | · | · |
| 낮음 | 소스맵이 공개적으로 접근 가능
| 클라이언트 측 시크릿 | SEC-004 | 소유자 인증 불필요 | · | · |
| 심각 | 로그인 없이 읽을 수 있는 Supabase 테이블 사이트의 공개 anon 키로 이 테이블의 행을 읽을 수 있었습니다. Row Level Security가 꺼져 있거나 공개 읽기를 허용하는 정책이 있습니다. | 백엔드(Supabase / Firebase) | BAAS-002 | · | 웹사이트 소유자 전용 | · |
| 심각 | Firebase Realtime Database를 누구나 읽을 수 있음 데이터베이스 규칙이 인증 없는 읽기를 허용하여 누구나 데이터를 내려받을 수 있습니다. | 백엔드(Supabase / Firebase) | BAAS-004 | · | 웹사이트 소유자 전용 | · |
| 높음 | Supabase 스토리지 버킷 목록 조회 가능 공개 키만 있으면 누구나 이 버킷의 파일 목록을 볼 수 있어, 사용자 업로드 파일이 노출되는 경우가 많습니다. | 백엔드(Supabase / Firebase) | BAAS-003 | · | 웹사이트 소유자 전용 | · |
| 높음 | Firebase Storage 목록을 누구나 조회 가능 Storage 규칙이 인증 없이 파일 목록 조회를 허용합니다. | 백엔드(Supabase / Firebase) | BAAS-005 | · | 웹사이트 소유자 전용 | · |
| 심각 | 취약점 템플릿 전체 스캔 수천 개의 안전한 템플릿으로 잘못된 설정, 노출된 관리 패널, 기본 로그인 정보, 알려진 CVE를 점검합니다. 서비스 거부나 침투형 템플릿은 실행하지 않습니다. | 고급 스캔 | ACT-001 | · | · | 유료출시 예정 |
| 심각 | 유출된 키가 아직 유효한지 클라이언트 코드에서 발견된 키에 대해 무해한 읽기 전용 호출("나는 누구인가" 확인 등)로 유효 여부를 판단해, 어떤 키를 교체해야 하는지 정확히 알려 드립니다. | 고급 스캔 | SEC-007 | · | · | 유료출시 예정 |
| 높음 | 인증 없이 열린 API 엔드포인트 OpenAPI/Swagger 또는 GraphQL 스키마를 읽어 로그인 없이 데이터를 반환하는 엔드포인트를 찾습니다. | 고급 스캔 | ACT-003 | · | · | 유료출시 예정 |
| 높음 | 로그인 스캔 및 IDOR 제공하신 테스트 계정 두 개로, ID만 바꿔서 다른 사용자의 데이터를 읽거나 변경할 수 있는지 확인합니다. | 고급 스캔 | ACT-004 | · | · | 유료출시 예정 |
| 높음 | AI 비즈니스 로직 테스트 AI 에이전트가 가입, 결제, 쿠폰 같은 흐름을 따라가며 건너뛸 수 있는 단계, 음수 금액, AI 엔드포인트의 호출 제한 누락을 찾습니다. | 고급 스캔 | AI-001 | · | · | 유료출시 예정 |