Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
capability-sdk — セキュリティスキャナ向けの標準ケイパビリティインターフェースを定義する共有 Go SDK。マルチフォーマットの検出結果出力(terminal、JSON、NDJSON、Markdown、SARIF)と CLI ドキュメントのドリフトチェックを備える。 | Kitploit
ツール/GitHubGitHub/praetorian-inc/capability-sdk
防御ツール静的分析脆弱性スキャナースクリプトと自動化セキュリティ仮想化DevSecOpsユーティリティとフレームワーク
GitHubpraetorian-inc/capability-sdk

capability-sdk

セキュリティスキャナ向けの標準ケイパビリティインターフェースを定義する共有 Go SDK。マルチフォーマットの検出結果出力(terminal、JSON、NDJSON、Markdown、SARIF)と CLI ドキュメントのドリフトチェックを備える。

リポジトリを見る
182日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Capability SDK

Guardプラットフォーム向けのセキュリティケイパビリティを構築するための共有Go SDK。

パッケージ

pkg/capability - ケイパビリティインターフェース

セキュリティスキャナが実装する標準化されたインターフェースを定義します。

型:

// Target - ケイパビリティがスキャンする対象
type Target struct {
    Type  TargetType        // domain, ip, port, url, cloud_resource
    Value string            // ターゲットの値
    Meta  map[string]string // 追加のコンテキスト
}

// Finding - ケイパビリティが発見するもの
type Finding struct {
    Type     FindingType    // asset, risk, attribute
    Severity Severity       // info, low, medium, high, critical
    Data     map[string]any // 柔軟なペイロード
}

// Capability - 実装するインターフェース
type Capability interface {
    Name() string
    Run(ctx context.Context, target Target) ([]Finding, error)
}

実装例:

type SubdomainScanner struct{}

func (s *SubdomainScanner) Name() string {
    return "subdomain-scanner"
}

func (s *SubdomainScanner) Run(ctx context.Context, target capability.Target) ([]capability.Finding, error) {
    if target.Type != capability.TargetDomain {
        return nil, fmt.Errorf("expected domain, got %s", target.Type)
    }

    // Scan logic here...

    return []capability.Finding{
        {
            Type: capability.FindingAsset,
            Data: map[string]any{
                "dns":   "found.example.com",
                "class": "domain",
            },
        },
    }, nil
}

pkg/formatter - 出力フォーマット

スキャン結果をレンダリングするためのマルチフォーマット出力システム。

サポートされるフォーマット:

  • Terminal (ストリーミング、lipglossによる色付け)
  • JSON (バッファリング、pretty-printオプション)
  • NDJSON (ストリーミング、改行区切り)
  • Markdown (バッファリング、テンプレートベースのレポート)
  • SARIF 2.1.0 (バッファリング、GitHub/Azure統合)

基本的な使い方:

import "github.com/praetorian-inc/capability-sdk/pkg/formatter"

// Create a formatter
f, err := formatter.New(formatter.Config{
    Format: formatter.FormatJSON,
    Writer: os.Stdout,
    Pretty: true,
})
if err != nil {
    return err
}
defer f.Close()

// Format findings
f.Format(ctx, formatter.Finding{
    ID:       "vuln-001",
    Title:    "Security Issue",
    Severity: formatter.SeverityHigh,
})

// Complete with summary
f.Complete(ctx, formatter.Summary{TotalFindings: 1, HighCount: 1})

ケイパビリティのFindingの変換:

import (
    "github.com/praetorian-inc/capability-sdk/pkg/capability"
    "github.com/praetorian-inc/capability-sdk/pkg/formatter"
)

// Run capability
findings, err := scanner.Run(ctx, target)

// Convert and format for CLI output
for _, cf := range findings {
    ff := formatter.FromCapabilityFinding(cf)
    f.Format(ctx, ff)
}

マルチ出力 (TeeFormatter):

terminal, _ := formatter.New(formatter.Config{Format: formatter.FormatTerminal, Writer: os.Stdout})
jsonFile, _ := formatter.New(formatter.Config{Format: formatter.FormatJSON, Writer: file})

tee, _ := formatter.NewTee(terminal, jsonFile)
tee.Format(ctx, finding) // Writes to both

並行送信 (Aggregator):

agg := formatter.NewAggregator(f, 100) // buffer size 100

// From multiple goroutines
go func() { agg.Submit(ctx, finding1) }()
go func() { agg.Submit(ctx, finding2) }()

agg.Close() // Wait for all writes

pkg/clisurface - CLIドキュメントドリフトゲート

cobraコマンドツリーを走査し、そこから構築されたドキュメント成果物を生成、スプライス、チェックするため、コミットされたドキュメントがバイナリから黙って乖離することがなくなります。clisurface.NewでDocsを構築し、Docs.Writeで再生成、Docs.CheckArtifactsとDocs.LintRepoでコミットされたファイル、散文、GoコメントがCLIと一致しなくなったときにCIを失敗させます。完全なAPIについてはgo doc ./pkg/clisurfaceを参照してください。

アーキテクチャ

┌─────────────────────────────────────────────────────────────────────┐
│                     STANDALONE TOOL                                 │
│  Implements: capability.Capability                                  │
│  Produces:   []capability.Finding                                   │
└────────────────────────────┬────────────────────────────────────────┘
                             │
              ┌──────────────┴──────────────┐
              ▼                              ▼
┌─────────────────────────┐    ┌─────────────────────────────-────────┐
│   CLI OUTPUT PATH       │    │       CHARIOT INTEGRATION PATH       │
│                         │    │                                      │
│  capability.Finding     │    │  capability.Finding                  │
│         │               │    │         │                            │
│         ▼               │    │         ▼                            │
│  formatter.Finding      │    │  Chariot Adapter (in chariot repo)   │
│  (FromCapabilityFinding)│    │         │                            │
│         │               │    │         ▼                            │
│         ▼               │    │  Tabularium Model (Asset/Risk/Attr)  │
│  Terminal/JSON/SARIF    │    │         │                            │
│                         │    │         ▼                            │
│     stdout/file         │    │     job.Send() → Storage             │
└─────────────────────────┘    └───────────────────────────────-──────┘

型の拡張

新しいTarget型の追加

  1. Issueを起票: "Xのためにgit_repoターゲット型が必要"
  2. バックエンド開発者がTabulariumマッピングをレビュー
  3. pkg/capability/target.goに追加:
    TargetGitRepo TargetType = "git_repo"
    
  4. Valid()メソッドを更新
  5. テストを追加
  6. Chariotアダプタを更新

新しいFinding型の追加

  1. Issueを起票: "Xのためにrelationship Finding型が必要"
  2. Dataスキーマを定義
  3. pkg/capability/finding.goに追加
  4. pkg/formatter/capability_converter.goのコンバータを更新
  5. テストを追加

このSDKを使用するモジュール

  • diocletian - クラウドセキュリティスキャナ

ライセンス

Apache License 2.0。LICENSEを参照してください。

ライセンスはリポジトリルートに一度だけ記載します。ファイルごとの著作権表示やライセンスヘッダーを追加しないでください — それらを含む兄弟リポジトリからコードを移植する場合も同様です。ルートのLICENSEが正式な表明であり、すべてのファイルでそれを繰り返す必要はありません。

ツールをダウンロード