Python コードのセキュリティ脆弱性を検出・分析し、ベストプラクティスを提案する skill
Scanned 9/12/2026
Install to Claude Code
npx -y skills add aibot88/sec_skill_store --skill infogram-yoshida-aiko-book-app-project-book-app-project --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Infogram Yoshida Aiko Book App Project Book App Project?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-infogram-yoshida-aiko-book-app-project-book-app-pr)More formats (shields.io, HTML) on the badges page.
---
name: security-audit
description: Python コードのセキュリティ脆弱性を検出・分析し、ベストプラクティスを提案する skill
---
# Security Audit Skill
Python コードのセキュリティをレビューするときは、このチェックリストと分析パターンを使ってください。
## セキュリティ脆弱性チェックリスト
### 入力バリデーション
- [ ] すべてのユーザー入力が検証されているか
- [ ] SQL インジェクションのリスクがないか
- [ ] ファイルパストラバーサルのリスクがないか
- [ ] バッファオーバーフローのリスクがないか
- [ ] 型チェックが適切に行われているか
### 認証・認可
- [ ] パスワードが平文で保存されていないか
- [ ] パスワードが十分なハッシュ関数(bcrypt, argon2)を使用しているか
- [ ] JWT トークンの検証が行われているか
- [ ] セッション管理が適切か
- [ ] 権限チェックが実装されているか
### 暗号化・データ保護
- [ ] 機密データが暗号化されているか
- [ ] 通信が HTTPS/TLS で保護されているか
- [ ] キーの管理が安全か(環境変数、シークレット管理)
- [ ] ログに機密情報が含まれていないか
### エラーハンドリング
- [ ] エラーメッセージが詳細すぎないか(情報漏洩のリスク)
- [ ] 例外を適切にキャッチしているか(bare except なし)
- [ ] スタックトレースが公開されていないか
### 外部依存
- [ ] サードパーティライブラリが信頼できるか
- [ ] 依存関係が最新版か(セキュリティパッチが当たっているか)
- [ ] 不要な依存関係を削除しているか
### コード実行
- [ ] eval(), exec() を使用していないか
- [ ] pickle を信頼できないデータで使用していないか
- [ ] subprocess で shell=True を使用していないか
- [ ] 動的コード生成が安全か
### ファイルアクセス
- [ ] ファイルパーミッションが適切か
- [ ] ファイルの読み書き時に例外処理をしているか
- [ ] 一時ファイルが安全に作成・削除されているか
- [ ] 機密ファイルがバージョン管理に含まれていないか
### 環境設定
- [ ] API キーがハードコードされていないか
- [ ] Debug モードが本番環境で有効になっていないか
- [ ] デフォルト認証情報を使用していないか
## セキュリティ分析パターン
### パターン 1: 入力バリデーション関数の分析
```python
# チェックするコード
def validate_and_process_user_input(user_input: str) -> dict:
"""ユーザー入力を検証して処理する."""
# 分析ポイント:
# 1. 入力の型チェックがあるか
# 2. 長さ制限があるか
# 3. 許可される文字が制限されているか
# 4. 範囲チェックがあるか
# 5. エラーハンドリングが適切か
pass
```
### パターン 2: 認証・パスワード処理の分析
```python
# チェックするコード
def hash_password(password: str) -> str:
"""パスワードをハッシュ化する."""
# 分析ポイント:
# 1. ハッシュ関数は安全か (bcrypt, argon2, scrypt vs MD5, SHA1)
# 2. ソルトが使用されているか
# 3. イテレーション回数は十分か
# 4. メモリコストの設定は適切か
pass
```
### パターン 3: 外部データ処理の分析
```python
# チェックするコード
import pickle
def load_data(filename: str):
"""ファイルからデータを読み込む."""
# 分析ポイント:
# 1. pickle を信頼できないソースで使用していないか
# 2. json, yaml, xml は安全か
# 3. シリアライゼーション方式の安全性
pass
```
## 出力フォーマット
次の形式で結果をまとめてください。
```
# Security Audit: [filename]
## 総合リスク評価: [LOW / MEDIUM / HIGH / CRITICAL]
## 検出された脆弱性
### 脆弱性 1: [タイトル]
**重大度**: [LOW / MEDIUM / HIGH / CRITICAL]
**ファイル/行番号**: [location]
**説明**: [詳細説明]
**影響**: [セキュリティへの影響]
```python
# 問題のあるコード
problematic_code()
```
**修正提案**:
```python
# 修正後のコード
fixed_code()
```
---
### 脆弱性 2: [タイトル]
[同じフォーマット]
## セキュリティベストプラクティスの実装状況
- [ ] 入力バリデーション: [完全 / 部分的 / 未実装]
- [ ] 認証: [完全 / 部分的 / 未実装]
- [ ] 暗号化: [完全 / 部分的 / 未実装]
- [ ] エラーハンドリング: [完全 / 部分的 / 未実装]
- [ ] ログ記録: [完全 / 部分的 / 未実装]
## 改善の優先順位
### 緊急 (CRITICAL)
1. [脆弱性]
### 高 (HIGH)
1. [脆弱性]
### 中 (MEDIUM)
1. [脆弱性]
### 低 (LOW)
1. [脆弱性]
## 推奨する次のステップ
1. [提案1]
2. [提案2]
3. [提案3]
```
## チェックリスト別の分析方法
### 1. パスワードセキュリティ分析
パスワード処理関数を見つけたら、以下をチェック:
- ハッシュ関数の種類
- ソルトの存在と生成方法
- ストレッチング回数
- タイミング攻撃対策
### 2. 入力バリデーション分析
外部入力を受け取るすべての場所をチェック:
- 型チェック
- 長さチェック
- 文字種チェック
- 範囲チェック
### 3. 依存関係分析
`requirements.txt` を見つけたら、以下をチェック:
- パッケージのバージョン固定方法
- セキュリティアップデートの頻度
### 4. 設定・環境分析
`.env`, `config.py` などを見つけたら:
- ハードコードされた秘密情報
- デバッグモードの有効化
- デフォルト認証情報
## 参考リソース
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
- [Python セキュリティ ベストプラクティス](https://python.readthedocs.io/en/latest/library/security_warnings.html)
- [CWE - Common Weakness Enumeration](https://cwe.mitre.org/)
- [NIST Cybersecurity Framework](https://www.nist.gov/cyberframework)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!