Skip to main content

security-pipeline

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.

Jump to install

Source facts

Repository
sangrokjung/claude-forge
Last source activity
June 19, 2026 at 14:39
Detected SKILL.md language
Korean
Stars
841
Forks
178

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions ยท Read-only preview
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