mcpField
P
Python Security Scan

Python Security Scan

github.com/sugarforeverセキュリティ139542 回インストール1 週間前に更新
リポジトリ

Python Security Scan について

Python Security Scan は、Python プロジェクト向けのセキュリティ監査スキルです。アプリ監査、コードレビュー、デプロイ前確認に使え、Flask、Django、FastAPI を検出して、フレームワーク別の確認や依存関係監査、複数形式のレポート生成を行います。

主な機能

  1. 01簡易・全体・対象別スキャン
  2. 02Flask、Django、FastAPI の検出
  3. 03インジェクション、デシリアライズ、認証の問題確認
  4. 04秘密情報のスキャンと依存関係の監査
  5. 05フレームワーク固有リスクの分析
  6. 06SARIF、JSON、JUnit XML の生成

活用シーン

  1. 01Python アプリの脆弱性レビュー
  2. 02デプロイ前のフレームワーク設定と認証の確認
  3. 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.md
references/
deserialization.md
django-security.md
fastapi-security.md
flask-security.md
injection-patterns.md
owasp-top-10.md
python-vulnerabilities.md
scripts/
dependency-audit.sh
pattern-scanner.py
secret-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:プロジェクトの検出
  1. プロジェクトの種類とフレームワークを特定します。
    • requirements.txt、Pipfile、pyproject.toml、setup.py を確認します
    • Flask(from flask import)、Django(django.conf)、FastAPI(from fastapi import)を検出します
  2. 設定ファイルを特定します
  3. コードベースの構造を把握します
ステップ 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 フラグは、ユーザーから明示的に依頼された場合にのみ使用してください

スキャナーは以下を実行します。

  1. ソースコードをスキャンして、ハードコードされたシークレットを検出します
  2. .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 セキュリティガイド

コメント