- name
- security-pipeline
- description
- Use when security verification is needed - pre-commit security checks, vulnerability scanning, STRIDE threat analysis. Integrates with /handoff-verify --security and /commit-push-pr. CWE Top 25 based.
- version
- 2.0.0
## Overview
๋ณด์ ํ์ดํ๋ผ์ธ ์คํฌ์ ์ฝ๋ ๋ณ๊ฒฝ ์ ์๋์ผ๋ก CWE Top 25 ๊ธฐ๋ฐ ๋ณด์ ๊ฒ์ฆ์ ์ํํ๋ค.
`/handoff-verify --security`, `/commit-push-pr` ์คํ ์ ํตํฉ ๋์ํ๋ค.
๋ณด์ ์ฒดํฌ๋ฆฌ์คํธ ์ฐธ์กฐ: `~/.claude/skills/_reference/security-checklist.md`
effort:max๊ฐ ํญ์ ๊ฐ์ ์ ์ฉ๋๋ค. ๋ณด์ ๊ฒ์ฆ์ ์ถ์ฝํ์ง ์๋๋ค.
---
## Trigger Conditions
### ํ์ผ ํจํด ๊ธฐ๋ฐ ์๋ ํธ๋ฆฌ๊ฑฐ
๋ค์ ํจํด์ ํฌํจํ๋ ํ์ผ์ด ๋ณ๊ฒฝ๋๋ฉด ๋ณด์ ํ์ดํ๋ผ์ธ์ด ์๋์ผ๋ก ์คํ๋๋ค:
| ํจํด | ํธ๋ฆฌ๊ฑฐ ์์ค | ์ค๋ช
|
|------|-------------|------|
| `**/auth/**` | Full Scan | ์ธ์ฆ ๊ด๋ จ ๋ชจ๋ |
| `**/payment/**` | Full Scan | ๊ฒฐ์ ์ฒ๋ฆฌ ๋ชจ๋ |
| `**/api/**` | CWE Scan | API ์๋ํฌ์ธํธ |
| `**/middleware/**` | CWE Scan | ๋ฏธ๋ค์จ์ด |
| `**/session*` | CWE Scan | ์ธ์
๊ด๋ฆฌ |
| `**/token*` | CWE Scan | ํ ํฐ ์ฒ๋ฆฌ |
| `**/crypto*` | CWE Scan | ์ํธํ ๋ก์ง |
| `**/admin/**` | Full + STRIDE | ๊ด๋ฆฌ์ ๊ธฐ๋ฅ |
| `**/upload*` | CWE Scan | ํ์ผ ์
๋ก๋ |
| `**/.env*` | Credential Scan | ํ๊ฒฝ๋ณ์ ํ์ผ |
| `**/config/secret*` | Credential Scan | ์ํฌ๋ฆฟ ์ค์ |
### ์ปค๋ฐ ๊ธฐ๋ฐ ์๋ ํธ๋ฆฌ๊ฑฐ
`/commit-push-pr` ์คํ ์ staged ํ์ผ ๋ชฉ๋ก์์ ์ ํจํด์ด ๊ฐ์ง๋๋ฉด,
์ปค๋ฐ ์ ๋ณด์ ํ์ดํ๋ผ์ธ์ด ์๋์ผ๋ก ์คํ๋๋ค.
---
## CWE Scanning Rules
### Critical (์ปค๋ฐ ์ฐจ๋จ)
| CWE ID | Rule | Grep Pattern |
|--------|------|--------------|
| CWE-89 | SQL Injection | `query\(.*\$\{`, `query\(.*\+` |
| CWE-79 | XSS | `innerHTML`, `dangerouslySetInnerHTML`, `v-html` |
| CWE-78 | OS Command Injection | `exec\(.*\$\{`, `spawn\(.*req\.` |
| CWE-77 | Command Injection | Template string in shell command |
| CWE-798 | Hardcoded Credentials | `apiKey\s*=\s*['"]`, `secret\s*=\s*['"]` |
### High (๊ฒฝ๊ณ , ์ปค๋ฐ ํ์ฉ)
| CWE ID | Rule | Grep Pattern |
|--------|------|--------------|
| CWE-22 | Path Traversal | `\.\.\/` with user input |
| CWE-352 | CSRF | POST handler without csrf check |
| CWE-287 | Improper Auth | Route without auth middleware |
| CWE-862 | Missing Authz | Handler without role/permission check |
| CWE-502 | Unsafe Deserialization | `eval\(`, `new Function\(` |
| CWE-918 | SSRF | `fetch\(.*req\.`, `axios.*req\.` |
| CWE-434 | Unrestricted Upload | Upload without validation |
| CWE-269 | Privilege Escalation | Role change without verification |
### Medium (์ ๋ณด ์ ๊ณต)
| CWE ID | Rule | Grep Pattern |
|--------|------|--------------|
| CWE-200 | Info Disclosure | `console\.log.*password\|token\|secret` |
| CWE-20 | Input Validation | Endpoint without schema validation |
| CWE-327 | Broken Crypto | `md5\(`, `sha1\(`, `Math\.random\(\)` |
| CWE-276 | Incorrect Perms | `origin:\s*['"]?\*`, `0o?777` |
---
## Auto-Fix Rules
์๋ ์์ ์ ์ฌ์ฉ์ ์น์ธ ํ ์ ์ฉํ๋ค. ์ ๋ขฐ๋๊ฐ High์ธ ํญ๋ชฉ๋ง ์๋ ์์ ๋์์ด๋ค.
### Parameterized Queries (CWE-89)
```
Before: db.query(`SELECT * FROM users WHERE id = '${id}'`)
After: db.query('SELECT * FROM users WHERE id = $1', [id])
```
### Environment Variables (CWE-798)
```
Before: const apiKey = 'sk-proj-abc123'
After: const apiKey = process.env.API_KEY
+ .env.example์ API_KEY= ์ถ๊ฐ
```
### Safe DOM Manipulation (CWE-79)
```
Before: element.innerHTML = userInput
After: element.textContent = userInput
```
### Remove Sensitive Logs (CWE-200)
```
Before: console.log('Token:', token)
After: // (line removed)
```
### Secure Hash (CWE-327)
```
Before: const hash = md5(data)
After: const hash = crypto.createHash('sha256').update(data).digest('hex')
```
---
## Integration Points
### /handoff-verify (v6)
`/handoff-verify` ์ปค๋งจ๋์ ๊ฒ์ฆ ๋จ๊ณ์์ ๋ณด์ ๊ฒ์ฌ๊ฐ ํฌํจ๋๋ค.
verify-agent๊ฐ ๋ฏผ๊ฐ ํ์ผ ๋ณ๊ฒฝ์ ๊ฐ์งํ๋ฉด ์ด ์คํฌ์ ์๋ ํธ์ถํ๋ค.
### /commit-push-pr
์ปค๋ฐ ์ ์๋ ๋ณด์ ๊ฒ์ดํธ๋ก ๋์ํ๋ค:
- Critical ๋ฐ๊ฒฌ ์: ์ปค๋ฐ ์ฐจ๋จ (BLOCKED)
- High ๋ฐ๊ฒฌ ์: ๊ฒฝ๊ณ ํ์ ํ ์ฌ์ฉ์ ํ์ธ (WARN)
- Medium ์ดํ๋ง ์กด์ฌ: ํต๊ณผ (PASS)
### /security-review (ํตํฉ๋จ)
์ด์ security-review ์คํฌ์ OWASP ์ฒดํฌ๋ฆฌ์คํธ๋ `_reference/security-checklist.md`๋ก ์ ํ.
์ ์ฒด ๋ณด์ ๋ฆฌ๋ทฐ ์ ์ด ์คํฌ์ CWE Top 25 ๋งคํ + STRIDE + ์์กด์ฑ ๊ฒ์ฌ๊ฐ ์ํ๋๋ฉฐ,
์ฒดํฌ๋ฆฌ์คํธ ์ฐธ์กฐ ํ์ผ์ ํจ๊ป ๋ก๋ํ๋ค.
---
## effort:max Enforcement
์ด ์คํฌ์ ํญ์ effort:max๋ก ์คํ๋๋ค.
๋ณด์ ๊ฒ์ฆ์์ ๋ถ์ ๊น์ด๋ฅผ ์ค์ด๋ ๊ฒ์ ํ์ฉํ์ง ์๋๋ค.
์ ์ฉ ๋ฒ์:
- CWE ํจํด ๋งค์นญ ์ false positive ์ต์ํ๋ฅผ ์ํ ์ปจํ
์คํธ ๋ถ์
- STRIDE ๋ถ๋ฅ ์ ์ ์ฒด ๋ฐ์ดํฐ ํ๋ฆ ์ถ์
- ์๋ ์์ ์ ์ ์ ์ฌ์ด๋ ์ดํํธ ๊ฒ์ฆ
- ์์กด์ฑ ๊ฒ์ฌ ์ transitive dependency ํฌํจ
View on GitHub