Python Security Scan について
Python Security Scan は、Python プロジェクト向けのセキュリティ監査スキルです。アプリ監査、コードレビュー、デプロイ前確認に使え、Flask、Django、FastAPI を検出して、フレームワーク別の確認や依存関係監査、複数形式のレポート生成を行います。
主な機能
- 01簡易・全体・対象別スキャン
- 02Flask、Django、FastAPI の検出
- 03インジェクション、デシリアライズ、認証の問題確認
- 04秘密情報のスキャンと依存関係の監査
- 05フレームワーク固有リスクの分析
- 06SARIF、JSON、JUnit XML の生成
活用シーン
- 01Python アプリの脆弱性レビュー
- 02デプロイ前のフレームワーク設定と認証の確認
- 03依存関係の脆弱性や認証情報の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sugarforever/ 01coder-agent-skills --skill python-security-scanインストール後、Claude Code で/python-security-scanを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/report-template.mdreferences/deserialization.mddjango-security.mdfastapi-security.mdflask-security.mdinjection-patterns.mdowasp-top-10.mdpython-vulnerabilities.mdscripts/dependency-audit.shpattern-scanner.pysecret-scanner.py詳細
Python Security Scan Skill
このスキルは、OWASP ガイドライン、Python セキュリティのベストプラクティス、フレームワーク固有の脆弱性に基づいて、Python プロジェクトの包括的なセキュリティスキャンを実行します。
このスキルを使用するタイミング
- Python アプリケーションのセキュリティ監査
- セキュリティ脆弱性に関するコードレビュー
- デプロイ前のセキュリティチェック
- 依存関係の脆弱性評価
- ハードコードされたシークレットや認証情報の検出
- フレームワーク固有のセキュリティレビュー(Flask、Django、FastAPI)
対応フレームワーク
このスキルは、以下のフレームワークを自動的に検出し、フレームワーク固有のチェックを適用します。
- Flask - テンプレートインジェクション、セッションセキュリティ、CORS、拡張機能
- Django - ORM インジェクション、CSRF、テンプレートセキュリティ、設定
- FastAPI - 依存性注入、Pydantic バリデーション、OAuth2
- Python 全般 - すべてのプロジェクトに適用されるコア言語の脆弱性
スキャンの種類
1. クイックスキャン
重大な脆弱性に絞った高速スキャンです。
- ハードコードされたシークレット、API キー、認証情報
- 危険な関数の使用(
eval、exec、pickle.loads) subprocess、os.systemを介したコマンドインジェクション- SQL インジェクションのパターン
- 既知の脆弱な依存関係
2. フルスキャン
以下を対象とする包括的なセキュリティ評価です。
- OWASP Top 10:2025 の全カテゴリー
- Python 固有の脆弱性
- フレームワーク固有のセキュリティ問題
- インジェクション脆弱性(SQL、NoSQL、コマンド、LDAP)
- 安全でないデシリアライゼーション
- 認証と認可の不備
- 暗号化の不備
- セキュリティ設定の不備
- 依存関係の監査(CVE チェック)
- 環境変数やシークレットの漏えい
3. 対象を絞ったスキャン
特定の脆弱性カテゴリーに焦点を当てます。
--injection- SQL/NoSQL/コマンド/LDAP インジェクション--deserialization- Pickle、YAML、JSON のデシリアライゼーション--auth- 認証/認可の問題--secrets- ハードコードされた認証情報--deps- 依存関係の脆弱性--crypto- 暗号化の問題--flask- Flask 固有の脆弱性--django- Django 固有の脆弱性--fastapi- FastAPI 固有の脆弱性
スキャン手順
ステップ 1:プロジェクトの検出
- プロジェクトの種類とフレームワークを特定します。
requirements.txt、Pipfile、pyproject.toml、setup.pyを確認します- Flask(
from flask import)、Django(django.conf)、FastAPI(from fastapi import)を検出します
- 設定ファイルを特定します
- コードベースの構造を把握します
ステップ 2:フレームワークの検出
# Detection patterns
Flask: "from flask import", "Flask(__name__)"
Django: "django.conf.settings", "INSTALLED_APPS", "manage.py"
FastAPI: "from fastapi import", "FastAPI()"
ステップ 3:依存関係の監査
依存関係の監査スクリプトを実行します。
./scripts/dependency-audit.sh /path/to/project
または、手動で実行します。
pip-audit
# or
safety check
ステップ 4:シークレットのスキャン
ハードコードされたシークレットをスキャンします。
python scripts/secret-scanner.py /path/to/project
重要:環境ファイルの取り扱い
- デフォルトでは、実際の
.envファイル(.env、.env.local、.env.productionなど)はスキップされます - これらのファイルには実際のシークレットが含まれているため、バージョン管理に含めないでください
- ドキュメントとしての品質を分析する対象は、
.env.exampleと.env.templateファイルのみです --include-env-filesフラグは、ユーザーから明示的に依頼された場合にのみ使用してください
スキャナーは以下を実行します。
- ソースコードをスキャンして、ハードコードされたシークレットを検出します
.env.exampleテンプレートを分析し、以下を確認します。- どの機密変数が記載されているか
- 変数に説明(コメント)があるか
- プレースホルダーの値が実際のシークレットのように見えるか
- 不足している一般的な変数(SECRET_KEY、DATABASE_URL など)の提案
ステップ 5:パターン分析
コードベース内の各ファイルについて、以下のパターンを照合します。
references/python-vulnerabilities.md- Python コアの問題references/injection-patterns.md- インジェクションの欠陥references/deserialization.md- 安全でないデシリアライゼーションreferences/flask-security.md- Flask の脆弱性references/django-security.md- Django の脆弱性references/fastapi-security.md- FastAPI の脆弱性
ステップ 6:レポートの生成
以下を使用してセキュリティレポートを生成します。
assets/report-template.md- レポートの構成
重大度の分類
| 重大度 | 説明 | 必要な対応 |
|---|---|---|
| CRITICAL | 深刻な影響を及ぼす、悪用可能な脆弱性 | 直ちに修正が必要です |
| HIGH | 重大なセキュリティリスク | デプロイ前に修正してください |
| MEDIUM | セキュリティ上の問題の可能性 | 次回のリリースで修正してください |
| LOW | 軽微なセキュリティ上の懸念 | 修正を検討してください |
| INFO | セキュリティのベストプラクティスに関する提案 | 任意の改善です |
スキャン対象の主なファイル
常に確認
**/*.py- すべての Python ソースファイルrequirements.txt、Pipfile、pyproject.toml- 依存関係setup.py、setup.cfg- パッケージ設定config.py、settings.py- 設定ファイル**/secrets*、**/credentials*- 明らかなシークレットの保存場所
環境ファイル
.env.example、.env.template- テンプレートの分析のためにスキャン.env、.env.local、.env.production- デフォルトではスキップ(実際のシークレットが含まれているため)
注記: 実際の .env ファイルは、バージョン管理にコミットしないでください。スキャナーは .env.example テンプレートを分析し、必要な変数が適切に文書化されていることを確認します。
優先度の高い場所
app.py、main.py、wsgi.py- エントリーポイント**/views.py、**/routes.py- リクエストハンドラー**/api/**/*.py- API エンドポイント**/auth*、**/login*- 認証コード**/models.py- データベースモデル**/serializers.py- データのシリアライズ**/middleware.py- ミドルウェアコード
フレームワーク固有
Flask:
app.py、__init__.py- アプリケーションファクトリー**/blueprints/**- Blueprint のルートtemplates/**- Jinja2 テンプレート
Django:
settings.py、**/settings/*.py- Django の設定urls.py- URL 設定**/views.py- ビュー関数/クラス**/forms.py- フォーム定義templates/**- Django テンプレート
FastAPI:
main.py- アプリケーションのエントリーポイント**/routers/**- API ルーター**/dependencies.py- 依存性の注入**/schemas.py- Pydantic モデル
出力形式
検出結果は次の形式で報告してください。
[SEVERITY] Category: Description
File: path/to/file.py:lineNumber
Code: <relevant code snippet>
Risk: <explanation of the security risk>
Fix: <recommended remediation>
CI/CD との統合
このスキルは、次の形式と互換性のある出力を生成できます。
- GitHub Security Advisories
- GitHub Code Scanning 用 SARIF 形式
- カスタム統合用 JSON
- CI パイプライン用 JUnit XML
参考資料
必要に応じて、追加のコンテキストを読み込んでください。
references/owasp-top-10.md- OWASP Top 10:2025 クイックリファレンスreferences/python-vulnerabilities.md- Python 固有の脆弱性references/injection-patterns.md- インジェクション脆弱性のパターンreferences/deserialization.md- 安全でないデシリアライズのパターンreferences/flask-security.md- Flask セキュリティガイドreferences/django-security.md- Django セキュリティガイドreferences/fastapi-security.md- FastAPI セキュリティガイド