security-audit-codebase
정보
이 스킬은 코드베이스의 자동화된 보안 감사를 수행하여 노출된 비밀, 취약한 종속성, 주입 결함과 같은 일반적인 취약점을 탐지합니다. 배포 전, 주기적 검토 중 또는 규정 준수 감사를 준비할 때 사용하도록 설계되었습니다. 주요 기능으로는 프로젝트 전반에 걸친 OWASP Top 10 문제와 안전하지 않은 구성 설정 확인이 포함됩니다.
빠른 설치
Claude Code
추천npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/security-audit-codebaseClaude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요
문서
程式碼倉庫安全審計
對程式碼倉庫執行系統化安全審查以識別漏洞與已洩之秘密。
適用時機
- 發佈或部署項目前
- 既有項目之定期安全審查
- 新增認證、API 整合或用戶輸入處理後
- 將私有倉庫開源前
- 為安全合規審計作準備
輸入
- 必要:待審計之程式碼倉庫
- 選擇性:特定關注領域(秘密、依賴、注入、認證)
- 選擇性:合規框架(OWASP、ISO 27001、SOC 2)
- 選擇性:先前審計發現以供比較
步驟
步驟一:掃描已洩之秘密
搜尋指示硬編碼秘密之模式:
# API keys and tokens
grep -rn "sk-\|ghp_\|gho_\|github_pat_\|hf_\|AKIA" --include="*.{md,js,ts,py,R,json,yml,yaml}" .
# Generic secret patterns
grep -rn "password\s*=\s*['\"]" --include="*.{js,ts,py,R,json}" .
grep -rn "api[_-]key\s*[=:]\s*['\"]" --include="*.{js,ts,py,R,json}" .
grep -rn "secret\s*[=:]\s*['\"]" --include="*.{js,ts,py,R,json}" .
# Connection strings
grep -rn "postgresql://\|mysql://\|mongodb://" .
# Private keys
grep -rn "BEGIN.*PRIVATE KEY" .
預期: 無真秘密——僅佔位如 YOUR_TOKEN_HERE 或 [email protected]。
失敗時: 若找到真秘密,立即移除之、輪換已洩之憑證、並以 git filter-branch 或 git-filter-repo 清理 git 歷史。任何已洩秘密皆視為已洩漏。
步驟二:檢查 .gitignore 覆蓋
驗證敏感文件已被排除:
# Check that these are git-ignored
git check-ignore .env .Renviron credentials.json node_modules/
# Look for tracked sensitive files
git ls-files | grep -i "\.env\|\.renviron\|credentials\|secret"
預期: 所有敏感文件(.env、.Renviron、credentials.json)列於 .gitignore 中,且 git ls-files 不返已追蹤之敏感文件。
失敗時: 若敏感文件已追蹤,執行 git rm --cached <file> 取消追蹤、加入 .gitignore 並提交。文件保留於磁碟但不再受版本控制。
步驟三:審計依賴
Node.js:
npm audit
npx audit-ci --moderate
Python:
pip-audit
safety check
R:
# Check for known vulnerabilities in packages
# No built-in tool, but verify package sources
renv::status()
預期: 依賴中無高或關鍵漏洞。中與低漏洞已記錄供審視。
失敗時: 若找到關鍵漏洞,以 npm audit fix 或 pip install --upgrade 立即更新受影響之套件。若更新引入破壞性變更,記錄漏洞並建立補救計劃。
步驟四:檢查注入漏洞
SQL 注入:
# Look for string concatenation in queries
grep -rn "paste.*SELECT\|paste.*INSERT\|paste.*UPDATE\|paste.*DELETE" --include="*.R" .
grep -rn "query.*\+.*\|query.*\$\{" --include="*.{js,ts}" .
所有資料庫查詢應用參數化查詢,非字串串接。
命令注入:
# Look for shell execution with user input
grep -rn "system\(.*paste\|exec(\|spawn(" --include="*.{R,js,ts,py}" .
XSS(跨站腳本):
# Look for unescaped user content in HTML
grep -rn "innerHTML\|dangerouslySetInnerHTML\|v-html" --include="*.{js,ts,jsx,tsx,vue}" .
預期: 無 SQL、命令或 XSS 注入向量。所有資料庫查詢用參數化語句、shell 命令避免用戶控制之輸入、HTML 輸出已正確跳脫。
失敗時: 若找到注入漏洞,將查詢中之字串串接代以參數化查詢、shell 執行前對用戶輸入消毒或跳脫、用框架安全之渲染方法而非 innerHTML 或 dangerouslySetInnerHTML。
步驟五:審視認證與授權
清單:
- 密碼以 bcrypt/argon2(非 MD5/SHA1)雜湊
- 會話 token 為隨機且足夠長
- 認證 token 有過期
- API 端點檢查授權
- CORS 配置嚴格
- 變更狀態之操作啟用 CSRF 保護
預期: 所有清單項皆通過:密碼用強雜湊、token 為隨機附過期、端點強制授權、CORS 嚴格、CSRF 保護啟用。
失敗時: 依嚴重度排修正之優先:弱密碼雜湊與缺授權為關鍵;CORS 與 CSRF 問題為高。記錄所有發現附其嚴重度等級。
步驟六:檢查配置安全
# Debug mode in production configs
grep -rn "debug\s*[=:]\s*[Tt]rue\|DEBUG\s*=\s*1" --include="*.{json,yml,yaml,toml,cfg}" .
# Permissive CORS
grep -rn "Access-Control-Allow-Origin.*\*\|cors.*origin.*\*" --include="*.{js,ts}" .
# HTTP instead of HTTPS
grep -rn "http://" --include="*.{js,ts,py,R}" . | grep -v "localhost\|127.0.0.1\|http://"
預期: 生產配置中除錯模式停用、生產中 CORS 不用萬用源、所有外部 URL 用 HTTPS。
失敗時: 若生產配置中除錯模式啟用,立即停用之。將萬用 CORS 源代以明確之允許域名。將 http:// URL 更新為 https://,於端點支援之處。
步驟七:記錄發現
建立審計報告:
# Security Audit Report
**Date**: YYYY-MM-DD
**Auditor**: [Name]
**Scope**: [Repository/Project]
**Status**: [PASS/FAIL/CONDITIONAL]
## Findings Summary
| Category | Status | Details |
|----------|--------|---------|
| Exposed secrets | PASS | No secrets found |
| .gitignore | PASS | Sensitive files excluded |
| Dependencies | WARN | 2 moderate vulnerabilities |
| Injection | PASS | Parameterized queries used |
| Auth/AuthZ | N/A | No authentication in scope |
| Configuration | PASS | Debug mode disabled |
## Detailed Findings
### Finding 1: [Title]
- **Severity**: Low / Medium / High / Critical
- **Location**: `path/to/file:line`
- **Description**: What was found
- **Recommendation**: How to fix
- **Status**: Open / Resolved
## Recommendations
1. Update dependencies to fix moderate vulnerabilities
2. [Additional recommendations]
預期: 完整 SECURITY_AUDIT_REPORT.md 已儲於項目根,發現按嚴重度分類,每附具體位置、描述與建議。
失敗時: 若發現過多難以個別記錄,按類別分組並優先處理關鍵/高發現。無論結果為何皆產生報告以建立基線。
驗證
- 源碼中無硬編碼之秘密
- .gitignore 涵蓋所有敏感文件
- 無高/關鍵之依賴漏洞
- 無注入漏洞
- 認證已正確實作(如適用)
- 審計報告完整且發現已處理
常見陷阱
- 僅檢查當前文件:git 歷史中之秘密仍洩漏。以
git log -p --all -S 'secret_pattern'檢查。 - 忽視開發依賴:開發依賴仍可能引入供應鏈風險。
.gitignore之假安全感:.gitignore僅阻止未來追蹤。已提交之文件需git rm --cached。- 忽略配置文件:
docker-compose.yml、CI 配置與部署腳本常含秘密。 - 未輪換已洩之憑證:找到並移除秘密不夠。憑證須撤銷並重新生成。
相關技能
configure-git-repository- 適當之 .gitignore 設置write-claude-md- 記錄安全要求setup-gxp-r-project- 受監管環境之安全
GitHub 저장소
연관 스킬
qmd
개발qmd는 BM25, 벡터 임베딩, 재순위화를 결합한 하이브리드 검색을 통해 로컬 파일을 색인화하고 검색할 수 있는 로컬 검색 및 색인화 CLI 도구입니다. 명령줄 사용과 Claude 통합을 위한 MCP(Model Context Protocol) 모드를 모두 지원합니다. 이 도구는 임베딩에 Ollama를 사용하고 색인을 로컬에 저장하여 터미널에서 직접 문서나 코드베이스를 검색하는 데 이상적입니다.
subagent-driven-development
개발이 스킬은 각 독립적인 작업마다 새로운 하위 에이전트를 배치하고 작업 사이에 코드 리뷰를 진행하여 구현 계획을 실행합니다. 이 리뷰 프로세스를 통해 품질 게이트를 유지하면서 빠른 반복 작업을 가능하게 합니다. 동일한 세션 내에서 대부분 독립적인 작업을 진행할 때 내장된 품질 검증과 함께 지속적인 진행을 보장하기 위해 사용하세요.
mcporter
개발mcporter 스킬은 개발자가 Claude에서 직접 Model Context Protocol(MCP) 서버를 관리하고 호출할 수 있도록 합니다. 이 스킬은 사용 가능한 서버를 나열하고, 인수를 사용해 해당 서버의 도구를 호출하며, 인증 및 데몬 생명주기를 처리하는 명령어를 제공합니다. 개발 워크플로우에서 MCP 서버 기능을 통합하고 테스트할 때 이 스킬을 사용하세요.
adk-deployment-specialist
개발이 스킬은 A2A 프로토콜을 사용하여 Vertex AI ADK 에이전트를 배포하고 오케스트레이션하며, AgentCard 검색, 작업 제출, 코드 실행 샌드박스 및 메모리 뱅크와 같은 지원 도구를 관리합니다. Python, Java 또는 Go 언어로 순차, 병렬 또는 루프 오케스트레이션 패턴을 갖춘 다중 에이전트 시스템 구축을 가능하게 합니다. Google Cloud에서 ADK 에이전트 배포 또는 에이전트 워크플로우 오케스트레이션을 요청받았을 때 사용하세요.
