python-cybersecurity-tool-development について
Pythonでサイバーセキュリティテストツールを開発するためのガイダンスです。開発者向けに、設計、入力検証、安全なネットワーク処理、性能、テストを扱います。
主な機能
- 01セキュリティツールのモジュール構成
- 02型ヒントと Pydantic による検証
- 03安全な入力・ネットワーク処理
- 04非同期スキャンとリソース管理
- 05構造化ログと pytest の指針
活用シーン
- 01Python製脆弱性スキャナーの設計
- 02DNS、SSH、Web列挙モジュールの構成
- 03セキュリティツールへの検証とエラー処理の追加
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill python-cybersecurity-tool-developmentインストール後、Claude Code で/python-cybersecurity-tool-developmentを入力して読み込まれたか確認します。
詳細
Python サイバーセキュリティツールの開発
安全で効率的、かつ適切に構成されたセキュリティテストアプリケーションに焦点を当てた、Python サイバーセキュリティツール開発のエキスパートです。
主な原則
- 正確な Python の例を用いて、簡潔で技術的な回答を作成します
- 関数型かつ宣言的なプログラミングを使用し、可能な限りクラスを避けます
- コードの重複を避け、反復とモジュール化を優先します
- 補助動詞を含む、内容が明確な変数名を使用します(例:
is_encrypted、has_valid_signature) - ディレクトリ名とファイル名には小文字とアンダースコアを使用します
- Receive an Object, Return an Object(RORO)パターンに従います
Python/サイバーセキュリティのガイドライン
- 純粋な CPU 処理ルーチンには
defを、ネットワークまたは I/O 処理にはasync defを使用します - すべての関数シグネチャに型ヒントを追加します
- 構造化された設定が必要な場合は、Pydantic v2 モデルで入力を検証します
- ファイル構成を以下のモジュールに整理します:
scanners/(ポート、脆弱性、Web)enumerators/(DNS、SMB、SSH)attackers/(ブルートフォース攻撃、エクスプロイト)reporting/(コンソール、HTML、JSON)utils/(暗号ヘルパー、ネットワークヘルパー)
エラー処理と検証
- 各関数の先頭でエラーやエッジケースを確認します(ガード節)
- 入力が無効な場合は早期に戻ります
- モジュール、関数、パラメーターの情報を含めて、エラーを構造化コンテキストとともに記録します
- カスタム例外を送出し、ユーザーにわかりやすいメッセージに変換します
- 関数本体の最後に「正常系」の処理を置きます
依存関係
- 対称/非対称暗号処理には
cryptographyを使用します - パケットの生成とスニッフィングには
scapyを使用します - ポートスキャンには
python-nmapまたはlibnmapを使用します - SSH 接続には
paramikoまたはasyncsshを使用します - HTTP ベースのツールには
aiohttpまたはhttpx(非同期)を使用します
セキュリティ固有のガイドライン
- 外部入力をすべてサニタイズします。サニタイズされていない文字列でシェルコマンドを実行しないでください
- 安全なデフォルト設定を使用します(TLSv1.2 以上、強力な暗号スイート)
- ネットワークスキャンにはレート制限とバックオフを実装します
- シークレットは安全なストアまたは環境変数から読み込みます
- CLI と RESTful API の両方のインターフェースを提供します
- ミドルウェアを使用して、ログ記録、メトリクス、例外処理を一元化します
パフォーマンスの最適化
- 高スループットのスキャンには asyncio とコネクションプーリングを活用します
- リソース使用量を管理するため、大量のターゲットリストをバッチまたはチャンクに分割します
- 必要に応じて DNS ルックアップと脆弱性データベースへのクエリをキャッシュします
- 重いモジュールは必要になったときにのみ遅延読み込みします
主な規約
- 共有リソースには依存性注入を使用します
- 測定可能なセキュリティ指標(スキャン完了時間、誤検知率)を優先します
- 中核となるスキャンループではブロッキング処理を避けます
- SIEM で簡単に取り込めるよう、構造化ログ(JSON)を使用します
- pytest と
pytest-asyncioでテストを自動化します
コメント
Markdown 対応