Security & Review Skills
CLI-JAW는 취약점 탐지, 모범 사례 적용, 위협 모델링, 피어 리뷰 간소화 등을 자연어 명령만으로 수행할 수 있는 보안 분석 및 코드 리뷰 스킬 모음을 제공합니다.
스킬 개요
| 스킬 | 설명 | 트리거 예시 |
|---|---|---|
static-analysis | 코드를 실행하지 않고 코드베이스 전반에 걸쳐 정적 분석을 수행하여 버그, 안티패턴, 잠재적 취약점을 탐지합니다 | "정적 분석 돌려줘" |
insecure-defaults | 설정 파일, 환경 변수, 코드에서 안전하지 않은 기본값(개방된 CORS, 프로덕션 디버그 모드, 취약한 암호화 설정)을 스캔합니다 | "보안 기본값 점검해줘" |
security-best-practices | 프로젝트를 OWASP Top 10 및 언어별 보안 가이드라인에 따라 감사하여 컴플라이언스 체크리스트를 생성합니다 | "보안 베스트 프랙티스 검사해줘" |
security-ownership-map | git 히스토리와 CODEOWNERS를 기반으로 보안에 중요한 경로(인증, 결제, 암호화, PII 처리)의 소유자 맵을 생성합니다 | "보안 소유권 맵 만들어줘" |
security-threat-model | 현재 프로젝트에 대해 STRIDE 기반 위협 모델을 구축하여 신뢰 경계, 데이터 흐름, 공격 표면을 식별합니다 | "위협 모델링 해줘" |
differential-review | PR이나 diff에서 변경된 라인만 리뷰하여 보안 퇴행 및 새로 도입된 위험에 집중합니다 | "변경된 부분만 보안 리뷰해줘" |
receiving-code-review | 수신된 코드 리뷰 코멘트를 처리하고, 심각도를 분류하며, 각 발견 사항에 대한 수정안을 제안합니다 | "코드 리뷰 피드백 정리해줘" |
requesting-code-review | 현재 변경 사항에 대해 컨텍스트, 위험 영역, 리뷰어 체크리스트가 포함된 구조화된 코드 리뷰 요청을 준비합니다 | "이 코드 리뷰 요청해줘" |
정적 분석
static-analysis 스킬은 AST 수준의 검사와 패턴 매칭을 결합하여 다중 언어 정적 분석을 수행합니다. SQL 인젝션 벡터, XSS 싱크, 경로 탐색 패턴, 안전하지 않은 역직렬화 등을 탐지합니다.
# Run static analysis on the entire project
보안 취약점 검사해줘
# Target a specific directory
src/api 디렉토리만 정적 분석해줘
# Focus on a specific vulnerability class
SQL 인젝션 취약점만 찾아줘
결과는 심각도(Critical, High, Medium, Low)별로 그룹화되며, 파일 위치, 라인 번호, 개선 제안이 함께 제공됩니다.
안전하지 않은 기본값
insecure-defaults 스킬은 프로젝트에서 눈에 띄지 않게 프로덕션에 배포되는 위험한 기본 설정을 점검합니다.
| 점검 항목 | 탐지 예시 |
|---|---|
| 인증 | 기본 비밀번호, 비활성화된 인증 미들웨어, 허용적인 세션 설정 |
| CORS | Access-Control-Allow-Origin: *, 지나치게 광범위한 허용 메서드 |
| 디버그 모드 | 프로덕션 설정의 DEBUG=true, 노출된 상세 오류 페이지 |
| 암호화 | 비밀번호 해싱에 MD5/SHA1 사용, 하드코딩된 키, 취약한 JWT 시크릿 |
| 네트워크 | HTTPS 대신 HTTP, 제한 없이 0.0.0.0에 바인딩, 열린 포트 |
| 의존성 | 알려진 취약점이 있는 패키지 버전, 고정되지 않은 의존성 |
# Scan for insecure defaults
기본값 보안 점검해줘
# Check only environment and config files
설정 파일 보안 검사해줘
보안 모범 사례
security-best-practices 스킬은 프로젝트를 확립된 보안 표준에 따라 감사하고 구조화된 컴플라이언스 보고서를 생성합니다.
# Full OWASP Top 10 audit
OWASP 기준으로 보안 점검해줘
# Language-specific best practices
Python 보안 베스트 프랙티스 체크해줘
# Generate a compliance report
보안 컴플라이언스 리포트 만들어줘
감사 항목은 다음을 포함합니다:
- 입력 검증 -- 인젝션 방지, 파라미터화된 쿼리, 입력 새니타이징
- 인증 및 세션 관리 -- 안전한 토큰 저장, 세션 만료, MFA 지원
- 접근 제어 -- 역할 기반 검사, 권한 상승 벡터
- 데이터 보호 -- 저장 및 전송 시 암호화, PII 처리, 로깅 위생
- 오류 처리 -- 오류 메시지를 통한 정보 유출, 스택 트레이스 노출
- 의존성 관리 -- 오래된 패키지, 알려진 CVE, 공급망 위험
보안 소유권 맵
security-ownership-map 스킬은 git 히스토리와 프로젝트 구조를 분석하여 보안에 중요한 코드의 소유권을 시각적으로 매핑합니다.
# Generate ownership map for security-critical paths
보안 소유권 맵 만들어줘
# Focus on authentication code ownership
인증 관련 코드 소유자 확인해줘
맵에서 식별하는 항목:
- 인증 모듈 -- 로그인 흐름, 토큰 생성, OAuth 통합
- 결제 처리 -- 빌링 로직, 결제 게이트웨이 통합
- 암호화 코드 -- 키 관리, 암호화/복호화 루틴
- PII 처리 -- 사용자 데이터 저장, 내보내기, 삭제 경로
- 인프라 설정 -- Dockerfile, CI/CD 파이프라인, 배포 스크립트
각 경로에는 주요 소유자(가장 최근 및 가장 빈번한 커미터), 리뷰 커버리지 백분율, 마지막 보안 중심 리뷰 이후 경과 시간이 주석으로 표시됩니다.
위협 모델링
security-threat-model 스킬은 프로젝트의 아키텍처, 데이터 흐름, 외부 통합을 분석하여 STRIDE 기반 위협 모델을 구축합니다.
# Generate a full threat model
위협 모델링 해줘
# Threat model for a specific feature
결제 기능 위협 모델 만들어줘
# Update an existing threat model after changes
위협 모델 업데이트해줘
| STRIDE 카테고리 | 탐지 대상 |
|---|---|
| Spoofing | 취약한 인증, 누락된 신원 확인, 토큰 위조 벡터 |
| Tampering | 전송 중 서명되지 않은 데이터, 누락된 무결성 검사, 변경 가능한 공유 상태 |
| Repudiation | 누락된 감사 로그, 서명되지 않은 트랜잭션, 부인 방지 통제 부재 |
| Information Disclosure | 상세한 오류 메시지, 로그 유출, 안전하지 않은 저장소, 디버그 엔드포인트 |
| Denial of Service | 누락된 요청 제한, 무한 쿼리, 자원 고갈 벡터 |
| Elevation of Privilege | 누락된 인가 검사, IDOR, 권한 상승 경로 |
차분 리뷰
differential-review 스킬은 PR이나 워킹 트리 diff에서 변경된 라인만 대상으로 보안 중심 리뷰를 수행하여, 병합 전에 퇴행을 포착합니다.
# Review the current diff for security issues
변경된 부분만 보안 리뷰해줘
# Review a specific PR
PR #42 보안 리뷰해줘
# Review staged changes before committing
커밋 전에 보안 검사해줘
차분 리뷰가 집중하는 항목:
- 새로운 취약점 도입 -- 안전하지 않은 함수 추가, 검증 제거
- 보안 퇴행 -- 이전에 강화된 코드가 변경으로 인해 약화
- 민감한 데이터 노출 -- diff에 포함된 API 키, 토큰, 자격 증명
- 권한 변경 -- 수정된 접근 제어 로직, 인증 없는 새 엔드포인트
- 의존성 변경 -- 알려진 취약점이 있는 새 패키지
코드 리뷰 워크플로
CLI-JAW는 코드 리뷰 과정의 양쪽 모두를 전용 스킬로 지원합니다.
코드 리뷰 수신
receiving-code-review 스킬은 수신된 리뷰 코멘트를 처리하고, 심각도별로 분류하며, 실행 가능한 수정 제안을 생성합니다.
# Process review feedback on the current PR
코드 리뷰 피드백 정리해줘
# Triage and prioritize review comments
리뷰 코멘트 심각도별로 정리해줘
# Auto-generate fixes for review findings
리뷰 피드백 기반으로 수정 코드 생성해줘
코드 리뷰 요청
requesting-code-review 스킬은 컨텍스트, 위험 주석, 리뷰어 체크리스트가 포함된 구조화된 리뷰 요청을 준비합니다.
# Create a review request for the current changes
이 코드 리뷰 요청해줘
# Generate a review request with security focus
보안 관점에서 리뷰 요청 만들어줘
# Add a reviewer checklist to an existing PR
PR에 리뷰 체크리스트 추가해줘
생성된 리뷰 요청에는 다음이 포함됩니다:
- 변경 요약 -- 무엇이 왜 변경되었는지, 비즈니스 컨텍스트 포함
- 위험 영역 -- 신중한 리뷰가 필요하다고 표시된 파일 및 함수
- 테스트 커버리지 -- 변경 사항을 커버하는 테스트, 식별된 공백
- 리뷰어 체크리스트 -- 리뷰어가 확인해야 할 구체적인 항목
- 관련 이슈 -- 관련 티켓이나 이전 논의 링크
스킬 조합
보안 스킬은 종합적인 분석을 위해 체이닝할 수 있습니다. CLI-JAW는 여러 스킬이 적용될 때 이를 자동으로 감지하고 오케스트레이션합니다.
# Full security audit (combines multiple skills)
전체 보안 감사 해줘
# Pre-release security check
릴리즈 전 보안 점검해줘
# Onboarding security review for a new project
이 프로젝트 보안 상태 전체적으로 파악해줘
| 결합 워크플로 | 호출되는 스킬 |
|---|---|
| 전체 보안 감사 | static-analysis + insecure-defaults + security-best-practices |
| 릴리즈 전 점검 | static-analysis + insecure-defaults + differential-review |
| 위협 평가 | security-threat-model + security-ownership-map |
| 리뷰 준비 | differential-review + requesting-code-review |
설정
보안 스킬은 .jaw/security.yaml의 프로젝트 수준 설정을 따릅니다:
# .jaw/security.yaml
severity_threshold: medium # Minimum severity to report (low|medium|high|critical)
ignore_paths:
- "vendor/**"
- "node_modules/**"
- "**/*.test.ts"
owasp_profile: web # web | api | mobile | desktop
custom_rules:
- id: no-eval
pattern: "eval("
severity: critical
message: "eval() is forbidden; use a safe parser instead"