開発者・AppSec 向けドキュメント

開発者向けリファレンスガイド: 監査の実行と管理

Cyfendo で自律型の脆弱性監査を実行する 4 つの方法を紹介します。Web フォルダの直接アップロード、継続的な Git リポジトリ、軽量なクラウド同期 CLI、そして Cyfendo Private Scan (Cyfendo へのソースコード送信なし) です。

脆弱性監査を実行する 4 つの方法

セキュリティ体制、データ管理の要件、開発ライフサイクルに最も合うワークフローをお選びください。

Web UI のフォルダのドラッグ & ドロップ

アドホックな監査に最速の方法です。ローカルのプロジェクトフォルダをブラウザに直接ドラッグします。ブラウザ内の AST フィルタリングにより、バイナリや依存関係を送信せずに、保護対象 LOC をミリ秒で計算します。

Git リポジトリ連携

ブランチの自動追跡に最適です。GitHub、GitLab、Bitbucket のリポジトリ URL を連携します。Cyfendo はブランチとコミット SHA を自動的に識別し、差分に対する増分監査を行います。

軽量な Cloud CLI (cyfendo scan .)

ターミナルのユーザーと CI/CD パイプライン向けの、標準的なクラウド同期型のスキャンです。コードをローカルでパッケージ化して一時的なクラウドサンドボックスにアップロードし、ライブのテレメトリをストリーミングして、統合された .patch 差分を出力します。

Cyfendo Private Scan (cyfendo scan --private .)

Cyfendoへのコード送信なし

ローカルパイプライン • Cyfendo へのソースコード送信なし。 マルチエージェントのセキュリティパイプライン全体を、ご自身の LLM API キー (OpenAI、Anthropic、Gemini、Vertex、Azure) またはローカルモデル (Ollama/vLLM) を使って、ご自身のハードウェア上で実行します。コード、AST、検出事項の証明、パッチは Cyfendo に送信されません。外部 AI プロバイダーを使う場合、コードの一部はそのプロバイダーに送信されます。ローカルモデルの場合、コードがマシンの外に出ることはありません。

方法 1: Web UI フォルダアップロード

ローカルへのソフトウェアのインストールなしで、ブラウザから直接アドホックなセキュリティレビューを実行します。

ダッシュボードを開いて「新規スキャンを開始」をクリックする

/dashboard を開き、新規スキャンを開始ボタンをクリックします。フォルダをアップロードタブが選択されていることを確認してください。

ローカルのプロジェクトフォルダを選択またはドラッグする

ローカルのプロジェクトのルートを選択します。Cyfendo のブラウザ内スキャナは、次の除外ルールを自動的に適用します:

  • カスタムの .gitignore と .cyfendoignore ファイルを尊重します。
  • node_modules/、vendor/、.git/、dist/、build/、仮想環境 (venv/)、バイナリアセットを自動的に無視します。
  • 保護対象 LOC を正確に計算し、アップロード前にクォータの確認を即座に表示します。

マルチエージェントのライブテレメトリを見る

送信後は、Server-Sent Events (SSE) により、分散した解析ステージでの実行がリアルタイムでストリーミングされます: AST 解析 → テイント伝播 → 一時的なサンドボックスでの PoC 検証 → AI による修復パッチの生成。

インタラクティブな脆弱性 IDE で確認する

CWE と CVSS スコアで分類された検出事項を確認します。行単位のテイントベクトルの表示、サンドボックスでのエクスプロイトの概念実証の実行、統合された .patch 差分や SARIF レポートのダウンロードができます。

方法 2: Git リポジトリ連携と自動スケジュール

リモートの Git リポジトリを連携し、ブランチの継続的な監視、モノレポのサブディレクトリの指定、定期的なセキュリティ監査の自動化を行います。

スキャンのモーダルで「Git リポジトリ」を選択する

ダッシュボードの新規スキャンを開始モーダルで、Git リポジトリタブに切り替えます。リポジトリの URL (例: https://github.com/org/repo.git) と、検査するブランチ (例: main、develop、release/v2) を指定します。

モノレポのサブディレクトリの指定 (任意)

リポジトリに複数のマイクロサービスやパッケージが含まれる場合は、サブディレクトリ (任意)に相対パス (例: apps/api や packages/backend) を指定します。Cyfendo はそのパス内のソースファイルだけをパッケージ化して監査するため、無関係なプロジェクトによる LOC の不要な消費を防げます。

プライベートリポジトリの認証

プライベートリポジトリでは、読み取り専用のリポジトリ権限を持つパーソナルアクセストークン (PAT) を指定します (例: Contents: Read-only を付与した GitHub のファイングレイン PAT、GitLab プロジェクトアクセストークン、Bitbucket アプリパスワード)。トークンは AES-256 (Fernet) で保存時に暗号化され、一時的なサンドボックスでの取得時にのみメモリ内で復号され、平文で保存されることはありません。

増分の連続性と変更量の追跡

Cyfendo は、各リポジトリを有効な保護対象プロジェクトに紐付けます。コードを再スキャンするとき、Cyfendo は以前のスナップショットと比べて AST のセマンティックな連続性を評価し、新たに追加または変更されたコード行に対してのみクォータを消費します。

定期スキャンの自動化とスマート変更検知

手作業なしで、本番コードを継続的に保護します。Cyfendo では、連携済みの Git プロジェクトに、ダッシュボードから直接、自動の定期スキャンスケジュールを設定できます。

Git の自動定期スキャンの設定パラメータとスケジュールの動作
スケジュールのパラメータ オプション / 動作 説明
スキャン頻度 daily, weekly, monthly 24 時間ごと、7 日ごと、または 30 日ごとに自動で実行します。
ブランチ / Ref 文字列 (例: main、staging) 上流のコミットを継続的に監視するリモートの Git ブランチ。
サブディレクトリ 任意の相対パス (例: apps/api) 定期監査を、指定したマイクロサービスまたはモノレポのパッケージだけに厳密に限定します。
スマート変更検出 0 クレジットスキップを有効化 スキャン前に git ls-remote でリモートのコミット SHA を確認します。コードに変更がなければ、実行は数ミリ秒で完了し、スキャンクレジットは 0 消費です。
修復パッチ 切り替え (デフォルトで有効) 緊急と重要の検出事項に対して、サンドボックスで検証された、的を絞った統合差分パッチを自動で生成します。それ以外の検出事項も、オンデマンドで生成できます。

自動通知とアラート

定期スキャンが完了すると、Cyfendo は複数のチャネルで即時にアラートを送ります:

  • アプリ内通知センター: リアルタイムの未読バッジとドロップダウンから、検出事項のトリアージとパッチに直接移動できます。
  • メール通知: noreply@cyfendo.com から、検出事項の総数、深刻度別の内訳 (緊急、重要、警告、注意)、リスクスコア、パッチ生成の状況を記載したブランド付きのセキュリティレポートを送信します。
  • 自動の安全状態: 月間のスキャンクォータに達すると、プロジェクト設定を削除することなく、スケジュールが自動的に一時停止します (paused_quota)。Git の認証情報の有効期限が切れた場合は、アクセストークンの更新を促すアラートが表示されます (paused_auth_error)。

Git 認証情報の管理とプロジェクトごとの分離

最小権限の原則に従い、パーソナルアクセストークン (PAT) は特定のプロジェクト (project_id) に厳密に限定できます。これにより、リポジトリ単位のファイングレイン トークン (例: GitHub のファイングレイン PAT) が、ワークスペース内の他のリポジトリに流用されたり、そのスキャンを起動したりすることはありません。

$ curl -X POST https://cyfendo.com/api/v1/integrations/git/credentials \
    -H "Authorization: Bearer cy_live_..." \
    -H "Content-Type: application/json" \
    -d '{"project_id": "<PROJECT_ID>", "name": "Repo Scoped Token", "token": "github_pat_...", "provider": "github"}'

REST API によるスケジュールの自動化

Cyfendo の認証済み REST API を使って、スケジュールをプログラムから設定または起動できます:

$ curl -X POST https://cyfendo.com/api/v1/projects/<PROJECT_ID>/schedule \
    -H "Authorization: Bearer cy_live_..." \
    -H "Content-Type: application/json" \
    -d '{"frequency": "daily", "git_branch": "main", "git_subdir": "apps/api", "only_scan_on_changes": true, "generate_patches": true}'

方法 3: Cyfendo ローカル CLI スキャナ

開発者のターミナル、ヘッドレスの SSH サーバー、CI/CD パイプライン向けに設計された、依存関係ゼロの高速な CLI スキャナです。

1. インストール

以下からお好みのインストール方法をお選びください:

オプション A: Python パッケージマネージャ (pip / pipx)
$ pip install --upgrade cyfendo
オプション B: ワンライナーのインストーラ (macOS & Linux)

同じ PyPI パッケージをインストールします (pipx があれば pipx、なければ pip --user。Python 3.9 以上)。スタンドアロンのバイナリは配布を終了しており、インストーラは以前のインストールで残ったものを削除します。

$ curl -sSL https://cyfendo.com/install.sh | bash

2. 認証

右上のユーザーメニュー → 開発者 & CLI アクセスから API キーを生成し、CLI を認証します:

# Option A: Interactive login command
$ cyfendo login --key cy_live_xxxxxxxxxxxxxxxxxxxxxxxx

# Option B: Set as environment variable
$ export CYFENDO_API_KEY=cy_live_xxxxxxxxxxxxxxxxxxxxxxxx

3. Cyfendo サーバーでのスキャンの実行

--private フラグなしで標準のスキャンを実行すると、コードベースが Cyfendo サーバー (クラウドまたはオンプレミス) にアップロードされて解析されます。解析、サンドボックスでの検証、パッチの生成はサーバー群でリモートに実行されるため、ローカルの商用モデルのキーや GPU は不要です。

ターミナルがある場合、cyfendo scan はアップロードの前に確認します。ターミナルがない場合 (CI、git フック、--no-interactive) は確認する相手がいないため、--yes を指定したときだけアップロードします。指定しない場合は何もアップロードされず、終了コード 2 で終了します。

アップロードでは、すべての階層の .gitignore と .cyfendoignore ファイルに従い、.env ファイル (.env.example などのテンプレートは残します)、SSH と TLS の秘密鍵、キーストア、秘密鍵を含む設定ファイルは常に除外します。プロジェクトの外を指すシンボリックリンクはスキップされ、.sarif ファイルや、以前の実行で CLI がプロジェクト内に書き出したレポート (--sarif、-o、--patch-bundle) もスキップされるため、アップロードも保護対象 LOC の計上もされません。CLI は除外した認証情報ファイルを一覧表示し、アーカイブが 250 MB を超える場合はエラーで停止します。ロックファイル (yarn.lock、poetry.lock、Cargo.lock など) と packages/ 配下のワークスペースの依存関係マニフェストは、依存関係の監査用にアップロードされ、保護対象 LOC には計上されません。

# 1. Standard fast PoC scan on Cyfendo server:
$ cyfendo scan .

# 2. Server-side scan with automated AI remediation patch generation (no --private flag needed):
$ cyfendo scan . --generate-patch

# 3. Server scan with patch generation, custom bundle export, and SARIF report:
$ cyfendo scan . \
    --generate-patch \
    --patch-bundle fixes.patch \
    --sarif cyfendo-results.sarif

# 4. Target a specific existing project in your workspace:
$ cyfendo scan /path/to/source --project "payment-gateway" --generate-patch

# 5. Connect to a custom or self-hosted Cyfendo server endpoint:
$ cyfendo scan --server https://cyfendo.internal:5001 . --generate-patch

# 6. CI/CD or headless execution with auto-confirm:
$ cyfendo scan . --generate-patch --yes --no-interactive

4. 複数アカウントと組織のワークスペース

アカウントが組織や複数の Business アカウントに紐付いている場合、1 つの API キーですべてにアクセスできます。アクティブなワークスペースはローカルで切り替えることも、その場で対象のワークスペースを指定することもできます:

# 1. List all accessible personal and business workspaces:
$ cyfendo workspaces

# 2. Switch default active workspace (persisted to ~/.cyfendo/config.json):
$ cyfendo workspace switch ws_acme_corp_8f3a

# 3. Execute a scan under a specific organization without switching default:
$ cyfendo scan . --workspace ws_acme_corp_8f3a --generate-patch

# 4. In CI/CD runners, set CYFENDO_WORKSPACE_ID to attribute scans to your organization:
$ export CYFENDO_WORKSPACE_ID=ws_acme_corp_8f3a
$ cyfendo scan . --generate-patch

方法 4: Cyfendo Private Scan

ローカルマシン • Cyfendo へのソースコード送信なし

ご自身の LLM プロバイダーのキーまたはセルフホストのモデルを使い、ローカルのワークステーションまたはプライベートランナー上で、自律型のマルチエージェントのセキュリティ監査を直接実行します。データの主権は完全にお客様にあります。

プライベートなデータ管理:Cyfendo へのソースコード送信なし

Cyfendo Private Scan は、防衛、医療、フィンテック、エンタープライズの各チームに見られる、厳格なゼロトラストのデータ管理要件に合わせて設計されています:

100% ローカルでのパイプライン実行
AST 解析、ファイル間のテイント解析、コールグラフ、エクスプロイト検証、パッチ生成は、ローカル環境で直接実行されます。
LLM への直接接続
お使いのマシンは、OpenAI、Anthropic、Gemini、Vertex、Azure、またはローカルの Ollama と直接通信します。Cyfendo のサーバーが、お客様のコードやモデルへのプロンプトを中継することはありません。モデルにはソースファイル全体が渡り、どこからもインポートされていないファイルも含まれます。.env ファイル、秘密鍵、無視対象のファイル、プロジェクト外へのリンクは渡りません。
.cyfendo/ へのローカル保存
すべての検出事項、エクスプロイトのトレース、Markdown レポート、SARIF ファイル、個別の .patch 差分は、ローカルのワークスペースにのみ保存されます。
最小限の利用権限の同期
ソースコード、ファイルの内容、検出事項は送信されません。クォータを計測するため、CLI はスキャンのメタデータ (プロジェクト名、ファイル数と LOC 数、プロバイダーとモデル、Git ブランチ、コミット SHA、リモート URL)、ステージの進捗更新、そして完了時には深刻度別の件数、リスクスコア、パッチ数 (スキャンが失敗した場合はエラーメッセージ) を送信します。Private Scan では、利用権限を確認するために、Cyfendo サーバー (cyfendo.com、またはオンプレミスのサーバーを --server で指定) へのネットワークアクセスが必要です。
依存関係の照会
サードパーティのパッケージについて公表済みの脆弱性を確認するため、CLI はパッケージ名とバージョン (ソースコード、ファイルパス、プロジェクト名は含まない) を OSV.dev に直接送信し、見つかった CVE ID を FIRST EPSS に送信して、CISA KEV カタログをダウンロードします。ロックファイルがカバーしていないパッケージについては、公開されている名前とバージョンが deps.dev にも送信され、宣言されたバージョン範囲は npm レジストリまたは PyPI で照会されます。ワークスペース、パス、git のパッケージ、およびロックファイルやレジストリ設定でプライベートレジストリに紐付けられているパッケージは送信されません。また、依存関係に関する情報が Cyfendo に送られることもありません。--no-deps でスキップできます。サードパーティ依存関係の監査をご覧ください。
ファイルと概念実証
Private Scan は、クラウドへのアップロードと同じルールで作成したプライベートコピー上で動作します。.env ファイル、秘密鍵、無視対象のファイルが、モデルやスクリプトに渡ることはありません。スクリプトは、利用可能な環境では OS のサンドボックス内で実行され、ホームフォルダは隠され、書き込みはスキャンのフォルダと /tmp に限られます。macOS ではループバックのみのネットワークとなり (依存関係のインストールや、Maven・Gradle 経由で起動したアプリはネットワークを使用します)、Linux では bubblewrap がインストールされている場合に動作しますが、このネットワーク制限はありません。依存関係のインストールは --no-deps の有無にかかわらず実行され、お客様自身の .npmrc、pip.conf、.gitconfig は使用しないため、プライベートレジストリには接続できません。各実行で適用された内容は CLI が表示します。

お客様向けの手順

Cyfendo CLI をインストールまたは更新する

公式の Cyfendo Python パッケージをインストールするか (Python 3.9 以上が必要)、スタンドアロンの curl スクリプトを使用します:

$ pip install --upgrade cyfendo

Cyfendo ワークスペースを認証する

ユーザーメニュー → 開発者 & CLI アクセスから Cyfendo の API キーを生成し、ローカルマシンを認証します。これにより、プランの利用権限と保護対象 LOC の残高が確認されます:

$ cyfendo login --key cy_live_xxxxxxxxxxxxxxxxxxxxxxxx

# Verify workspace balance & active plan:
$ cyfendo status

モデルプロバイダーを選択して認証情報を設定する

AI プロバイダーの API キーを環境変数にエクスポートするか、実行時に --llm-key フラグで直接指定します:

# For OpenAI:
$ export OPENAI_API_KEY="sk-proj-xxxxxxxxxxxxxxxxxxxxxxxx"

# For Anthropic Claude:
$ export ANTHROPIC_API_KEY="sk-ant-xxxxxxxxxxxxxxxxxxxxxxxx"

# For Google Gemini / Vertex AI:
$ export GEMINI_API_KEY="AIzaSyxxxxxxxxxxxxxxxxxxxx"
# Or for GCP Vertex: export GCP_PROJECT="my-enterprise-project"

# For Azure OpenAI:
$ export AZURE_OPENAI_ENDPOINT="https://my-resource.openai.azure.com/"
$ export AZURE_OPENAI_KEY="xxxxxxxxxxxxxxxxxxxxxxxx"
$ export AZURE_OPENAI_DEPLOYMENT="gpt-4o"

永続的なデフォルトを設定する (任意)

お好みのプロバイダーとモデルのデフォルトを ~/.cyfendo/config.json に保存しておくと、以降のスキャンでフラグを毎回指定する必要がなくなります:

$ cyfendo config --set-provider openai
$ cyfendo config --set-model gpt-4o
$ cyfendo config --set-llm-key sk-proj-xxxxxxxxxxxxxxxxxxxxxxxx

Cyfendo Private Scan を実行する

対象のディレクトリで cyfendo scan --private . を実行します。--generate-patch を追加すると、緊急と重要の検出事項に対する統合された修復差分が生成されます:

# 1. Run local scan with OpenAI GPT-4o and patch generation:
$ cyfendo scan --private \
    --provider openai \
    --model gpt-4o \
    --generate-patch \
    .

# 2. Run with Anthropic Claude Sonnet 5.5 and extended reasoning:
$ cyfendo scan --private \
    --provider anthropic \
    --model claude-sonnet-5-5 \
    --thinking high \
    --generate-patch \
    .

# 3. Steer how patches are written (a directive needs --generate-patch):
$ cyfendo scan --private \
    --provider openai \
    --model gpt-4o \
    --generate-patch \
    --directive "Use the shared db.query() helper for every SQL fix" \
    .

検出事項を確認し、ローカルでパッチを適用する

すべての成果物は、プロジェクトのルートの .cyfendo/ に保存されます。ターミナルでレポートを確認し、コマンド 1 つでパッチを適用できます:

# List all generated patches:
$ cyfendo patches

# View colorized diff for a specific finding:
$ cyfendo patch fnd_388b --show

# Apply patch directly to source code via git apply:
$ cyfendo patch fnd_388b --apply

# Read full Markdown audit report:
$ cat .cyfendo/report.md

Private Scan のプロバイダー設定と認証情報ガイド

エンタープライズ向け AI プロバイダー、クラウドプラットフォーム、セルフホストのローカルモデルの包括的なセットアップガイド。

OpenAI (GPT-5.6、GPT-4o、O3-Mini、O1)

--provider openai

OpenAI の公式チャット・推論モデルすべてに対応しています。--endpoint または OPENAI_BASE_URL により、カスタムの OpenAI 互換プロキシゲートウェイにも対応します。

export OPENAI_API_KEY="sk-proj-..."
$ cyfendo scan --private --provider openai --model gpt-4o --generate-patch .

# With custom OpenAI-compatible endpoint (e.g. corporate proxy / LiteLLM):
$ cyfendo scan --private --provider openai --endpoint "https://ai-proxy.corp.internal/v1" --model gpt-4o .

Anthropic Claude (Claude Sonnet 5.5、Claude Opus 5.5)

--provider anthropic

Claude の優れたコード理解力と適応的な思考能力を活用します。深いテイント伝播とパッチの修復で最大限の深さが必要なときは、--thinking high を使用します。

export ANTHROPIC_API_KEY="sk-ant-..."
$ cyfendo scan --private \
    --provider anthropic \
    --model claude-sonnet-5-5 \
    --thinking high \
    --generate-patch \
    .

Google Gemini & GCP Vertex AI

--provider gemini / vertex

API キーで標準の Gemini Developer API を使用するか、Google Cloud プロジェクトの境界内でエンタープライズ向けの Application Default Credentials (ADC) を使って GCP Vertex AI を利用します。

# Option A: Gemini Developer API Key
export GEMINI_API_KEY="AIzaSy..."
$ cyfendo scan --private --provider gemini --model gemini-3.6-flash --generate-patch .

# Option B: GCP Vertex AI with Enterprise ADC
$ gcloud auth application-default login
export GCP_PROJECT="my-enterprise-gcp-project"
export VERTEX_AI_LOCATION="us-central1"
$ cyfendo scan --private --provider vertex --model gemini-3.6-flash .

Microsoft Azure OpenAI Service

--provider azure

専用のネットワークセキュリティ、HIPAA/SOC-2 準拠、エンタープライズのデータ境界を備えた、ご自身の Microsoft Azure OpenAI リソースに接続します。

export AZURE_OPENAI_ENDPOINT="https://my-resource.openai.azure.com/"
export AZURE_OPENAI_KEY="xxxxxxxxxxxxxxxxxxxxxxxx"
export AZURE_OPENAI_DEPLOYMENT="my-gpt4o-deployment"

$ cyfendo scan --private --provider azure --generate-patch .

ローカル & オンプレミスのモデル (Ollama、vLLM)

--provider ollama

モデル推論をネットワーク内に留められます。ローカルの推論エンジン (Ollama や vLLM など) を使えば、モデルの通信がマシンやプライベート LAN の外に出ることはありません。それ以外の通信は残ります。CLI はスキャンのメタデータと検出事項の件数を Cyfendo サーバーに送信し、このサーバーには接続できる必要があります (インターネットに接続できないネットワークでは、--server でオンプレミスの Cyfendo サーバーを指定してください)。概念実証のための依存関係のインストールはパッケージレジストリに接続します。依存関係の照会は、--no-deps を追加しない限り、公開されているパッケージ名とバージョンを公開サービスに送信します。ワークステーションではローカルモデルが遅くなることがあり、各リクエストに最大 CYFENDO_LLM_TIMEOUT 秒かかる場合があります (ollama のデフォルトは 900)。

# 1. Pull open-weights reasoning model in Ollama:
$ ollama pull deepseek-r1:32b
# (or: ollama pull qwen2.5-coder:32b / llama3.3:70b)

# 2. Run the scan on the local model (default endpoint http://localhost:11434/v1):
$ cyfendo scan --private \
    --provider ollama \
    --model deepseek-r1:32b \
    --generate-patch \
    .

# 3. For custom internal vLLM cluster:
$ cyfendo scan --private \
    --provider ollama \
    --endpoint "http://vllm-cluster.internal:8000/v1" \
    --model deepseek-ai/DeepSeek-R1 \
    .

スキャン設定と詳細オプション

Web UI と CLI で、検出事項の重複排除の範囲、AI による修復の生成、ベンチマーク評価モードをカスタマイズできます。

重複排除の範囲 (--dedup-scope)

コールグラフ、AST のスコープ、ソースファイルにまたがる生のテイントトレースと候補の検出事項を、どのようにまとめて統合されたセキュリティアラートにするかを制御します:

  • root_cause (デフォルト): 関数とルートにまたがる、汎用的な多要素の AST クラスタリング。冗長なアラートを根本原因ごとの検出事項にまとめ、開発者のトリアージを助けます。
  • file (ファイル単位の分離): 別々のファイルの検出事項が統合されないようにします。合成テストスイートや、ファイルごとのきめ細かな監査で重要です。
  • none (生のトレース): 重複排除のクラスタリングを完全に無効にします。検証済みの候補の検出事項のトレースを、統合せずにそのまま出力します。

Fast PoC モードと AI 修復パッチ (--generate-patch)

デフォルトでは、Cyfendo は Fast PoC モードで動作し、AI によるパッチ生成を待たずに、AST のテイント伝播の全解析と gVisor サンドボックスでのエクスプロイト検証を数秒で実行します。

スキャン中に緊急と重要の検出事項に対する的を絞った修正差分を生成するには、Web UI でトグルを有効にするか、CLI で --generate-patch を渡します。個別の検出事項については、脆弱性 IDE 内で、または cyfendo patch <finding_id> --regenerate で、デュアルオラクル検証済みのパッチをオンデマンドで生成することもできます。

ベンチマーク評価モード (--benchmark-mode)

自動化された評価ベンチマーク (OWASP Benchmark、Juliet、独自の合成スイートなど) 向けに設計されています。有効にすると、Cyfendo は自動的にファイル単位の分離 (--dedup-scope=file) を適用してファイル間の統合を避け、評価のスループットを最大にして正解データと厳密に比較できるよう、初回のパッチ生成を無効にします。

# 1. Run in Benchmark Mode (per-file isolation, fast PoC)
$ cyfendo scan . --benchmark-mode

# 2. Run with per-file deduplication and full AI patch generation
$ cyfendo scan . --dedup-scope=file --generate-patch

# 3. Run raw audit without any deduplication
$ cyfendo scan . --dedup-scope=none

修復パッチの確認と適用

Cyfendo は、検証済みの脆弱性に対して、レビューできる状態の統合差分を生成します。手動で、または CLI で確認して適用できます。

# 1. List and export individual .patch files into .cyfendo/patches/
$ cyfendo patches

# 2. Inspect colorized diff for a specific finding in the terminal
$ cyfendo patch fnd_91a4 --show

# 3. Apply patch directly to local source code using git apply
$ cyfendo patch fnd_91a4 --apply

# 4. Or apply manually with standard git tooling
$ git apply .cyfendo/patches/01_sql_injection.patch

# 5. Regenerate a cloud finding's patch on the server, optionally with a steering directive:
$ cyfendo patch fnd_91a4 --regenerate --directive "Use the shared db.query() helper"

# 6. Generate patches via Cyfendo server during scan & export unified bundle (no --private flag):
$ cyfendo scan . --generate-patch --patch-bundle fixes.patch
$ git apply fixes.patch

サードパーティ依存関係の監査

フルスキャンのたびに、プロジェクトが依存しているパッケージと、それらに影響する公表済みの脆弱性も一覧表示されます。

Cyfendo はロックファイルとマニフェストを読み取り、各パッケージのバージョンを公開アドバイザリのソースで照会します: OSV.dev (GitHub Advisory Database、PyPA、Go、RustSec、OpenSSF の悪意のあるパッケージ)、CISA Known Exploited Vulnerabilities カタログ、FIRST EPSS のエクスプロイトスコアです。

これらは公表済みのアドバイザリであり、Cyfendo の検出事項ではありません。Cyfendo はこれらをお客様のアプリに対してテストしないため、専用のページとレポートで扱い、検出事項の件数、リスクスコア、--fail-on ゲート、検出事項の SARIF が変わることはありません。この監査で追加のスキャンクレジットは消費せず、ロックファイルが保護対象 LOC に計上されることもありません。

実行される場所

場所 実行のタイミング 結果の確認場所
Web UI、Git リポジトリ、Cloud CLI すべてのスキャンで、Cyfendo のワーカー上で実行されます。 スキャンページの依存関係ボタンと、レポートのエクスポート → SBOM (CycloneDX 1.6)。CLI のスキャンでは .cyfendo/dependencies.json も保存されます。
Private Scan すべてのフルスキャンで、お使いのマシン上で実行されます。--no-deps でスキップできます。クイックチェック (--changed、--paths) では、--deps-fail-on、--sbom、--sarif-include-deps が結果を必要とする場合にのみ実行されます。 .cyfendo/dependencies.json と .cyfendo/sbom.cdx.json。お使いのマシン上のみに保存されます。
cyfendo deps 実行したときに動作します。AI モデルは使わず、アップロードもありません。ログインが必要で、すべてのプランで無料、スキャンクレジットは消費しません。 ターミナル、.cyfendo/dependencies.json、および --sbom、--sarif、-o のファイル。
AI コーディングツール フルスキャン。タスクで変更されたファイルのチェックでは実行されません。 エージェントの結果に含まれる dependencies セクション (後述)、およびスキャンの依存関係ページ。

読み取る対象

Cyfendo はまずロックファイルを読み取り、ロックファイルがカバーしていないパッケージについてはマニフェストを読み取ります。

エコシステム ロックファイル (先に読み取り) マニフェスト (ロックファイルがカバーしていない場合)
npm package-lock.json, npm-shrinkwrap.json, yarn.lock, pnpm-lock.yaml, bun.lock package.json
PyPI uv.lock、poetry.lock、pdm.lock、pylock.toml、Pipfile.lock、pip-compile の出力 requirements*.txt, pyproject.toml, Pipfile, setup.cfg, setup.py
Go go.mod 不要
Maven / Gradle gradle.lockfile pom.xml, build.gradle, build.gradle.kts, libs.versions.toml
NuGet packages.lock.json *.csproj, *.fsproj, *.vbproj, packages.config
Cargo、Composer Cargo.lock, composer.lock Cargo.toml, composer.json
RubyGems、Hex、Pub、Swift Gemfile.lock, mix.lock, pubspec.lock, Package.resolved なし: ロックファイルがないとバージョンが分かりません

ロックファイルがカバーしていないパッケージについては、Cyfendo は、いま新規にインストールした場合に取得されるものを割り出します。npm と PyPI のバージョン範囲は公開レジストリで解決され、npm、PyPI、Maven/Gradle、Cargo の直接依存パッケージの推移的パッケージは deps.dev から取得されます。これらのバージョンは、実際に出荷しているものと異なる場合があるため、レポートではその旨を表示します。

Git リポジトリのスキャンと CLI のアップロードには、ロックファイルが含まれます。Web UI のフォルダアップロードでは、.lock で終わるファイル (yarn.lock や poetry.lock など) と packages/ フォルダが除外され、ファイルをアップロードする AI コーディングツールでも通常ロックファイルは除外されるため、これらの監査はマニフェストへの依存度が高くなります。最も完全な一覧を得るには、Git または CLI からスキャンしてください。

優先度

優先度 意味
P1 既知の悪意のあるパッケージ、または、実際に悪用されている脆弱性の CISA リストに載っているアドバイザリ。最優先で修正してください。
P2 アプリに同梱されるパッケージの重要度が高い、または緊急のもの、もしくは EPSS スコアが 10% 以上のもの。
P3 重要度が低い、または未評価のもの、あるいは、コードがインポートしているようには見えない直接依存パッケージの、重要度が高い、または緊急のアドバイザリ。
P4 開発用またはテスト用のパッケージのみ (既知の悪意のあるパッケージは P1 のままです)。

深刻度はアドバイザリで公表されている評価であり、優先度は何から修正すべきかを示す Cyfendo の順位付けです。Cyfendo は、アドバイザリの順位付けのためだけに、コードが各パッケージをインポートしているかを確認します。インポートされていないパッケージでも、プラグイン、ツール、設定によって読み込まれる可能性があるため、アドバイザリを非表示にすることはありません。

各アドバイザリには、最初に修正されたバージョンが記載されています。Cyfendo は依存関係のパッチを作成しません。そのバージョンにアップグレードするか、悪意のあるパッケージを削除したうえで、ビルドやアプリが到達できたシークレットをローテーションしてください。

CLI コマンドと CI ゲート

# Packages and advisories only
$ cyfendo deps .

# Fail CI on high or critical
$ cyfendo deps . --fail-on high \
    --sbom sbom.cdx.json \
    --sarif deps.sarif

# List packages, send nothing
$ cyfendo deps . --offline

# As part of a scan
$ cyfendo scan . \
    --deps-fail-on high \
    --sbom sbom.cdx.json \
    --sarif results.sarif \
    --sarif-include-deps

# Private Scan without the lookup
$ cyfendo scan --private . --no-deps

スキャンの --deps-fail-on と、cyfendo deps の --fail-on は、開発専用ではないパッケージにその深刻度以上のアドバイザリが影響する場合に、終了コード 1 で終了します。既知の悪意のあるパッケージは、常にゲートを失敗させます。アドバイザリの照会が完了しなかった場合 (OSV.dev に接続できない、または制限時間に達した場合) も終了コード 1 で終了します。十分に確認されていない一覧では何も証明できないためです。照会をオフにしている場合 (--offline、CYFENDO_SCA、--no-deps) はゲートは適用されず、CLI がその旨を表示します。cyfendo scan の --fail-on は、引き続きコードの検出事項のみが対象です。

毎日の監視

Cyfendo は、各プロジェクトの最新のクラウドスキャンのパッケージを、毎日あらためて OSV.dev と照合します。そのスキャン以降に公表されたアドバイザリは、依存関係ページのこのスキャン以降に公表と通知に表示され、ワークスペースのオーナーにはメールが届きます (開発用パッケージにのみ影響するアドバイザリは、通知のみでメールは送られません)。そのバージョンにアドバイザリが影響しなくなると、アラートは自動的に閉じられ、新しいスキャンによって監視対象のパッケージ一覧は置き換えられます。

プロジェクトの監視を停止するには、依存関係ページの監視をオフにするをクリックします (ロールにプロジェクトを管理する権限が必要です)。Private Scan は監視されません。そのパッケージ一覧が Cyfendo に届くことはありません。

AI コーディングツールでの利用

完了したフルスキャンの結果と cyfendo_status には、dependencies セクションが含まれます。優先度別の件数、最大 10 件の P1 と P2 のアドバイザリ (パッケージ、バージョン、アドバイザリ ID、CVE、深刻度、修正バージョン)、最大 10 件の未解決の監視アラートです。エージェントはこれらを、確認済みの問題とは別に、依存関係のアドバイザリとして報告します。検出事項 ID がないため、cyfendo_generate_fix は適用されず、修正はアップグレードです。

エージェントに渡されるのは、これらの識別子と数値のみです。アドバイザリの本文はサードパーティが書いたもので、渡されることはなく、エージェントへの指示と読めてしまう可能性があるパッケージ名は、件数には数えますが一覧には載せません。スキャンの依存関係ページにはすべてが表示されます。

REST API

エンドポイント 動作
GET /api/v1/scans/<scan_id>/dependencies スキャンのレポートと、プロジェクトの監視対象スキャンの場合は未解決のアラート。?components=1 を付けると、パッケージの全一覧が得られます。
GET /api/v1/scans/<scan_id>/export/sbom スキャンのパッケージとそのアドバイザリの CycloneDX 1.6 SBOM。
GET /api/v1/projects/<project_id>/dependency-alerts 監視アラート: ?status=open (デフォルト)、resolved、all。
POST /api/v1/projects/<project_id>/dependency-monitoring {"enabled": true} または {"enabled": false} で、監視のオンとオフを切り替えます。

送信される内容

送信されるのはパッケージ名とバージョンのみで、ソースコード、ファイルパス、プロジェクト名は送信されません:

  • OSV.dev にはパッケージ名とバージョンが、FIRST EPSS には見つかった CVE ID が送信されます。CISA のカタログはダウンロードされるため、CISA にお客様のプロジェクトに関する情報は届きません。
  • ロックファイルがカバーしていないパッケージについては、deps.dev にその名前とバージョンが送信され、バージョン範囲で宣言されたパッケージの名前は npm レジストリまたは PyPI に送信されます。
  • ワークスペース、パス、git のパッケージ、およびロックファイル、.npmrc/.yarnrc.yml のスコープ、パッケージインデックスの設定によってプライベートレジストリに紐付けられているパッケージは送信されません (レジストリプロキシ経由で取得されるスコープなしのパッケージは、公開されたものとして扱われます)。
  • Private Scan と cyfendo deps では、これらのリクエストはお使いのマシンから直接送られ、依存関係に関する情報が Cyfendo に届くことはありません。--no-deps と cyfendo deps --offline では、これらのリクエストは行われません。ただし Private Scan は、概念実証を実行できるように、--no-deps の有無にかかわらずプロジェクトの依存関係をインストールします。このインストールはパッケージレジストリに接続します。
  • クラウドスキャンでは、リクエストは Cyfendo のワーカーから送られ、最新のスキャンのパッケージ一覧は監視のために保持されます。

制限事項

  • バージョン範囲を解決するのは npm と PyPI のみです。その他のエコシステムでは、ロックファイルのない範囲指定は「未確認」として一覧表示されます。スキャン 1 回あたりに照会されるのは、最大 150 件の範囲指定と、直接依存パッケージ 60 件の依存グラフです。
  • 照会は、デフォルトでは 240 秒で停止します (CYFENDO_SCA_BUDGET_SECONDS、または cyfendo deps の --timeout)。ソースが遅いか到達できない場合は、一覧が不完全な可能性がある旨をレポートに記載し、スキャンは続行しますが、依存関係のゲートは終了コード 1 で終了します。
  • この監査は、オペレーティングシステムのパッケージ、コンテナイメージ、ベンダリングされたコードを読み取りません。

CI/CD の品質ゲートと GitHub プルリクエストの保護

GitHub のプルリクエストで、自律型のシフトレフト セキュリティを適用します。コードの差分を自動的にスキャンし、PR の Files changed タブにインラインの SARIF 注釈を公開し、GitHub のブランチ保護で重要・緊急の脆弱性があるマージをブロックし、開発者がすぐに修復できるよう、1 クリックのパッチ成果物を生成します。

1. PR トリガー
PR イベントと同時実行

プルリクエストの opened、synchronize (新しいコミット)、reopened で起動します。スマートな同時実行キャンセルにより、置き換えられた実行を中止して、ランナーの分数と AI トークンを節約します。

2. ランナーローカルの監査
自律型監査

Cyfendo Private Scan で CI ランナー VM 上で実行します (またはマネージドのクラウドワーカー上で実行します)。Private Scan では、ソースコードは Cyfendo に送信されません。ソースファイル全体を含むコードの一部は、お客様が設定した AI プロバイダーに直接送られ (ローカルモデルを使う場合はネットワーク内に留まります)、スキャンのメタデータと検出事項の件数が、クォータの計測のために Cyfendo に送られます。

3. SARIF 2.1.0
インラインの PR 注釈

標準の SARIF 2.1.0 形式で検出事項をエクスポートし、upload-sarif@v4 でアップロードします。セキュリティアラート、CWE へのリンク、テイントトレースが、PR の Files changed タブに直接表示されます。

4. マージゲート
ブランチ保護ゲート

--fail-on=high のポリシーでは、脆弱性が深刻度のしきい値を超えると終了コード 1 で終了し、GitHub のブランチ保護によって Merge pull request ボタンが無効になります。

1 GitHub.com でリポジトリシークレットを設定する

GitHub のリポジトリで、Settings → Secrets and variables → Actions → New repository secret を開きます。(組織全体またはモノレポの構成では、Organization Settings → Secrets and variables → Actions で設定します)。

CYFENDO_API_KEY

Cyfendo ダッシュボードのワークスペーストークン。コードを送信することなく、保護対象 LOC のクォータと利用権限の上限を検証します。

GEMINI_API_KEY / OPENAI_API_KEY

商用 AI モデルのキー (Gemini、OpenAI、Anthropic、Azure)。ランナー上の CLI に直接渡され、中間のプロキシは一切経由しません。

GITHUB_TOKEN (Automatic)

GitHub Actions の組み込みトークン。GitHub のランナーが自動的に提供し、upload-sarif@v4 がインラインの PR 注釈を公開するために使用します。

CYFENDO_WORKSPACE_ID (Optional)

対象の Business ワークスペース ID (例: ws_acme_corp_8f3a)。CI/CD のリポジトリスキャンを、会社のプールされた組織クォータにひも付けます。

2 プルリクエスト用のワークフローファイル (.github/workflows/cyfendo-pr.yml) を追加する

Cyfendo Private Scan を使い、GitHub Actions のランナー VM 上でローカルに自律型の脆弱性監査を実行します。ソースコードが Cyfendo のサーバーに送られることはありません。ソースファイル全体を含むコードの一部は、承認された AI プロバイダーに直接送られ、スキャンのメタデータと検出事項の件数が、クォータの計測のために Cyfendo に送られます。(コードとプロンプトをご自身のネットワーク内に留めるには、ローカルモデルを使うモード 3 をご利用ください)。

name: Cyfendo PR Security Gate

on:
  pull_request:
    branches: [main, master]
    types: [opened, synchronize, reopened]

# Cancel in-progress runs when new commits are pushed to the same pull request
concurrency:
  group: cyfendo-${{ github.workflow }}-${{ github.head_ref || github.ref }}
  cancel-in-progress: true

jobs:
  security-gate:
    name: Cyfendo Private Security Gate
    runs-on: ubuntu-latest
    permissions:
      contents: read
      security-events: write  # Required to publish SARIF alerts to GitHub PR Files Changed tab
      actions: read  # Required for upload-sarif to query workflow run metadata

    steps:
      - name: Checkout Pull Request Code
        uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'

      - name: Install Cyfendo CLI & Model Provider SDK
        run: |
          pip install --upgrade cyfendo google-genai
          # For OpenAI:    pip install --upgrade cyfendo openai
          # For Anthropic: pip install --upgrade cyfendo anthropic

      - name: Run Cyfendo Private Scan
        env:
          CYFENDO_API_KEY: ${{ secrets.CYFENDO_API_KEY }}
          GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
          # OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          # ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: >
          cyfendo scan .
          --private
          --provider gemini
          --fail-on high
          --generate-patch
          --sarif cyfendo-results.sarif
          --no-interactive

      # Publish standard SARIF 2.1.0 findings to PR "Files changed" annotations
      - name: Upload SARIF to GitHub PR & Security Tab
        uses: github/codeql-action/upload-sarif@v4
        if: always() && hashFiles('cyfendo-results.sarif') != ''  # Upload whenever SARIF exists (even if quality gate fails)
        continue-on-error: true  # Resilient if GitHub Advanced Security is disabled on private repos
        with:
          sarif_file: cyfendo-results.sarif

      # Archive generated remediation patches so developers can download & apply them
      - name: Archive Remediation Patches & SARIF
        uses: actions/upload-artifact@v4
        if: always()
        continue-on-error: true
        with:
          name: cyfendo-remediation-patches
          include-hidden-files: true  # .cyfendo/ is a hidden folder, which upload-artifact skips by default
          path: |
            cyfendo-results.sarif
            .cyfendo/patches/
            .cyfendo/report.md

      # Publish quick audit summary directly into the GitHub Actions run summary
      - name: Publish PR Step Summary
        if: always()
        run: |
          if [ -f .cyfendo/report.md ]; then
            echo "## Cyfendo Security Gate Summary" >> $GITHUB_STEP_SUMMARY
            cat .cyfendo/report.md >> $GITHUB_STEP_SUMMARY
          fi

3 GitHub のブランチ保護ルールでステータスチェックを必須にする

パッチ未適用の緊急または重要の脆弱性を含むプルリクエストが本番環境にマージされないよう、保護対象ブランチで Cyfendo を必須のステータスチェックにします:

GitHub ブランチ保護の設定手順

  1. github.com でリポジトリを開き、Settings タブをクリックします。
  2. 左のサイドバーの Code and automation で、Branches (または Rules → Rulesets) をクリックします。
  3. Add branch protection rule をクリックします (または main の既存のルールを編集します)。
  4. Branch name pattern に main (または本番ブランチの名前) を入力します。
  5. 「Require a pull request before merging」にチェックを入れます。
  6. 「Require status checks to pass before merging」にチェックを入れます。
  7. ステータスチェックの検索ボックスで Cyfendo Private Security Gate (または YAML で指定したジョブ名) を検索して選択します。
  8. 「Require branches to be up to date before merging」にチェックを入れると、テストが最新の対象コミットに対して実行されることを保証できます。
  9. Save changes / Create をクリックします。

GitHub.com で開発者に表示される内容:

プルリクエスト #42: ユーザー認証ルートのリファクタリング
feature/auth-routes → main
Cyfendo Private Security Gate — 失敗 48 秒で完了 • 詳細

深刻度「重要」の欠陥を 1 件検出しました (services/auth.py:48 の CWE-89 SQL インジェクション)。ゲートのしきい値は --fail-on=high です。

単体テストと Lint 1 分 12 秒で成功 • 詳細

42 件のテストスイートがすべて成功しました。

4 開発者によるレビューと1 クリックのパッチ修復

Cyfendo は、セキュリティレビューを標準的なコードレビューのワークフローに変えます。開発者は、プルリクエストの差分で検出事項を直接確認し、生成されたパッチを数秒で適用できます:

インラインの PR コード注釈

検出事項は標準の SARIF 2.1.0 形式でアップロードされるため、GitHub は PR の Files changed ビューにアラートを直接表示します。各注釈には、脆弱なコードの正確な行、信頼できない入力からシンクまでのテイントパス、CWE の定義、修復のアドバイスが表示されます。

ダウンロードしたパッチの適用

上記のどちらの GitHub Actions ワークフローにもあるように、--generate-patch を付けて実行した PR スキャンは、緊急および重要の検出事項の統合差分パッチを GitHub Actions の Artifacts パネルにアーカイブします。開発者は cyfendo-remediation-patches.zip をダウンロードし、コマンド 1 つでローカルに修正を適用できます:

# Apply autonomous patch locally
$ git apply .cyfendo/patches/01_sql_injection.patch

# Commit and push back to the pull request
$ git commit -am "fix(security): apply Cyfendo remediation patch"
$ git push origin feature/auth-routes
マージのブロックの自動解除

修復のコミットをプッシュすると、ただちに新しい Cyfendo PR スキャンが起動します。ポリシーのしきい値を超える脆弱性がなくなると、ステータスチェックが緑色になり (Cyfendo Private Security Gate — Passed)、GitHub のブランチ保護によって Merge pull request ボタンが自動的に有効になります。

チームと Business ワークスペース

複数席の組織ワークスペース、きめ細かな 3 段階のロールベースアクセス制御 (RBAC)、複数アカウントの連携、プールされたチームクォータ、メンバーの自動オンボーディング。

1. アカウントの種類とアーキテクチャ

Cyfendo は、個人の開発と組織のチームでの共同作業を分けています:

Developer アカウント (個人ワークスペース)

個人開発者、創業者、セキュリティコンサルタント向けです。個人の ID に紐付き、個人向けの課金プラン (10K LOC までの無料プラン、Starter、Growth、Scale) とプライベートリポジトリが利用できます。

Business アカウント (組織ワークスペース)

エンジニアリングチームと企業向けに設計されています。組織名のワークスペース (例: Acme Cybersecurity Inc.)、全チームメンバーで共有されるプールされた保護対象 LOC の容量と月間スキャンクォータ、一括請求、複数席の管理を備えています。

1 つの ID → 複数のワークスペース

1 つのログイン (メール/パスワード、または Google Workspace SSO) で、個人の開発者ワークスペースと複数の Business 組織を同時に紐付けられます。Web UI では上部のナビゲーションのドロップダウンから、CLI では cyfendo workspace switch で、ワークスペースをその場で切り替えられます。

2. ロールベースアクセス制御 (RBAC) マトリクス

Business ワークスペースの各メンバーには、最小権限のセキュリティを徹底するため、3 つの標準ロールのいずれかが割り当てられます:

Cyfendo Business ワークスペースのロールベースアクセス制御 (RBAC) 権限マトリクス
機能 / 操作 ワークスペースオーナー 実行と閲覧 (エンジニア) 閲覧のみ (監査担当)
セキュリティスキャンの実行 (Web UI と CLI) ✔ 許可 ✔ 許可 ✖ ブロック (403)
保護対象プロジェクトの作成 / 紐付け ✔ 許可 ✔ 許可 ✖ ブロック
脆弱性と AI パッチの閲覧 ✔ すべて ✔ すべて ✔ 読み取り専用
SARIF、PDF、コンプライアンスレポートのエクスポート ✔ 許可 ✔ 許可 ✔ 許可
チームメンバーの招待と管理 ✔ 専用 ✖ アクセス不可 ✖ アクセス不可
請求、請求書、プランのアップグレードの管理 ✔ 専用 ✖ アクセス不可 ✖ アクセス不可
プロジェクト / ワークスペースの削除 ✔ 専用 ✖ アクセス不可 ✖ アクセス不可

3. チーム管理と安全な招待

ワークスペースのオーナーは、専用のチームダッシュボード (/team) で共同作業者を管理します:

トークン付きのメール招待

オーナーは、メールアドレスと割り当てるロール (Run & View または View-Only) を指定してチームメンバーを招待します。Cyfendo は、暗号学的に安全なトークン付きリンクを発行し、有効期間は 7 日間です。

スムーズなオンボーディング

招待された方がすでに Cyfendo アカウントをお持ちの場合は、リンクを開くとすぐに組織がその方の ID に紐付けられます。Cyfendo を初めて使う場合は、クレジットカード情報を入力することなく、簡素化された 1 ステップの有効化 (/auth/activate/<token>) を完了します。

厳格なデータ分離と即時のオフボーディング

会社のリポジトリ、ソースのスナップショット、スキャンのテレメトリ、修復パッチは、すべて組織ワークスペースに厳密に帰属します。従業員が削除されると、会社の全資産へのアクセス権は即座に取り消され、その従業員の個人の開発者ワークスペースには一切影響しません。

4. マルチワークスペース CLI と CI/CD のコンテキスト

開発者は個人の API キーで一度認証すれば、アクセス可能な任意のワークスペースにスキャンを送れます:

# View all accessible personal & business workspaces:
$ cyfendo workspaces

# Switch local CLI default workspace context:
$ cyfendo workspace switch ws_acme_corp_8f3a

# Scan directly within an organization context without changing default:
$ cyfendo scan . --workspace ws_acme_corp_8f3a --generate-patch

# Configure CI/CD runners (GitHub Actions / GitLab CI) to use organization quota:
$ export CYFENDO_WORKSPACE_ID=ws_acme_corp_8f3a
$ cyfendo scan . --generate-patch

保護対象 LOC とクォータの計算

Cyfendo の保護対象 LOC モデルで、コード行数がどのように数えられ、キャッシュされ、課金されるかを説明します。

ソースコードの行のみ

Cyfendo が計測するのは、実行可能なソースコードの行のみです。空行、コメントブロック、サードパーティのベンダーディレクトリ (例: node_modules/、vendor/、venv/)、ミニファイされたバンドル、コンパイル済みバイナリは自動的に除外され、課金されることはありません。Private Scan でも、クラウドスキャンと同じ方法でカウントされます。

再スキャンでの二重課金なし

課金サイクル内では、既存の保護対象プロジェクトを再スキャンしても、登録済みの LOC 容量が再利用されます。10,000 LOC のコードベースを CI/CD で 50 回再スキャンしても、消費する保護対象 LOC は 500,000 ではなく、ちょうど 10,000 です。

増分 AST キャッシュ

コミットをプッシュしたり、フィーチャーブランチをスキャンしたりすると、Cyfendo の分散キャッシュが暗号学的な AST ハッシュによって変更のないファイルを即座に識別し、1 秒未満の応答と、即時のエクスプロイト検証を実現します。

CLI コマンドの完全リファレンス

利用可能なすべてのコマンドとフラグのクイックチートシート。

Cyfendo CLI のコマンド、フラグ、説明、例の包括的な一覧
コマンド / フラグ 説明 例
cyfendo login CLI を認証し、認証情報を ~/.cyfendo/config.json に保存します。 cyfendo login --key cy_live_...
cyfendo whoami 有効なユーザーアカウント、ロール、組織、クォータの使用状況を表示します。 cyfendo whoami
cyfendo status whoami の別名です。保護対象 LOC の残高、プランの上限、猶予期間の状況を表示します。 cyfendo status
cyfendo projects ワークスペースで有効な保護対象プロジェクトを、LOC 数とともに一覧表示します。 cyfendo projects
cyfendo scan <path> ディレクトリをパッケージ化し (すべての階層の .gitignore / .cyfendoignore を尊重し、.env ファイルや秘密鍵は決して含めません)、Cyfendo のクラウドサンドボックスにアップロードして、監査のライブテレメトリをストリーミングします。 cyfendo scan .
cyfendo scan --private <path> Cyfendo Private Scan: 解析、検証、パッチ生成は、ご自身の LLM キーまたはローカルモデルを使って、このマシン上で、Cyfendo にソースコードを送信せずに実行されます。Cyfendo に同期されるのはスキャンのメタデータと検出事項の件数のみで、利用権限の確認のため Cyfendo に接続できる必要があります。 cyfendo scan --private .
--provider <name> Cyfendo Private Scan の AI プロバイダーを指定します: openai、anthropic、gemini、vertex、azure、ollama。 --provider openai
--model <name> 対象の LLM モデルを指定します (例: gpt-4o、gpt-4o-mini、claude-sonnet-5-5、gemini-3.6-flash、deepseek-r1:32b)。モデルを指定すると (cyfendo config --set-model や CYFENDO_BYOM_MODEL でも同様)、そのモデルだけが実行され、モデルが拒否または失敗した呼び出しは失われます。失われた呼び出しはサマリーに表示されます。モデルを指定しない場合は、プロバイダーのデフォルトモデルとそのフォールバックが実行されます。拒否された呼び出しによって --fail-on が通らなくなっては困る場合は、モデルを指定しないでください。 --model gpt-4o
--llm-key <key> 選択した LLM プロバイダーの API キーを直接指定します (または OPENAI_API_KEY、ANTHROPIC_API_KEY などでエクスポートします)。 --llm-key sk-proj-...
--endpoint <url> 社内プロキシ、vLLM、セルフホストの Ollama 向けの、OpenAI 互換のカスタムベース URL。 --endpoint http://localhost:11434/v1
CYFENDO_LLM_TIMEOUT すべてのプロバイダーに対する、リクエストごとのモデルのタイムアウト (秒)。デフォルトは ollama が 900、ホスト型プロバイダーが 180 です。大きなローカルモデルでは引き上げてください。 CYFENDO_LLM_TIMEOUT=1800
--thinking <level> 思考に対応したモデルの推論の強度を設定します (off / none、low、medium、high)。 --thinking high
--directive <text> パッチの書き方を指示します (--generate-patch が必要で、クラウドスキャンには送信されません)。 --directive "Use the db.query() helper"
cyfendo config CLI の永続的なデフォルトを確認または設定します (--set-provider、--set-model、--set-thinking、--set-llm-key、--set-endpoint、--show)。 cyfendo config --set-provider openai
cyfendo workspaces アクセス可能な個人および Business のワークスペースを、アカウントの種類、ロール、状態とともに一覧表示します。 cyfendo workspaces
cyfendo workspace switch <id> ローカルのデフォルトのアクティブなワークスペースを、~/.cyfendo/config.json で切り替えます。 cyfendo workspace switch ws_acme_corp
--workspace, -w <id> 任意のコマンドを特定の組織ワークスペースで実行するためのグローバルフラグ。サブコマンドの前でも後でも使用できます。 cyfendo -w ws_acme_corp scan .
--key <key> グローバルフラグ: このコマンドで使う Cyfendo の API キー (CYFENDO_API_KEY と保存済みのキーより優先されます)。 cyfendo --key cy_live_... whoami
--server <url> グローバルフラグ: セルフホストまたはローカルサーバーの Cyfendo サーバー URL (CYFENDO_SERVER_URL と保存済みのサーバーより優先されます)。 --server http://127.0.0.1:8080
CYFENDO_WORKSPACE_ID 対象のワークスペースのコンテキストを指定する環境変数 (CI/CD ランナーでの使用を推奨)。 CYFENDO_WORKSPACE_ID=ws_...
--project, -p スキャンの実行を、既存の保護対象プロジェクトの名前または ID に紐付けます。 --project "backend-api"
--dedup-scope <scope> 脆弱性の重複排除の範囲を設定します: root_cause (デフォルト)、file (ファイル単位の分離)、none (生のトレース)。 --dedup-scope=file
--benchmark-mode ベンチマーク評価モードで実行します (--dedup-scope=file を上書きし、パッチ生成を無効にします)。 --benchmark-mode
--generate-patch スキャン中に、緊急と重要の検出事項に対する AI 修復パッチを生成し、サンドボックスで検証します。 --generate-patch
--no-patch 修復パッチの生成を明示的にスキップします (デフォルトの Fast PoC モード)。 --no-patch
--patch-bundle <path> 集約された統合修復差分のバンドルファイルをエクスポートします。 --patch-bundle fixes.patch
--fail-on <level> しきい値 (critical、high、medium、low) 以上の検出事項がある場合、または Private Scan の調査が完了しなかった場合に、終了コード 1 で終了します。 --fail-on=high
cyfendo deps [path] サードパーティのパッケージと、それらに影響する公表済みのアドバイザリ (OSV.dev、CISA KEV、FIRST EPSS) を、LLM もアップロードも使わずに一覧表示します。--fail-on、--sbom、--sarif、-o、--offline、--all を指定できます。--fail-on は、アドバイザリの照会が完了しなかった場合にも終了コード 1 で終了します。 cyfendo deps . --fail-on high
--deps-fail-on <level> しきい値以上の依存関係アドバイザリが開発用以外のパッケージに影響する場合、またはアドバイザリの照会が完了しなかった場合に、終了コード 1 で終了します。コードの検出事項のみを対象とする --fail-on とは別になっています。 --deps-fail-on=critical
--sbom <path> プロジェクトのサードパーティパッケージとそのアドバイザリの CycloneDX 1.6 SBOM をエクスポートします。 --sbom sbom.cdx.json
--sarif-include-deps 依存関係のアドバイザリを、別の実行として --sarif ファイルに追加します。 --sarif-include-deps
--no-deps Private Scan: 依存関係の監査をスキップするため、パッケージ名は OSV.dev に送信されません。 --no-deps
--output, -o <path> スキャン結果の JSON の追加コピーをこのパスに書き出します (.cyfendo/scan-results.json には常に保存されます)。 --output results.json
--sarif <path> GitHub / IDE との連携用に、検出事項を OASIS SARIF 2.1.0 JSON 形式でエクスポートします。 --sarif=results.sarif
--clean キャッシュされたすべての解析ステージのチェックポイントを消去し、最初から新規にスキャンします (コードの編集、設定の変更、CLI のアップグレードがあった場合は、自動的にそうなります)。 --clean
--changed [ref] Private Scan: Git のリビジョン以降に変更された内容のクイックチェックです (デフォルトはコミットされていない作業)。結果は .cyfendo/quick/ に保存されます。依存関係は、--deps-fail-on、--sbom、--sarif-include-deps が結果を必要とする場合にのみ監査されます。 --changed origin/main
--paths <path...> Private Scan: これらのファイルまたはフォルダのクイックチェックです。 --paths src/api
--max-pocs <n> Private Scan: 実行する概念実証を最大でこの数に制限します。変更されたファイルと最も深刻なものが優先されます (クイックチェックのデフォルト: 5)。 --max-pocs 3
--time-limit <seconds> Private Scan: この時間が経過した後は、新たなモデル呼び出し、検証、パッチ生成を開始せず、完了した分で終了します。このようなスキャンは --fail-on に合格できません。 --time-limit 1800
--vertex-tier <tier> Vertex AI での Private Scan: standard (デフォルト)、priority、flex (価格は半額、速度は低下)。 --vertex-tier flex
--no-interactive CI/CD のログをすっきり出力するため、アニメーションのスピナーとプログレスバーを無効にします。この場合、クラウドスキャンには --yes が必要です。 --no-interactive
--yes, -y クラウドへのアップロードを確認済みにするため、プロンプトは表示されません。ターミナルがない実行では指定が必須で、指定しないと何もアップロードされず、終了コード 2 で終了します。 cyfendo scan . --yes
--open スキャンの完了時に、Web ダッシュボードでスキャンを開きます。 --open
--separate クラウドスキャンを、既存のプロジェクトと照合せず、新しいプロジェクトとして登録します。 --separate
-v, --verbose 詳細な診断トレースとモデル通信のログを有効にします。 cyfendo scan --private -v .
cyfendo patches [id] ローカルの .patch ファイルを一覧表示します。スキャン ID を指定した場合は、そのクラウドスキャンのパッチをダウンロードしてエクスポートします (--out-dir でフォルダを指定。デフォルトは .cyfendo/patches/)。各スキャンのエクスポートは、前回のスキャンの番号付きパッチを置き換えます。再生成された regen_* パッチは保持されます。 cyfendo patches scan-2026-xyz
cyfendo patch <target> 脆弱性パッチをローカルファイルに対して確認 (--show) または適用 (--apply) します。適用済みのパッチを再適用した場合は、その旨を報告し、何も変更しません。 cyfendo patch 01_sql --show
cyfendo patch <id> --regenerate 新しい regen_*.patch を作成します。このマシン上の Private Scan の検出事項にはご自身のモデルを使い、クラウドの検出事項にはサーバーを使います。--directive で誘導できます (--regenerate も暗黙に指定されます)。--scan は、クラウドの検出事項が .cyfendo/scan-results.json にない場合に、そのスキャン ID を指定します。 cyfendo patch fnd_91a4 --directive "Use db helper"
cyfendo verify <id> [path] Private Scan の検出事項の概念実証を現在のコードに対して再実行し、続けてそのテストを実行します (モデルもアップロードも使いません)。終了コード 0 は防御済み、1 はまだエクスプロイト可能、2 は結論が出なかったことを示します。 cyfendo verify cwe89-c894a71d
cyfendo logout 保存されている Cyfendo の API キー、サーバー、ワークスペースを消去します。Private Scan の設定と LLM キーは保持され、--all を指定すると ~/.cyfendo/config.json が完全に削除されます。 cyfendo logout --all
--version, -V インストールされている CLI のバージョンを表示します。 cyfendo --version

言語とフレームワークの対応マトリクス

解析の深さ、ファイル間のテイント解析、フレームワークの認識、サンドボックスでの PoC 検証、ベンチマークでの実測の対応範囲に関する、信頼できる内訳。

言語 基本スキャン ファイル間解析 サンドボックス検証 パッチ生成 フレームワークとベンチマーク ステータス
Python
.py, .pyw
対応(AST構文とテイントシンクの検出) ファイル横断およびモジュール間の完全な呼び出しグラフ 対応(python3ランタイムを備えた一時サンドボックス) レビュー可能なパッチのフル生成を含む
Django、Flask、FastAPI、Tornado、標準ライブラリ
本番対応
Java
.java
対応(AST構文とテイントシンクの検出) クラス階層とパッケージ横断のメソッド呼び出しの解析 対応(javac / javaツールチェーンを備えた一時サンドボックス) レビュー可能なパッチのフル生成を含む
Spring Boot、Jakarta EE、Servlet API
本番対応
JavaScript / TypeScript
.js, .jsx, .mjs, .cjs, .ts, .tsx
対応(AST構文とテイントシンクの検出) ESモジュールのimport、CommonJSのrequire、ルートグラフの追跡 対応(nodeとtsx/ts-nodeを備えた一時サンドボックス) レビュー可能なパッチのフル生成を含む
Node.js、Express、Next.js、Fastify、React
社内の合成テストスイート(標準の公開スイートは未実施)
本番対応
Go
.go
対応(AST構文とテイントシンクの検出) パッケージレベルの呼び出しグラフとファイル横断のメソッド呼び出し 対応(goツールチェーンを備えた一時サンドボックス) レビュー可能なパッチのフル生成を含む
標準ライブラリ(net/http)、Gin、Echo、Fiber
社内の合成テストスイート(標準の公開スイートは未実施)
本番対応
C / C++
.c, .h, .cpp, .cc, .cxx, .hpp, .hh
対応(字句境界とバッファシンクの検出) ヘッダーと翻訳単位の参照インデックス作成 対応(gcc / clangコンパイラを備えた一時サンドボックス) レビュー可能なパッチのフル生成を含む
POSIX標準API、ソケットAPI、メモリバッファ処理
社内のCWE特化テストスイート
本番対応
Rust
.rs
対応(AST構文とunsafeブロックの検出) クレートレベルのモジュールインデックス作成とunsafeブロックの追跡 対応(rustc / cargoを備えた一時サンドボックス) レビュー可能なパッチのフル生成を含む
Actix-web、Axum、標準ライブラリ
社内の合成テストスイート
本番対応
PHP
.php, .phtml
対応(シンボルとシンクの抽出) ファイルインクルードとグローバル関数定義のインデックス作成 対応(php CLIを備えた一時サンドボックス) レビュー可能なパッチのフル生成を含む
素のPHP、Laravel、Symfonyのルート
社内のCWE特化テストスイート
本番対応
Ruby
.rb
対応(シンボルとメソッドの抽出) モジュールとrequire文のインデックス作成 対応(rubyランタイムを備えた一時サンドボックス) レビュー可能なパッチのフル生成を含む
Ruby on Rails、Sinatra
社内のCWE特化テストスイート
本番対応
Shell / Bash
.sh, .bash, .zsh
対応(コマンドと引数の解析) sourceで読み込まれたスクリプトの解析 対応(bash/shを備えた一時サンドボックス) レビュー可能なパッチのフル生成を含む
POSIXシェル、Bashスクリプト
社内のコマンドインジェクションテストケース
本番対応
Kotlin / Android
.kt, .kts, .dex
対応(.ktソースと、展開済みのDalvik .dexファイル。.apkは自動では開きません) 対応(JVM呼び出しグラフと逆コンパイルされたバイトコード) Gradle/JVMの実行とDalvikバイトコードの逆コンパイルにより対応 レビュー可能なパッチのフル生成を含む(AST検証済み)
Android SDK、Ktor、Spring Boot(Kotlin)、Gradle KTS
社内のAndroid CWEテストスイート(E2E Case 13で検証済み)
本番対応
C#, Swift, Scala
.cs, .swift, .scala
対応(構文パターンとシンクの検出) 開発中(ロードマップ) 限定的:最新の.NET上のC#は初期テスト段階です。SwiftとScalaはサンドボックスでは実行されません。 ロードマップ/限定的
ASP.NET Core、Swift標準ライブラリ、sbt
現在公開しているものはありません
ベータ/ロードマップ

対応範囲に関する注記: 1. 基本スキャン: 即座に見つかる欠陥パターンを対象とした、字句および AST の構文検査。
2. ファイル間解析: リポジトリ全体にわたる、手続き間のコールグラフの追跡とモジュール間のテイント伝播。
3. サンドボックス検証: 実際のランタイム環境下で、エクスプロイトの到達可能性を確認する、一時的な Docker コンテナでの実行。
4. パッチ生成: レビューできる状態の差分として提供される、デュアルオラクル検証済みのコードパッチ。
5. ベータ / ロードマップ: 解析と基本的な構文ルールのチェックは利用可能です。ファイル間のテイントと自動サンドボックス化は開発中です。

デプロイモードとデータ管理のアーキテクチャ

ソースコードの管理、ネットワーク境界、AI プロバイダーとの連携、保持ポリシーの包括的な比較。

セキュリティの観点 モード 1: マネージドクラウド モード 2: Private Scan (外部 AI) モード 3: Private Scan (ローカルモデル)
実行場所 Google Cloud と AWS の RAM コンテナ お客様のワークステーション、VM、または CI ランナー お客様のワークステーション、VM、またはオンプレミスのハードウェア
ソースコードの送信先 TLS 1.3 で一時的な RAM コンテナにアップロード ソースコードやファイルは Cyfendo に一切送信されません ソースコードやファイルは Cyfendo に一切送信されません
AI 解析のためのコードの行き先 一時的な RAM コンテナ内で解析し、直ちに破棄 ソースファイル全体を含むコードの一部が、お客様の AI プロバイダー (OpenAI、Anthropic、Gemini) に直接送信されます。.env ファイル、秘密鍵、無視対象のファイル、プロジェクト外へのリンクは送信されません 100% 境界の内側 (localhost の Ollama/vLLM にのみ送信)
テレメトリの送信先 スキャンのメタデータ、検出事項のタイトル、CWE がワークスペースに保存されます スキャンのメタデータ (プロジェクト名、ファイル数と LOC 数、プロバイダーとモデル、git のブランチ、コミット SHA、リモート URL)、進捗、検出事項の件数が、クォータの計測のために Cyfendo に送信されます スキャンのメタデータ (プロジェクト名、ファイル数と LOC 数、プロバイダーとモデル、git のブランチ、コミット SHA、リモート URL)、進捗、検出事項の件数が、クォータの計測のために Cyfendo に送信されます
外部 AI プロバイダー Cyfendo が管理するエンタープライズ向け推論 お客様が選択した API (OpenAI、Anthropic、Gemini) なし (Ollama、vLLM、セルフホストのモデル)
データ外部送信の区分 クラウドの RAM 上での処理と、一時的なデータの破棄 お客様の AI プロバイダーの API への送信、Cyfendo へのクォータのテレメトリ、概念実証の依存関係インストールのためのパッケージレジストリへの接続 コードとプロンプトがネットワークの外に出ることはありません。クォータのテレメトリは Cyfendo サーバーに送信され、概念実証のための依存関係のインストールは、--no-deps の有無にかかわらずパッケージレジストリに接続します。--no-deps を指定しない場合は、依存関係の監査のため、公開されているパッケージ名とバージョンも、公開のアドバイザリサービスとパッケージサービスに送信されます
適用される保持ポリシー Cyfendo の一時的な RAM ポリシー。スキャンの完了時に破棄 お客様と AI プロバイダーとの契約および保持条件に完全に従います お客様の社内のマシン/ハードウェアのポリシーに従い、どのクラウドにもコードは保持されません
モデル学習のポリシー 基盤モデルの学習には決して使用されません お客様が選択した AI プロバイダーとの契約に従います どの AI プロバイダーもコードを受け取りません
オフライン / エアギャップでの運用 不可 (Cyfendo クラウドへのインターネット接続が必要) 不可 (外部 AI プロバイダーへのインターネット接続と、Cyfendo によるトークン検証が必要) オンプレミスの Cyfendo サーバーで対応 (モデルの通信はローカルに留まり、利用権限の確認は --server で指定したサーバーに送られます)。パッケージレジストリへの経路がない場合、概念実証のための依存関係のインストールは失敗してスキャンは続行するため、それらのパッケージを必要とする概念実証は実行できないことがあります
CLI コマンド cyfendo scan [PATH] cyfendo scan --private . cyfendo scan --private --provider ollama .
お客様による制御 ワークスペース管理、スキャンのスケジュール、ロールによる RBAC お客様が API キー、プロバイダー、モデルを制御します お客様がハードウェア、ネットワーク、モデルの重みを制御します

認証と信頼性に関する開示

  • クラウドインフラストラクチャ: Cyfendo のクラウドサービスは、SOC 2 Type II、ISO 27001、FedRAMP の独立した認証を取得している Google Cloud Platform と AWS のデータセンター施設上で稼働しています。
  • プラットフォームのセキュリティ体制: Cyfendo のプラットフォームのアーキテクチャ、社内の開発ライフサイクル、アクセスポリシーは、SOC 2 Type II と ISO 27001 の統制フレームワークに厳密に沿って設計されています。Cyfendo は、自社に対する独立した企業監査をまだ完了していません。
  • 評価レポートに関する免責事項: Cyfendo のスキャンレポートと証明書は、評価時点での自動化された静的解析およびサンドボックス解析の結果を記録したものです。これらは実測のテスト結果を反映したものであり、独立した規制上の認証、OWASP による推奨、またはアプリケーションに脆弱性がないことの絶対的な保証ではありません。