← Back to list

auditing-python-security
by wdm0006
a set of claude skills for python development based on mcginniscommawill.com writings.
⭐ 0🍴 0📅 Jan 15, 2026
SKILL.md
name: auditing-python-security description: Audits Python libraries for security vulnerabilities using Bandit, pip-audit, Semgrep, and detect-secrets. Identifies SQL injection, command injection, hardcoded credentials, weak cryptography, and insecure deserialization. Use when reviewing library security, setting up security scanning in CI, or implementing secure coding patterns.
Python Security Auditing
Quick Start
# Static analysis
bandit -r src/ -ll # High severity only
pip-audit # Dependency vulnerabilities
detect-secrets scan > .secrets.baseline # Secrets detection
Tool Configuration
Bandit (.bandit):
exclude_dirs: [tests/, docs/, .venv/]
skips: [B101] # assert_used - OK in tests
pip-audit:
pip-audit -r requirements.txt # Scan requirements
pip-audit --fix # Auto-fix vulnerabilities
Common Vulnerabilities
| Issue | Bandit ID | Fix |
|---|---|---|
| SQL injection | B608 | Use parameterized queries |
| Command injection | B602 | subprocess without shell=True |
| Hardcoded secrets | B105, B106 | Environment variables |
| Weak crypto | B303 | Use SHA-256+, bcrypt for passwords |
| Pickle untrusted data | B301 | Use JSON instead |
| Path traversal | B108 | Validate with Path.resolve() |
Secure Patterns
# SQL - Parameterized query
conn.execute("SELECT * FROM users WHERE id = ?", (user_id,))
# Commands - No shell
subprocess.run(["cat", filename], check=True)
# Secrets - Environment
API_KEY = os.environ.get("API_KEY")
# Paths - Validate
base = Path("/data").resolve()
file_path = (base / filename).resolve()
if not file_path.is_relative_to(base):
raise ValueError("Invalid path")
CI Integration
# .github/workflows/security.yml
- run: bandit -r src/ -ll
- run: pip-audit
- run: detect-secrets scan --all-files
For detailed patterns, see:
- VULNERABILITIES.md - Full vulnerability examples
- CI_SECURITY.md - Complete CI workflow
Audit Checklist
Code:
- [ ] No SQL injection (parameterized queries)
- [ ] No command injection (no shell=True)
- [ ] No hardcoded secrets
- [ ] No weak crypto (MD5/SHA1)
- [ ] Input validation on external data
- [ ] Path traversal prevention
Dependencies:
- [ ] pip-audit clean
- [ ] Minimal dependencies
- [ ] From trusted sources
CI:
- [ ] Security scan on every PR
- [ ] Weekly dependency scan
Score
Total Score
60/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon