Skip to content
Productivity
Command

/security-guard

내 코드에 보안 구멍이 없는지 자동으로 점검해줘요.

BOOST
From plugin
fireauto
14017 skills6 agents17 commands1 MCP
Install
> /plugin marketplace add imgompanda/fireauto
> /plugin install fireauto@imgompanda

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/security-guard

Context preview

What this command does when you run it.

내 코드에 보안 구멍이 없는지 자동으로 점검해줘요.

Command definition

security-guard.md
description: "내 코드에 보안 구멍이 없는지 자동으로 점검해줘요."
allowed-tools:
  - Read
  - Glob
  - Grep
  - Bash
  - Write
user-invocable: true

/fireauto-secure - 보안 종합점검

코드베이스의 보안 취약점을 8개 카테고리로 종합 감사합니다. 실제 SaaS 프로젝트(pikome, ditfinder 등)에서 발견된 18개 취약점 패턴을 기반으로 설계되었습니다.

---

실행 절차

Step 1: 프로젝트 구조 파악

프로젝트 루트를 확인하고 기술 스택을 파악합니다.

- package.json 읽기 (프레임워크, 의존성 확인)
- 디렉토리 구조 스캔 (src/, app/, api/, pages/, lib/, utils/)
- .env 관련 파일 목록 확인
- next.config.*, middleware.* 파일 확인

Step 2: 8개 카테고리 보안 감사

각 카테고리별로 순차적으로 점검합니다. 발견된 모든 취약점을 수집합니다.

---

카테고리 1: 환경변수/시크릿 노출

**점검 항목:**

  • `.env`, `.env.local`, `.env.production` 파일이 `.gitignore`에 포함되어 있는지 확인
  • 소스코드 내 하드코딩된 API 키, 시크릿, 토큰 검색
  • `NEXT_PUBLIC_` 접두사로 노출되면 안 되는 시크릿 확인
  • Supabase `service_role` 키가 클라이언트 코드에 노출되었는지 검색

**검색 패턴:**

Grep: "sk-", "sk_live", "sk_test" (API 키)
Grep: "password", "secret", "token" + "=" 또는 ":" (하드코딩)
Grep: "NEXT_PUBLIC_SUPABASE_SERVICE" (서비스 키 노출)
Grep: "supabaseAdmin", "createClient.*service_role" (admin 클라이언트 위치)
Glob: "**/.env*" (환경변수 파일)

**심각도:** CRITICAL

---

카테고리 2: 인증/인가 점검

**점검 항목:**

  • API 라우트(`app/api/`, `pages/api/`)에서 세션/인증 체크 누락 탐지
  • admin 전용 라우트에서 권한 검증 여부
  • Supabase admin 클라이언트(서비스롤)가 API 라우트 외부에서 사용되는지 확인
  • RLS(Row Level Security) 우회 가능성: admin 클라이언트로 직접 DB 조작
  • SECURITY DEFINER 함수에 입력값 검증이 있는지 확인
  • middleware.ts/js의 보호 범위(matcher 패턴) 확인
  • 인증 없이 접근 가능한 민감한 엔드포인트 탐지

**검색 패턴:**

Glob: "**/api/**/route.ts", "**/api/**/route.js"
Grep: "getSession", "getUser", "auth()", "getServerSession" (인증 함수)
Grep: "supabaseAdmin", "createServiceRoleClient" (admin 클라이언트)
Grep: "SECURITY DEFINER" (SQL 함수)
Read: middleware.ts (matcher 패턴 확인)

**심각도:** CRITICAL

---

카테고리 3: Rate Limiting

**점검 항목:**

  • API 엔드포인트별 rate limit 적용 여부
  • AI 관련 엔드포인트(OpenAI, Anthropic 호출)에 rate limit 필수 확인
  • 비용 발생 엔드포인트(이메일 발송, 결제 처리)에 rate limit 확인
  • rate limit 라이브러리 사용 여부 (upstash/ratelimit, express-rate-limit 등)
  • 로그인/회원가입 엔드포인트의 브루트포스 방어

**검색 패턴:**

Grep: "ratelimit", "rateLimiter", "rate-limit", "RateLimit"
Grep: "openai", "anthropic", "claude", "gpt" (AI 호출 위치)
Grep: "resend", "sendEmail", "sendMail" (이메일 발송 위치)

**심각도:** HIGH

---

카테고리 4: 파일 업로드 보안

**점검 항목:**

  • 파일 업로드 엔드포인트 존재 여부
  • MIME 타입 서버사이드 검증 여부 (클라이언트만 검증하면 우회 가능)
  • 파일 크기 제한 설정 여부
  • 위험 파일 타입 차단 (.exe, .sh, .php, .svg+script)
  • 업로드된 파일명 살균(sanitize) 처리 여부

**검색 패턴:**

Grep: "upload", "formData", "multipart", "multer"
Grep: "content-type", "mimetype", "file.type"
Grep: "maxSize", "sizeLimit", "MAX_FILE_SIZE"

**심각도:** HIGH

---

카테고리 5: 스토리지 보안

**점검 항목:**

  • Supabase Storage 퍼블릭 버킷 설정 확인
  • 업로드 파일 경로에 UUID만 사용 시 URL 추측 가능성
  • 스토리지 정책(RLS) 설정 여부
  • 서명된 URL(signed URL) 사용 여부 확인
  • CDN 캐시를 통한 민감 파일 노출 가능성

**검색 패턴:**

Grep: "createBucket", "storage.from", "getPublicUrl"
Grep: "signedUrl", "createSignedUrl"
Grep: "public.*bucket", "bucket.*public"

**심각도:** MEDIUM ~ HIGH

---

카테고리 6: Prompt Injection

**점검 항목:**

  • AI 프롬프트에 사용자 입력이 직접 삽입되는지 확인
  • 시스템 프롬프트와 사용자 입력이 분리되어 있는지 확인
  • 프롬프트 템플릿에서 이스케이프 처리 여부
  • AI 응답이 코드 실행이나 DB 쿼리에 직접 사용되는지 확인

**검색 패턴:**

Grep: "system.*message", "role.*system" (시스템 프롬프트)
Grep: "content.*\${", "content.*\`" (템플릿 리터럴로 입력 삽입)
Grep: "chat.completions", "messages.create" (AI API 호출)

**심각도:** MEDIUM

---

카테고리 7: 정보 노출

**점검 항목:**

  • 에러 응답에 스택 트레이스, DB 쿼리, 내부 경로 노출 여부
  • Content-Security-Policy(CSP) 헤더 설정 여부
  • X-Frame-Options, X-Content-Type-Options 등 보안 헤더 확인
  • API 응답에 불필요한 내부 정보(userId, 이메일 등) 포함 여부
  • next.config에서 보안 헤더 설정 확인
  • 디버그 모드가 프로덕션에서 활성화되어 있는지 확인

**검색 패턴:**

Grep: "console.error", "console.log" (프로덕션 로깅)
Grep: "stack", "trace", "error.message" (에러 상세 노출)
Grep: "Content-Security-Policy", "CSP"
Read: next.config.* (headers 설정 확인)
Grep: "NODE_ENV.*development" (디버그 분기)

**심각도:** MEDIUM

---

카테고리 8: 의존성 취약점

**점검 항목:**

  • `npm audit` 실행하여 알려진 CVE 확인
  • 주요 패키지 버전이 최신인지 확인 (특히 보안 관련)
  • `package-lock.json` 또는 lock 파일 존재 여부
  • 미사용 의존성 확인

**실행:**

npm audit --json 2>/dev/null | head -100

**심각도:** LOW ~ HIGH (CVE에 따라 다름)

---

Step 3: 취약점 분류 및 심각도 판정

발견된 모든 취약점을 아래 기준으로 분류합니다:

| 심각도 | 기준 | 예시 | |--------|------|------| | **CRITICAL** | 즉시 조치 필요. 데이터 유출, 인증 우회, 시크릿 노출 | .env 커밋, 인증 없는 admin API, service_role 키 클라이언트 노출 | | **HIGH** | 빠른 조치 필요. 악용 시 서비스 장애 또는 비용 발생 | rate limit 없는 AI 엔드포인트, 파일 업로드 무검증, 퍼블릭 버킷 | | **MEDIUM** | 계획적 조치. 특정 조건에서 악용 가능 | prompt injection, 에러 정보 노출, CSP 미설정 | | **LOW** | 개선 권장. 보안 강화 목적 | 약한 웹훅 시크릿, 미사용 의존성, 보안 헤더 부재 |

---

Step 4: 보안 감사 리포트 생성

아래 형식으로 마크다운 리포트를 작성합니다.

# 보안 감사 리포트

**프로젝트:** [프로젝트명]
**점검일:** [날짜]
**점검 범위:** 8개 카테고리, [N]개 파일 분석

## 요약

| 심각도 | 발견 수 |
|--------|---------|
| CRITICAL | N |
| HIGH | N |
| MEDIUM | N |
| LOW | N |
| **총계** | **N** |

## 발견된 취약점

### [CRITICAL-1] 취약점 제목
- **심각도:** CRITICAL
- **카테고리:** [카테고리명]
- **위치:** `파일경로:라인번호`
- **설명:** 취약점 상세 설명
- **영향:** 악용 시 발생할 수 있는 피해
- **수정 방법:**
  ```typescript
  // 수정 전
  ...
  // 수정 후
  ...

(모든 취약점 반복)

우선순위 액션 아이템

심각도와 구현 난이도를 기반으로 정렬합니다:

| 순위 | 심각도 | 난이도 | 액션 | 예상 소요시간 | |------|--------|--------|------|---------------| | 1 | CRITICAL | 낮음 | .env를 .gitignore에 추가 | 5분 | | 2 | CRITICAL | 중간 | API 라우트에 인증 미들웨어 추가 | 30분 | | ... | ... | ... | ... | ... |

권장사항

(전반적인 보안 개선 방향)


리포트를 프로젝트 루트에 `SECURITY_AUDIT.md` 파일로 저장합니다.

---

## 사용 예시

/fireauto-secure


프로젝트 루트에서 실행하면 전체 코드베이스를 대상으로 보안 감사를 수행하고,
`SECURITY_AUDIT.md` 리포트를 생성합니다.
Read more
Ships withfireauto

Claude Code 자동화 플러그인 — SEO, 보안, 팀 에이전트, PRD, 레딧 리서치를 커맨드 하나로

Get the whole plugin

Other commands on fireauto.