# Cybe Analysis Source: https://docs.cybedefend.com/latest/agent-ai-integration/cybe-analysis-detail How to configure and use Cybe Analysis for intelligent vulnerability detection and false positive reduction. Cybe Analysis is CybeDefend's autonomous AI agent that analyzes vulnerabilities with senior-level expertise, eliminates false positives, and provides deep contextual security insights. Cybe Analysis Interface *** ## How Cybe Analysis Works ### 1. Code Parsing & Knowledge Graph When you enable Cybe Analysis, CybeDefend parses your entire codebase into a proprietary **knowledge graph**. This graph captures: * Code structure and relationships * Data flows between functions and files * Dependencies and their usages * Business logic patterns This knowledge graph becomes the foundation for all AI-powered analysis. ### 2. AI Agent Analysis Using custom tools built specifically to interact with the knowledge graph, the Cybe AI agent: * Analyzes detected vulnerabilities in full context * Traces data flows to determine real exploitability * Evaluates business impact based on code usage * Provides expert-level assessments and recommendations *** ## Configuration ### Enable Cybe Analysis Enable Cybe Analysis in Project Settings 1. Navigate to **Project Settings** 2. Find the **Cybe Analysis** section 3. Toggle **Enable Cybe Analysis** 4. Save your settings Enabling Cybe Analysis requires code parsing, which stores your code in your selected sovereign cloud (EU or US) to ensure zero hallucinations and optimal performance. ### Select Vulnerability Groups Select SAST Vulnerability Groups For **SAST scanning**, you can select specific vulnerability groups to analyze: * SQL Injection * LDAP Injection * Cross-Site Scripting (XSS) * Path Traversal * Command Injection * And more... **Why selective scanning?** This allows you to focus on vulnerabilities relevant to your application and optimize analysis time. *** ## Using Cybe Analysis ### Automatic Vulnerability Analysis Once configured, Cybe Analysis automatically: 1. **Scans selected vulnerability groups** when a scan is triggered 2. **Analyzes each finding** using the knowledge graph for context 3. **Adds detailed comments** to vulnerabilities like a security expert would 4. **Updates vulnerability status** (confirmed, false positive, etc.) ### Priority Assignment If **vulnerability triage** is enabled in settings: * Cybe Analysis assigns **priority levels** (Critical, High, Medium, Low) * Prioritization considers: * Exploitability in your specific context * Data sensitivity * Exposure to external inputs * Business impact *** ## Understanding the Results ### Vulnerability Comments Each analyzed vulnerability receives a comment from Cybe Cybe Analysis False Positive Detection *** ## Requirements * Project must be created in CybeDefend * Code parsing must be enabled (automatic when Cybe Analysis is enabled) * SAST scanner must be enabled for the project * Sufficient Cybe Analysis credits in your subscription *** **Related:** [Cybe AutoFix](/latest/agent-ai-integration/cybe-autofix-detail) · [Cybe Security Champion](/latest/agent-ai-integration/cybe-security-champion-detail) · [AI Usage Tracking](/latest/plateform-overview/plan-&-pricing/ai-usage-tracking) # Cybe AutoFix Source: https://docs.cybedefend.com/latest/agent-ai-integration/cybe-autofix-detail How to configure and use Cybe AutoFix for intelligent, context-aware vulnerability remediation. Cybe AutoFix is CybeDefend's AI agent that automatically generates intelligent, context-aware fixes for detected vulnerabilities and creates pull requests in your repository. *** ## How Cybe AutoFix Works Cybe AutoFix leverages our proprietary **knowledge graph** to understand the full context of each vulnerability before generating a fix. Unlike traditional autofix tools that apply generic patches, Cybe AutoFix: * Analyzes the vulnerability's root cause * Understands how the fix impacts surrounding code * Ensures fixes maintain code quality and architectural patterns * Generates production-ready, developer-friendly code *** ## Configuration ### Requirements **Cybe AutoFix requires**: * Project must be linked to **GitHub** or **GitLab** * Repository write permissions for pull request creation ### Enable Cybe AutoFix Enable Cybe AutoFix in Project Settings 1. Navigate to **Project Settings** 2. Ensure your project is **linked to GitHub or GitLab** 3. Verify **Cybe Analysis is enabled** (required for knowledge graph) 4. Find the **Cybe AutoFix** section 5. Toggle **Enable Cybe AutoFix** 6. Save your settings *** ## Using Cybe AutoFix ### Automatic Fix Generation When Cybe AutoFix is enabled: 1. Navigate to a **confirmed vulnerability** in your project 2. Click the **"Generate Fix"** button 3. Cybe AutoFix analyzes the vulnerability using the knowledge graph 4. A **pull request is automatically created** in your repository *** ## Review & Merge **Always review Cybe AutoFix pull requests** before merging. While the AI generates high-quality fixes, human validation ensures alignment with business requirements. ### Merge Workflow 1. **Review the PR** in GitHub/GitLab 2. **Run your CI/CD pipeline** to validate the fix 3. **Request team review** if needed for critical changes 4. **Merge** when satisfied with the fix 5. **Mark vulnerability as resolved** in CybeDefend *** ## Supported Platforms * **GitHub**: Full support for public and private repositories * **GitLab**: Full support for SaaS and self-managed instances *** ## Requirements * ✅ Project linked to GitHub or GitLab * ✅ Cybe Analysis enabled (for knowledge graph) * ✅ Repository write permissions * ✅ Sufficient Cybe AutoFix credits in your subscription *** **Related:** [Cybe Analysis](/latest/agent-ai-integration/cybe-analysis-detail) · [Cybe Security Champion](/latest/agent-ai-integration/cybe-security-champion-detail) · [AI Usage Tracking](/latest/plateform-overview/plan-&-pricing/ai-usage-tracking) # Cybe Chat, the in-dashboard AI assistant Source: https://docs.cybedefend.com/latest/agent-ai-integration/cybe-chat-detail Open Cybe from any page in the CybeDefend dashboard, pick a scope (all projects, one project, one finding), approve or reject AI-driven actions on your findings, manage your chat memory. Streaming answers, audit trail, GDPR-compliant memory. **No setup needed.** Cybe Chat ships enabled on every CybeDefend tenant. Anyone who can sign in to the dashboard can use it — the chat reflects your Permify scope exactly the way the dashboard does. There is no API key to provision, no extra OAuth flow, no client to install. *** ## Opening the chat Cybe Chat lives behind a **floating button** in the bottom-right corner of every dashboard page. The button shows a small Cybe avatar with a violet pulse. The first time you sign in, a welcome card appears above the button to introduce the assistant. * Click the button to open the drawer. * The drawer slides in from the right and takes about a third of the screen on a desktop layout. * Press `Esc` or click the `×` button to close it. * If Cybe is still streaming an answer in the background when you close the drawer, the floating button pulses violet to let you know there is new content; reopening clears the indicator. *** ## Picking a scope The first control in the drawer is a **scope picker** at the top of the conversation. The scope tells Cybe what it can see and how broadly it can reason. The default when you open the chat from a project page, a finding detail page, or a project overview. Cybe locks the scope to the page you are on and prepends a small banner like *"Project Overview · acme-payments-api"* so you know what the assistant is analysing. Pick this when you want a quick triage of what you are already looking at, without typing the project name. Switch the scope picker to **Project** to pick any project your account can read. Each project entry shows its current risk level (critical / high / medium / low) so you can jump to the most exposed repos first. Pick this when you want to drive a focused conversation around one repo — "walk me through SAST on `develop`", "list packages with a fix available", "what changed since last week". Switch to **All accessible projects** to ask cross-project questions. Cybe will aggregate over every project your Permify scope grants you. If your tenant has 200 projects and you only have access to 12, Cybe only walks those 12. Pick this when you need posture answers: portfolio risk, outliers, team-level summaries, recurring patterns across repos. There is a hard cap of **200 projects** considered per question. If your scope is larger, Cybe will flag the answer with a `truncated: true` notice so you know to narrow the scope. When you open the chat on a finding detail page, the scope auto-locks to that finding. Cybe pre-loads the finding payload (file, line, snippet, sink, package, etc.) and answers immediately within that context. Pick this for one-off triage decisions: "is this exploitable?", "what's the right status?", "are there similar ones elsewhere?". You can change the scope at any time during a conversation — Cybe simply re-anchors the next answer. *** ## Asking Cybe a question The chat input accepts up to 4,000 characters. Markdown-aware shortcuts work: * `Enter` sends the message. * `Shift + Enter` adds a line break. * A red square button replaces the send arrow while Cybe is streaming, so you can stop a long answer at any time. Cybe's responses arrive **token by token** over SSE. The drawer renders Markdown, syntax-highlighted code blocks, and **citations**: most answers include in-line links back to the dashboard view, the finding detail page, or the policy that triggered the recommendation. Click a citation to jump straight to that view. *** ## Human-in-the-loop actions When Cybe needs to **change** something — update a vulnerability status, raise its priority, attach a comment — it never executes silently. The assistant emits a **pending action card** in the conversation: ```text theme={null} Cybe proposes: update_vulnerability project · acme-payments-api finding · vs_8a3b · SQL injection on /api/users set status → not_exploitable comment → "fixed by parameterised query helper" [ Confirm ] [ Reject ] ``` * **Confirm** runs the tool. Cybe re-checks your Permify scope at execution time. If your access was revoked between the proposal and the confirmation, the card flips to red with a `PERMISSION_DENIED` label and nothing happens. * **Reject** opens a small free-text field for an optional reason. Cybe acknowledges the rejection in the thread and continues the conversation. Confirmed actions are written to your **CybeDefend audit trail** under your user identity, exactly as if you had clicked the button from the regular vulnerability page. The audit entry distinguishes "manual UI change" from "chat-confirmed AI action", so you can later filter for AI-driven changes. **Read actions** (listing findings, fetching a snippet, summarising posture) run silently with no confirmation prompt. They are safe by design: Cybe can only ever see what your account is already permitted to see. *** ## History and resuming a conversation The drawer header carries a **history icon** on the top-left. Clicking it slides the conversation list in: * Conversations are sorted by recency. * A search field lets you find a thread by title or message content. * Click a conversation to load it; Cybe re-anchors to the scope it was created with. Cybe also has a small **context-resume** behaviour: when you reopen the drawer on the same page you were on previously, Cybe offers to resume the matching conversation instead of starting a new one. Decline the offer and a fresh thread is created. *** ## Memory and preferences (GDPR) Cybe stores two kinds of memory about you: * **Conversations** — every thread you start, retained until you delete it. * **Preferences** — the last conversation you opened, whether the drawer should auto-open on dashboard load, and small UI hints. *No content from your messages is ever stored as a "preference"*. A **settings panel** inside the drawer (gear icon) lets you: * See a sanitised summary of every memory entry Cybe holds about you. * Toggle preferences (auto-open, default scope, etc.). * **Permanently delete** a single memory entry. The deletion is immediate; there is no soft-delete or background queue. If you want to wipe **everything**, contact your CybeDefend admin or use the account-deletion workflow in the dashboard — those flows clear all of Cybe Chat's memory in the same transaction. See [LLM usage privacy](/latest/plateform-overview/security-privacy/llm-usage-privacy) for the full policy on what Cybe Chat does and does not send to a model. *** ## Feedback on Cybe's answers Below every Cybe response, a small **thumbs-up / thumbs-down** pair appears. * **Thumbs-up** marks the answer as helpful. No follow-up panel. * **Thumbs-down** opens a tag picker: * `Wrong verdict` — Cybe drew the wrong conclusion (e.g., marked exploitable when it isn't). * `Missing context` — Cybe should have looked at something it didn't. * `Inaccurate` — factual error in the answer. * `Ambiguous` — the answer was not clear enough. * `Incomplete` — Cybe stopped short. * `Off-topic` — Cybe answered a different question. * Optional free-text correction field at the bottom. Submitted feedback is visible to your account admin and feeds into Cybe's evaluation harness. *** ## Error banners and quota If something goes wrong — service unavailable, plan quota exceeded, downstream rate limit — a **red banner** appears below the chat header. The banner shows: * A short error title (e.g., *"Quota exceeded"*, *"Service unavailable"*). * A dismissible `×` button. * When relevant, a link to the billing or support page. Cybe Chat is **rate-limited per user** to protect the platform: 15 requests per 60-second window on the streaming endpoint. Burst above that and you will see a `THROTTLED` banner; wait a few seconds and resume. Other common banners: | Banner | What it means | What to do | | --------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------ | | `QUOTA_EXCEEDED` | Your plan's monthly AI budget is consumed. | Upgrade plan, or wait for the next billing cycle. | | `PERMISSION_DENIED` | Cybe tried to read or write a resource you no longer have access to. | Check with the project owner; if you regained access, retry. | | `SERVICE_UNAVAILABLE` | The MCP or LLM backend is degraded. | Retry in a few seconds. | | `BAD_REQUEST` | Your prompt was malformed or under 5 characters. | Rephrase and resend. | *** ## Cybe Chat vs Cybe MCP vs Security Champion It is easy to confuse the three Cybe assistants. They share toolsets and authorization, but they sit in different surfaces: | Surface | What it does | Where it lives | | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | **Cybe Chat** | Cross-project posture, in-dashboard actions with HITL approval, memory across sessions. | The CybeDefend dashboard, no setup needed. | | **Cybe MCP** | The same 18 typed tools, exposed to your AI coding assistant. The agent in your IDE reads findings and proposes status changes from there. | Your IDE: Claude Code, Cursor, VS Code Copilot Chat, Windsurf, JetBrains, etc. See the [setup guide](/latest/agent-ai-integration/cybe-mcp). | | **Cybe Security Champion** | Conversation about a project's **code**: how to fix a finding, what a pattern means, why a CVE matters in this repo's architecture. Backed by the project's knowledge graph. | Inside a finding detail page, and via the `get_business_logic_context` tool in MCP / Cybe Chat. | Rough rule of thumb: * "**What is exposed across our portfolio?**" → Cybe Chat. * "**Fix this finding in my codebase, right now**." → Cybe MCP in your IDE. * "**Help me understand this finding**." → Security Champion. *** ## Troubleshooting The chat button is a floating element. If a corporate browser extension or content-security-policy overlay strips it, you may not see the button. Try a private window or a different browser, and report it to your CybeDefend admin. Permify is the source of truth. Open the project page directly in another tab — if you can't reach it manually, you don't have the scope either. Ask the project owner to grant you access; Cybe will see the new project on the next prompt without needing a refresh. Cybe re-checks your scope at confirmation time. If your access was revoked between the moment Cybe proposed the action and the moment you clicked Confirm, the write is refused. This is by design — there is no race condition where a stale scope can mutate data. Cybe streams via SSE. A network hiccup, a quota event, or a corporate proxy that buffers SSE poorly will surface as a red banner. Reopen the thread, ask Cybe to continue from where it stopped, or retry the prompt. The settings panel deletes entries one by one. To wipe everything in a single step, use the account-deletion workflow (Dashboard → Profile → Delete account) or contact your tenant admin. Both flows clear all Cybe Chat memory in the same transaction. *** ## Related docs The product pitch, where Cybe Chat sits in the platform. Bring the same toolset into your IDE. Project-specific code consultation, the third Cybe assistant. What Cybe Chat sends to a model, what it stores, and how to delete it. # Cybe MCP, connect every AI agent Source: https://docs.cybedefend.com/latest/agent-ai-integration/cybe-mcp Step-by-step setup for Claude Code, Claude Desktop, Cursor, VS Code Copilot Chat, Windsurf, Continue, Cline, Zed and any MCP-compatible client. Browser-only OAuth, two regional URLs, 18 typed tools. **Browser sign-in, no API key.** Cybe MCP uses OAuth 2.1 with Dynamic Client Registration (RFC 7591). When you add the URL to your AI assistant, the assistant opens your browser, you sign in to CybeDefend exactly the way you sign in to the dashboard, and the agent receives a Bearer JWT scoped to your account. No PAT to manage. No local proxy. No `.env` to rotate. **Want this done in one command?** [VibeDefend](/latest/agent-ai-integration/vibedefend) registers this MCP server for Claude Code, Cursor, Codex, Windsurf and VS Code Copilot — and wires the hook layer (rules before each edit, action guards, session-end gap analysis) — in a single `npx` install. This page is the manual setup, and the reference for the tools VibeDefend connects on your behalf. *** ## The two endpoints Pick the URL that matches the region your CybeDefend tenant lives in: | Region | URL | Backed by | | ------ | ----------------------------------- | --------------------------------------------------------------------------------- | | EU | `https://mcp-eu.cybedefend.com/mcp` | EU tenant (Scaleway, Paris). GDPR / NIS2 / DORA-aligned. | | US | `https://mcp-us.cybedefend.com/mcp` | US region (Google Cloud). Controls aligned with SOC 2, Type II audit in progress. | You can only sign in to the region that hosts your account. If you're not sure which one you signed up on, look at the URL of the dashboard you log into (`eu.cybedefend.com` vs `us.cybedefend.com`) and pick the matching MCP host. *** ## Setup per AI assistant Most modern MCP clients accept the URL directly and walk you through the OAuth handshake. The snippets below show the canonical config file for each client; substitute the EU URL with the US one if your tenant is in the US region. ### Claude Code The CLI client supports `claude mcp add` for one-shot configuration: ```bash theme={null} # EU region claude mcp add --transport http cybedefend https://mcp-eu.cybedefend.com/mcp # US region claude mcp add --transport http cybedefend https://mcp-us.cybedefend.com/mcp ``` The first time the agent calls a Cybe tool, Claude Code opens a browser tab on `mcp-eu.cybedefend.com/oauth/authorize`, you sign in (or it auto-completes if your dashboard session is already alive), and the token is cached locally by the client. After that, the agent calls Cybe tools transparently in every session. Verify it landed: ```bash theme={null} claude mcp list # cybedefend · connected · 18 tools ``` ### Claude Desktop Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS), or the equivalent on Windows / Linux, and add: ```json theme={null} { "mcpServers": { "cybedefend": { "transport": { "type": "http", "url": "https://mcp-eu.cybedefend.com/mcp" } } } } ``` Restart Claude Desktop. The first tool call opens the OAuth page in your default browser. ### Cursor Cursor reads `~/.cursor/mcp.json` (global) or `/.cursor/mcp.json` (per-project). Drop: ```json theme={null} { "mcpServers": { "cybedefend": { "url": "https://mcp-eu.cybedefend.com/mcp" } } } ``` Open Cursor's Command Palette and run **MCP: Reload servers**. Cursor opens the OAuth page on the first tool call and persists the token. ### VS Code Copilot Chat Recent versions of VS Code Copilot Chat support MCP via `/.vscode/mcp.json`: ```json theme={null} { "servers": { "cybedefend": { "type": "http", "url": "https://mcp-eu.cybedefend.com/mcp" } } } ``` Run **MCP: Reload servers** from the Command Palette. The first call triggers the OAuth flow. ### Windsurf Windsurf's MCP config lives at `~/.codeium/windsurf/mcp_config.json`: ```json theme={null} { "mcpServers": { "cybedefend": { "serverUrl": "https://mcp-eu.cybedefend.com/mcp" } } } ``` Reload Windsurf. Same OAuth-on-first-call flow. ### Continue · Cline · Zed · any other MCP client Any client that follows the [MCP Streamable HTTP transport](https://modelcontextprotocol.io/specification) spec works. Three things to give the client: 1. **URL**: `https://mcp-eu.cybedefend.com/mcp` (or `mcp-us`) 2. **Transport**: HTTP / Streamable 3. **Auth**: OAuth 2.0. The client should auto-discover via `/.well-known/oauth-protected-resource` and `/.well-known/oauth-authorization-server`, then perform Dynamic Client Registration on `/oauth/register`. Modern MCP clients implement this out of the box. *** ## What the OAuth flow looks like ```text theme={null} 1. Agent → GET https://mcp-eu.cybedefend.com/.well-known/oauth-protected-resource ← { authorization_servers: ["https://mcp-eu.cybedefend.com"], … } 2. Agent → GET https://mcp-eu.cybedefend.com/.well-known/oauth-authorization-server ← { authorization_endpoint, token_endpoint, registration_endpoint, … } 3. Agent → POST https://mcp-eu.cybedefend.com/oauth/register (RFC 7591 DCR) ← { client_id } 4. Agent opens the browser: https://mcp-eu.cybedefend.com/oauth/authorize?client_id=…&redirect_uri=…&code_challenge=… You sign in to CybeDefend (or the page auto-completes if the session is alive). 5. Browser redirects back to the agent's local callback (a loopback URI on localhost / 127.0.0.1 with a high port) carrying an authorization code. 6. Agent → POST https://mcp-eu.cybedefend.com/oauth/token ← { access_token: , refresh_token, expires_in } 7. Agent → POST https://mcp-eu.cybedefend.com/mcp with `Authorization: Bearer ` ← MCP session opens, tool calls flow through. ``` The DCR step only accepts loopback redirect URIs (RFC 8252), which is what every native MCP client uses. The Bearer token in step 6 is a Logto-issued JWT. Every tool call after that lands on the CybeDefend Gateway, where Permify checks your per-project permissions exactly as it does for the dashboard. Your project-level access is authoritative; the MCP server enforces nothing of its own. *** ## The 18 tools All tools share the same shape: a typed JSON schema the agent's planner can reason about, and every one requires `projectId`. The two exceptions need a second argument: `get_business_logic_context` requires `user_intent` (a free-text description of what the agent is about to do), and `get_similar_vulnerabilities` requires `vulnerabilityId`. Every response carries the same finding identifier the dashboard uses, so an agent action and a human action on the same finding land in the same audit trail. ### Read | Tool | Returns | | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `get_project_overview` | Severity counts per scanner plus last-scan trend. | | `get_branches` | Distinct branches that have findings on this project. | | `list_vulnerabilities_sast` | Paginated SAST findings. Filters: `severity`, `status`, `priority`, `language`, `searchQuery`, `branch`, `hasAutofix`. | | `get_vulnerability_sast` | Single SAST finding with code snippet, file path, line, taint sink. | | `list_vulnerabilities_sca` | Paginated SCA findings. Filters: `severity`, `status`, `priority`, `packageType`, `language`, `searchQuery`, `branch`, `hasAutofix`. | | `get_vulnerability_sca` | Single SCA finding with affected package, version, suggested bump. | | `list_sca_packages` | Full package tree for the project (direct, dev, transitive). | | `list_vulnerabilities_iac` | Paginated IaC findings with the standard filter set. | | `get_vulnerability_iac` | Single IaC finding with the file and resource block that produced it. | | `list_vulnerabilities_cicd` | Paginated CI/CD findings. | | `get_vulnerability_cicd` | Single CI/CD finding with the workflow file and step. | | `list_vulnerabilities_secret` | Paginated secret-leak findings. | | `get_vulnerability_secret` | Single secret finding with provider, location, validation status. | | `list_vulnerabilities_container` | Paginated container findings with runtime context. | | `get_vulnerability_container` | Single container finding with image layer and base image info. | | `get_similar_vulnerabilities` | Returns a vulnerability alongside its similar occurrences across the project. Required: `projectId`, `vulnerabilityId`. Optional: `pathFilter`. Useful to apply a single status change to a class of look-alike findings. | ### Write | Tool | Effect | | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `update_vulnerability` | Set status (`to_verify`, `confirmed`, `resolved`, `ignored`), set priority (`critical_urgent`, `urgent`, `normal`, `low`, `very_low`), or attach a comment. Audit-logged. | ### Context | Tool | Returns | | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `get_business_logic_context` | Calls Cybe Security Champion. Returns the project-specific rules mined from the repo (tenant scope, refund caps, idempotency keys, audit patterns), formatted as a system prompt the agent can inline before generating code. Required: `projectId`, `user_intent`. Optional: `branch` (defaults to `main`). The first call against a project is slower because Security Champion is building the knowledge graph; subsequent calls in the same session reuse it. | *** ## Example prompts Once connected, you can drive the platform from the agent's chat: | Prompt | Tools the agent calls | | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | "Show critical SAST findings on the `develop` branch." | `list_vulnerabilities_sast` (severity=critical, branch=develop) | | "Open finding `vs_8a3b` and tell me what's exploitable." | `get_vulnerability_sast` | | "Mark every SQLi in `/api/users` as `resolved`, comment 'fixed by parameterised query helper'." | `get_similar_vulnerabilities` then `update_vulnerability` | | "Are there any leaked secrets in this project?" | `list_vulnerabilities_secret` | | "I'm about to add `/payments`. What rules does this project enforce?" | `get_business_logic_context` | | "Walk me through every package in our SCA tree, sorted by CVE count." | `list_sca_packages` plus `list_vulnerabilities_sca` | | "Trend on critical findings for the last 7 days." | `get_project_overview` | The agent picks the right tool. You don't have to know the schemas. *** ## Pinning a default project Most agents let you set environment variables on the MCP server entry. Cybe MCP doesn't require any (auth is OAuth, not env-based), but you can pin a default project so the agent doesn't ask you for `projectId` on every call. The convention varies per client. For clients that respect a top-level `env` block: ```json theme={null} { "mcpServers": { "cybedefend": { "url": "https://mcp-eu.cybedefend.com/mcp", "env": { "CYBEDEFEND_PROJECT_ID": "" } } } } ``` If your client doesn't forward env vars to MCP servers (Claude Desktop, for instance), prompt-pin instead. Drop a sentence at the top of your system prompt: *"Always call CybeDefend tools with `projectId: ` unless the user names a different project."* *** ## Troubleshooting Make sure your AI assistant is allowed to open `https://mcp-eu.cybedefend.com` (or `mcp-us`). Some corporate networks block dynamic client registration on first contact. The call is to `/oauth/register`. Whitelist the host. The Bearer JWT expired (default lifetime is short for security). Modern MCP clients silently refresh on `401`. If yours doesn't, sign out and back in via the agent's MCP server panel. Your CybeDefend account doesn't have the Permify scope to read that project. Permify is the source of truth. Ask the project owner to grant you access via the dashboard, the MCP will reflect the change immediately on the next call. Expected. Security Champion is building the knowledge graph from your codebase the first time it sees a project. Subsequent calls in the same session reuse the cached graph. If you regularly want fresh context, trigger a re-index from the dashboard's project settings. The MCP server URL must be reachable from the agent's machine. For air-gapped environments, contact us about an on-premise deployment of mcp-service alongside Logto and the CybeDefend Gateway. The same image we ship to Scaleway is available for self-hosting. *** ## What if I just want a REST API instead? Cybe MCP is a thin transport layer in front of the CybeDefend Gateway REST API. Every MCP tool maps to a Gateway endpoint, so if your agent doesn't speak MCP, or if you're scripting outside an agent context, you can hit the same data over plain HTTP. See the [API Reference](/latest/api-reference/introduction) for the full surface. Auth in that flow is via Personal Access Token rather than browser OAuth. *** ## Related docs Skip the manual config — install this MCP plus the hook layer for every detected agent in one command. The product-level pitch and where MCP sits in the platform. The same MCP toolset, surfaced as an in-dashboard assistant with HITL approvals and cross-project posture. The agent behind `get_business_logic_context`. The fix-generation pipeline the agent triggers via `update_vulnerability` workflows. Direct REST surface, for non-MCP clients. # Cybe Security Champion Source: https://docs.cybedefend.com/latest/agent-ai-integration/cybe-security-champion-detail How to use Cybe Security Champion to chat with your vulnerabilities and codebase for instant security insights. Cybe Security Champion is your AI-powered security expert that provides instant, context-aware guidance about your vulnerabilities and codebase through an interactive chat interface. *** ## What is a Security Champion? In traditional organizations, a **Security Champion** is a designated expert—typically a senior developer with security expertise—who serves as the bridge between development teams and security departments. ### The Traditional Challenge Human Security Champions face limitations: * **Limited Availability**: One person covering multiple teams * **Knowledge Bottlenecks**: Development slows when unavailable * **Scaling Issues**: Can't maintain recommended 1:10 ratio as teams grow * **Timezone Gaps**: Not available 24/7 ### The Cybe Solution Cybe Security Champion gives **every developer** their own AI security expert: * **24/7 Availability**: Always ready to help * **Instant Responses**: No waiting in queue * **Unlimited Capacity**: Serves all developers simultaneously * **Consistent Expertise**: Same level of guidance for everyone *** ## How It Works ### Knowledge Graph Foundation Cybe Security Champion leverages our proprietary **knowledge graph** created from your parsed codebase. This enables: * **Full codebase understanding**: Knows your architecture, dependencies, and patterns * **Context-aware responses**: Answers specific to your code, not generic advice * **Accurate analysis**: Zero hallucinations thanks to stored code context **Code is stored in your selected sovereign cloud** (EU or US) to enable these capabilities. This ensures zero hallucinations and optimal performance while maintaining strict data residency. *** ## Configuration ### Requirements **Cybe Security Champion requires**: * **Cybe Analysis must be enabled** (for code parsing and knowledge graph) * Project must be scanned at least once * Code is stored in your sovereign cloud region if security champion's option is enabled ### Enable Cybe Security Champion 1. Navigate to **Project Settings** 2. Ensure **Cybe Analysis is enabled** 3. Find the **Cybe Security Champion** section 4. Toggle **Enable Cybe Security Champion** 5. Save your settings Once enabled, you can start chatting with your vulnerabilities and codebase immediately. *** ## Using Cybe Security Champion Chat with a Vulnerability ### Chat with Vulnerabilities Click the **chat icon** on any vulnerability to: * Ask about exploitation scenarios * Understand the vulnerability's context in your code * Get remediation suggestions specific to your architecture * Learn why this vulnerability exists and how to prevent it **Example questions:** * "How can this SQL injection be exploited in our application?" * "What's the business impact if this vulnerability is exploited?" * "Show me the data flow that leads to this XSS issue" ### Chat with Your Codebase Open the general **Cybe Security Champion chat** to: * Ask questions about your application's security posture * Find specific security patterns in your code * Understand how different components interact * Get security recommendations for new features **Example questions:** * "Where are we validating user input in the authentication flow?" * "Show me all database queries that use user-supplied data" * "What security best practices should I follow for our payment module?" *** ## What You Can Do ### Interactive Security Consultation Have natural language conversations about: * **Specific vulnerabilities**: Deep dive into findings * **Code patterns**: Understand security implications * **Best practices**: Learn secure coding for your stack * **Architecture decisions**: Evaluate security trade-offs ### Proactive Learning Every interaction educates: * **Why vulnerabilities occur**: Understand root causes * **How to prevent them**: Learn prevention techniques * **Security principles**: Build security knowledge over time ### Project-Specific Guidance Unlike generic security advice, Cybe Security Champion provides insights tailored to: * Your application's architecture * Your technology stack * Your specific dependencies * Your business logic *** ## Data Privacy ### Read-Only Access Cybe Security Champion has **read-only access** to your code through specialized tools. It **cannot**: * Modify your code * Execute commands * Access external systems * Share data outside your region ### Sovereign Storage Your code is stored in your selected cloud region (EU or US) and: * Remains within your geographical boundary * Complies with regional data regulations * Is never used for model training * Can be deleted when Cybe Security Champion is disabled *** ## Limitations When Cybe Security Champion is **disabled**: * Cannot chat with vulnerabilities * Cannot chat with codebase * Code is removed from storage *** ## Requirements * ✅ Cybe Analysis enabled (for code parsing) * ✅ Project scanned at least once * ✅ Code stored in sovereign cloud * ✅ Sufficient Cybe Security Champion credits in your subscription *** **Related:** [Cybe Analysis](/latest/agent-ai-integration/cybe-analysis-detail) · [Cybe AutoFix](/latest/agent-ai-integration/cybe-autofix-detail) · [LLM Usage & Privacy](/latest/plateform-overview/security-privacy/llm-usage-privacy) · [AI Usage Tracking](/latest/plateform-overview/plan-&-pricing/ai-usage-tracking) # VibeDefend, one command to wire every agent Source: https://docs.cybedefend.com/latest/agent-ai-integration/vibedefend VibeDefend is the one-shot installer that connects Claude Code, Cursor, OpenAI Codex, Windsurf and VS Code Copilot to CybeDefend. It registers the MCP server and the hook layer in a single command — business and security rules land in the agent's context before each edit, dangerous actions are hard-blocked, and a gap analysis catches undocumented rules at the end of substantive sessions. npx one-liner, macOS / Linux / Windows, Node ≥ 18.17. **VibeDefend is the automated path to Cybe MCP — plus everything around it.** The [Cybe MCP](/latest/agent-ai-integration/cybe-mcp) page walks you through adding the MCP URL to each client by hand. VibeDefend does that for you, and goes further: it wires a **hook layer** so the right business and security rules arrive in the agent's context *at the moment it edits code*, hard-blocks denied actions, and runs a gap analysis at the end of each substantive session. One command, every detected agent. *** ## Install ```bash theme={null} npx -y @cybedefend/vibedefend@latest install ``` Works on **macOS, Linux and Windows** — PowerShell, cmd, bash, zsh, fish, Git Bash, pick any. Requires **Node 18.17 or later**, which most users already have because Claude Code / Cursor / Codex ship a bundled Node. The installer is fully interactive: pick a region, pick which agents to wire (they're auto-detected), confirm. That's it. Prefer a global install? ```bash theme={null} npm install -g @cybedefend/vibedefend && vibedefend install # pnpm and yarn work the same way ``` *** ## MCP alone vs. MCP + hooks Connecting the MCP server by hand (the [Cybe MCP](/latest/agent-ai-integration/cybe-mcp) flow) gives your agent a **passive** security backend: it can list findings, drill into a vulnerability, drive the status lifecycle and pull business-logic context — *when you ask it to*. VibeDefend adds the **active** layer on top. The hooks fire on the agent's own lifecycle events, so security shows up without anyone prompting for it: | Moment | What VibeDefend does | Why it matters | | --------------------------------------------------- | ----------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | | **Before an edit** (`Edit` / `Write` / `MultiEdit`) | Injects the business + security rules relevant to *this* change into the agent's context. | The agent writes secure, on-policy code from the first line instead of being corrected afterwards. | | **On any tool call** | **Action Guards** evaluate the call against your guard policy and hard-block on deny. | A `rm -rf`, a write to a protected path, or a fetch to a blocked host is stopped before it runs — not flagged after. | | **At session start** | Loads the CybeDefend doctrine and opens the **proposals inbox** (Accept / Reject picker). | The agent starts every session knowing your rules, and you clear pending rule proposals up front. | | **At session end** (`Stop`) | Runs a **gap analysis** once the session crosses the edit threshold. | Surfaces the business rules you relied on but never wrote down, and proposes them for review. | | **On long sessions** (`PreCompact`) | Same gap analysis, fired before the context window is compacted. | Long sessions don't lose their rule-gap review just because the transcript got summarised. | | **Per prompt** (Claude Code) | A lightweight doctrine backstop on every user prompt. | Keeps the CybeDefend flow intact even when another skill auto-activates and would otherwise take over the turn. | The MCP server is what the hooks call under the hood. VibeDefend installs both, so you get the tools *and* the moments that use them. *** ## Supported agents VibeDefend auto-detects and wires whichever of these you have installed. Unchecked agents stay untouched — re-run `vibedefend install` any time to toggle one on or off. | Capability | Claude Code | Cursor | OpenAI Codex | Windsurf | VS Code Copilot | | ------------------------------------------------------ | :---------: | :---------: | :----------: | :-----------------------: | :-------------: | | **MCP server install** | ✅ | ✅ | ✅ | ✅ | ✅ | | **Business + Security Rules** *(injected pre-edit)* | ✅ | ✅ | ✅ | ⚠️ writes only | ✅ | | **Action Guards** *(hard block on deny)* | ✅ all tools | ✅ all tools | ✅ all tools | ⚠️ writes + MCP fallback¹ | ❌ not yet wired | | **Session Start** *(loads doctrine + proposals inbox)* | ✅ | ✅ | ✅ | ⚠️ proxied² | ✅ | | **Session Review** *(end-of-session gap analysis)* | ✅ | ✅ | ✅ | ✅ | ✅ | | **PreCompact** *(long-session gap analysis)* | ✅ | ✅ | ❌ no event | ❌ no event | ✅ | | **Doctrine backstop** *(per-prompt reminder)* | ✅ | ❌ | ✱ via MCP³ | ❌ | ❌ | | **Min version** | latest | ≥ 1.7 | latest | latest | ≥ 1.110 | **Legend** — ✅ supported · ⚠️ supported with caveats · ❌ not exposed by the agent · ✱ alternate mechanism ¹ Windsurf's `pre_write_code` hook hard-blocks on file writes only. For non-write tool calls (Read / Bash / WebFetch) the installer drops a snippet into `.windsurfrules` instructing the agent to call `cybe_guards_check` via MCP before sensitive actions — soft enforcement that relies on the model following its rules file. ² Windsurf has no native SessionStart event. VibeDefend wires `pre_user_prompt`, which fires on every turn. The hook is idempotent and cheap (one GET to the proposals endpoint, returns "0 pending" once the inbox is empty), so the per-turn cost is negligible. ³ Codex follows the doctrine via the MCP server's `Server.instructions` field on each session, which removes the need for a per-prompt reminder hook. *** ## The install flow, step by step `vibedefend install` walks you through four prompts and then signs you in. Choose **Production — EU** or **Production — US**. VibeDefend registers an MCP server named `cybedefend` pointing at that region's endpoint and wires the hooks to call the matching Gateway — you never type a URL. The two regions are independent CybeDefend tenants; sign in to the one that hosts your account (`eu.cybedefend.com` vs `us.cybedefend.com`). VibeDefend prints a detection table (one row per agent, with a version badge) and a multi-select. Detected, supported agents are pre-checked; a version that's too old is shown disabled with an "update this client" hint; an agent you don't have yet is still selectable, so you can pre-wire hooks before you install it. Four questions, each with a tuned default: * **Enable the session-end gap analysis?** — default **on**. Without it, the gap analysis never runs. * **Edits threshold to trigger it?** — default **3**. Typos and one-line fixes won't fire it; a real feature will. Lower to `1` to fire on any session that had an edit, raise it if your team does frequent tiny commits in long sessions. * **Enable automatic background updates?** — default **on**. Hooks self-refresh so you never re-run install (see [Keeping VibeDefend current](#keeping-vibedefend-current)). * **Enable auto-propose mode?** — default **off** *(not recommended)*. Off means rule proposals need an explicit chat-side "yes". On means the agent drafts and pushes proposals without asking first — you still review them at the next session start. If VibeDefend has no stored credentials, it runs the login flow automatically: OAuth 2.0 Authorization Code + PKCE opens your browser to the CybeDefend sign-in page, receives the callback locally, and stores the token bundle in your OS keychain. If your browser already has a dashboard session, this completes instantly. The refresh token persists for 14 days. *** ## Link a project After install, drop one tiny file at the root of each repo you want monitored — a `.cybedefend/config.json` with your project UUID: ```json theme={null} { "projectId": "" } ``` Grab the UUID from the project page on the [EU dashboard](https://eu.cybedefend.com) or the [US dashboard](https://us.cybedefend.com). You can also override it per shell or per project with the `CYBEDEFEND_PROJECT_ID` environment variable. Because `.cybedefend/` is a **directory** here, the deprecated `.cybedefend` exclusion *file* cannot exist beside it — a path is either a file or a directory. Declare your SAST exclusions in [`.cybeignore`](/latest/code-scanning/scanning-options/cybedefend-ignore-file) at the repo root, or in `.cybedefend/ignore` next to `config.json`. *** ## Commands ```text theme={null} vibedefend install Set up MCP + hooks (interactive) vibedefend update Upgrade the binary if newer, then refresh hooks vibedefend update --self Upgrade only the CLI binary (don't touch hooks) vibedefend status Read-only install report (region, agents, API check) vibedefend doctor Diagnose the install and repair what's fixable vibedefend login (Re-)authenticate against the CybeDefend API vibedefend --help Full help ``` `vibedefend doctor` takes `--check` for a dry-run (report only, change nothing) and `--yes` to apply every fix without the confirmation prompt. `vibedefend login` takes `--force` to re-authenticate even when credentials are already stored. *** ## Keeping VibeDefend current At install you're asked **"Enable automatic background updates? (recommended)"**. Leave it on and you never update by hand: the SessionStart hook checks npm at most once a day and, when a newer version is published, upgrades `@cybedefend/vibedefend` in the background — the next session picks it up via the self-resolving runner shim. Opt out (or pin a version, or run in a locked-down environment) and you instead get a one-line nudge. To update manually at any time: ```bash theme={null} vibedefend update # upgrades the binary if newer, then refreshes hooks ``` (`vibedefend update --self` upgrades only the binary, without touching hooks.) **One-time bootstrap for installs older than 1.2.0.** Those versions shipped a *frozen* copy of the hook runner with no update logic, so `vibedefend update` alone can't upgrade the binary. Do it explicitly once: ```bash theme={null} npm i -g @cybedefend/vibedefend@latest # or: vibedefend update --self vibedefend update # render the self-resolving shim ``` After that, updates are hands-off (or one `vibedefend update`) as above. *** ## Tunables The gap-analysis threshold and auto-propose mode are chosen at install and stored in your VibeDefend config. To change them, re-run `vibedefend install` and answer the hook-config prompts again: | Setting | What it controls | | ---------------- | --------------------------------------------------------------------------------------------------------- | | Review threshold | Edits before the session-end gap analysis fires (default `3`; `1` fires on any session that had an edit). | | Auto-propose | Whether the agent proposes rules without asking first (default off). | One override is read live from the environment, so you can set it per shell or per project — handy when a repo's UUID differs from the default: | Variable | Effect | | ----------------------- | --------------------------------------------------------- | | `CYBEDEFEND_PROJECT_ID` | Override the project UUID from `.cybedefend/config.json`. | *** ## Codex setup gotcha Codex 0.131+ requires you to approve each hook from the `/hooks` panel **inside Codex** *before* it fires. After running `vibedefend install`, open Codex, run `/hooks`, and trust the `cybedefend` entries — until you do, the panel shows `Installed N / Active 0` and the hooks stay dormant. *** ## VibeDefend or the manual MCP setup? Both connect your agent to the same CybeDefend tenant. The difference is how much of the platform comes along. | | VibeDefend | [Manual MCP setup](/latest/agent-ai-integration/cybe-mcp) | | ---------------------------------------------- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | | **Setup** | One command, all detected agents at once | Edit each client's config file by hand | | **MCP tools** (read findings, triage, context) | ✅ | ✅ | | **Rules injected before each edit** | ✅ | — | | **Action Guards (hard block)** | ✅ | — | | **Session-end gap analysis** | ✅ | — | | **Best for** | Day-to-day coding where you want security in the loop automatically | Any MCP client VibeDefend doesn't auto-wire (Continue, Cline, Zed, Claude Desktop…), or when you only want the read/triage tools | You can also do both: run VibeDefend for the agents it supports and add the raw MCP URL by hand to any other client. *** ## Troubleshooting Codex gates hooks behind manual approval — see [Codex setup gotcha](#codex-setup-gotcha) above. Open Codex, run `/hooks`, and trust the `cybedefend` entries. Run `vibedefend status` for a read-only report of region, wired agents and a live API check, then `vibedefend doctor` to diagnose and repair what's fixable (`vibedefend doctor --check` reports without changing anything). Confirm the repo has a `.cybedefend/config.json` with a valid `projectId` — without a linked project the rule-fetch and gap-analysis hooks have nothing to call. Expected, once. Codex's MCP-scoped token (`aud: cybedefend-mcp`) has limited Permify rights and can't call the Gateway endpoints the runtime hooks use, which need a user token (`aud: cybedefend-api`). They aren't interchangeable. One Logto sign-in (instant if your browser already has a dashboard session) issues the right token; the refresh token then persists for 14 days. Decline the "automatic background updates" prompt at install (or it's disabled automatically when VibeDefend can't self-resolve a global install). You then get a one-line nudge when a new version ships and update on your own schedule with `vibedefend update`. Fully supported — no Git Bash or WSL required. The hook runner is a single bundled Node script that runs the same way on Linux, macOS and Windows. *** ## Related docs The manual setup and the full reference for the 18 MCP tools VibeDefend wires up for you. The product-level pitch and where the MCP layer sits in the platform. The agent behind the business-logic rules VibeDefend injects before each edit. The fix-generation pipeline the agent can drive once it's connected. # Accept invitation to organization Source: https://docs.cybedefend.com/latest/api-reference/endpoint/organization/accept-invitation-to-organization post /organization/invite/accept # Cancel organization invitation Source: https://docs.cybedefend.com/latest/api-reference/endpoint/organization/cancel-organization-invitation delete /organization/{organizationId}/invitation/{invitationId} # Create organization Source: https://docs.cybedefend.com/latest/api-reference/endpoint/organization/create-organization post /organization # Delete organization Source: https://docs.cybedefend.com/latest/api-reference/endpoint/organization/delete-organization delete /organization/{organizationId} # Get organization by ID Source: https://docs.cybedefend.com/latest/api-reference/endpoint/organization/get-organization-by-id get /organization/{organizationId} # Get organization invitations Source: https://docs.cybedefend.com/latest/api-reference/endpoint/organization/get-organization-invitations get /organization/{organizationId}/invitations # Get organization members Source: https://docs.cybedefend.com/latest/api-reference/endpoint/organization/get-organization-members get /organization/{organizationId}/members # Get organizations of user Source: https://docs.cybedefend.com/latest/api-reference/endpoint/organization/get-organizations-of-user get /organizations # Invite user to organization Source: https://docs.cybedefend.com/latest/api-reference/endpoint/organization/invite-user-to-organization post /organization/{organizationId}/invite # Remove member from organization Source: https://docs.cybedefend.com/latest/api-reference/endpoint/organization/remove-member-from-organization delete /organization/{organizationId}/member # Update organization Source: https://docs.cybedefend.com/latest/api-reference/endpoint/organization/update-organization put /organization/{organizationId} # Update organization member role Source: https://docs.cybedefend.com/latest/api-reference/endpoint/organization/update-organization-member-role put /organization/{organizationId}/member/role # Create a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/project/create-a-project post /team/{teamId}/project # Delete a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/project/delete-a-project delete /project/{projectId} # Get a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/project/get-a-project get /project/{projectId} # Get all projects of a team with pagination Source: https://docs.cybedefend.com/latest/api-reference/endpoint/project/get-all-projects-of-a-team-with-pagination get /team/{teamId}/projects # Get all projects of an organization with pagination Source: https://docs.cybedefend.com/latest/api-reference/endpoint/project/get-all-projects-of-an-organization-with-pagination get /organization/{organizationId}/projects # Update a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/project/update-a-project patch /project/{projectId} # Introduction Source: https://docs.cybedefend.com/latest/api-reference/introduction CybeDefend API Documentation for Application Security Analysis ## Welcome CybeDefend is an advanced API designed for application security analysis. It provides a comprehensive solution for managing users, organizations, and projects. With secure authentication and granular permission management, CybeDefend excels in static, dynamic, and Infrastructure as Code security analyses (SAST, DAST, IaC, etc.). ## Base URLs Requests are region-specific. Use the URL matching your organization's region: | Region | API base URL | | ------ | ------------------------------- | | EU | `https://api-eu.cybedefend.com` | | US | `https://api-us.cybedefend.com` | ## Authentication All API requests require a valid short-lived **JWT Bearer token** passed in the `Authorization` header: ``` Authorization: Bearer ``` Access tokens are obtained by exchanging a **Personal Access Token (PAT)** through the CybeDefend identity provider. *** ## Obtaining an Access Token (PAT → JWT) The exchange is performed against the region-specific authentication domain: | Region | Auth URL | | ------ | -------------------------------- | | EU | `https://auth-eu.cybedefend.com` | | US | `https://auth-us.cybedefend.com` | The token exchange requires the **CLI application ID** (`appId`). Only the CLI client is authorized to exchange a PAT for an access token — other clients (VS Code, IntelliJ) use a browser-based OAuth flow and have separate app IDs. ### Step 1 — Retrieve the CLI Application ID Fetch the current app IDs for your region: ```bash theme={null} # EU curl https://api-eu.cybedefend.com/client-apps # US curl https://api-us.cybedefend.com/client-apps ``` Example response: ```json theme={null} { "cli": { "appId": "fm90ay05zohu8fk2q45ms" }, "vscode": { "appId": "r84p1y100lf9hgvoey40c" }, "intellij": { "appId": "t40evldybv8uh97gsu7u1" } } ``` The CLI `appId` to use: | Region | CLI `appId` | | ------ | ----------------------- | | EU | `fm90ay05zohu8fk2q45ms` | | US | `7o6r9cvvi8um0kisvn7hm` | These values are provided as a reference. Always verify against the live `/client-apps` endpoint before using them — the app ID may change between releases. *** ### Step 2 — Exchange Your PAT for an Access Token Send a `POST` request to the `/oidc/token` endpoint of your region's auth domain, using the `urn:ietf:params:oauth:grant-type:token-exchange` grant type: ```bash EU theme={null} curl -X POST https://auth-eu.cybedefend.com/oidc/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \ -d "client_id=fm90ay05zohu8fk2q45ms" \ -d "subject_token=YOUR_PAT" \ -d "subject_token_type=urn:logto:token-type:personal_access_token" \ -d "resource=https://api-eu.cybedefend.com" ``` ```bash US theme={null} curl -X POST https://auth-us.cybedefend.com/oidc/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \ -d "client_id=7o6r9cvvi8um0kisvn7hm" \ -d "subject_token=YOUR_PAT" \ -d "subject_token_type=urn:logto:token-type:personal_access_token" \ -d "resource=https://api-us.cybedefend.com" ``` Example response: ```json theme={null} { "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...", "token_type": "Bearer", "expires_in": 3600, "scope": "openid profile email" } ``` *** ### Step 3 — Call the API Use the `access_token` from the response as a Bearer token in all subsequent requests: ```bash theme={null} curl https://api-eu.cybedefend.com/organizations \ -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..." ``` Access tokens expire after 10 minutes. Repeat the exchange in Step 2 to obtain a fresh token. *** ## API Key — Deprecated **API Keys are fully deprecated and no longer functional.** The `X-API-Key` header and all API key-based authentication have been removed. Please use Personal Access Tokens (PAT) as described above. # Azure DevOps Server Setup for Local Code Scanning Source: https://docs.cybedefend.com/latest/code-scanning/ci-cd-integrations/azure-devops-server-setup Use the CybeDefend CLI to integrate local scans into an on-prem Azure DevOps Server pipeline. Run **CybeDefend** scans in your on-prem **Azure DevOps Server** pipeline, maintaining code on your own infrastructure while benefiting from automated security checks. ## Prerequisites * **Personal Access Token (PAT)**: [Create one](/latest/code-scanning/local-code-scanning/introduction-api-key) in your CybeDefend profile and store it as `CYBEDEFEND_PAT` in Azure DevOps. * **Agent Permissions**: Ensure your self-hosted agent can install or run the CybeDefend CLI. * **Azure DevOps Access**: Sufficient rights to modify your pipeline definition. Make sure the agent’s OS matches one of our supported CLI binaries (Windows, Linux, or macOS). *** ## Example azure-pipelines.yml ```yaml theme={null} trigger: - main pool: vmImage: 'ubuntu-latest' steps: - checkout: self - script: | curl -L https://github.com/CybeDefend/cybedefend-cli/releases/download/v1.0.0/cybedefend-linux-amd64 -o cybedefend chmod +x cybedefend sudo mv cybedefend /usr/local/bin/ displayName: 'Install CybeDefend CLI' - script: | cybedefend scan --dir . \ --ci \ --project-id $(CYBEDEFEND_PROJECT_ID) displayName: 'Run CybeDefend Scan' env: CYBEDEFEND_PAT: $(CYBEDEFEND_PAT) ``` ### Explanation 1. **checkout: self**\ Ensures your code is present on the build agent. 2. **Download & Install**\ Grabs the CLI binary, grants permissions, and moves it to `/usr/local/bin`. 3. **Run the Scan**\ The `--ci` flag keeps the output minimal. We rely on environment variables for the API key and project ID. *** ## Viewing Scan Results 1. **CLI Output**\ The console output shows a summary of detected issues. 2. **CLI “results”**\ If you want more detail in the pipeline logs, add a step: ```yaml theme={null} - script: | cybedefend results --project-id $(CYBEDEFEND_PROJECT_ID) --all --output sarif displayName: 'Fetch Results in SARIF' ``` 3. **CybeDefend Dashboard**\ Login to your CybeDefend account to see a full vulnerability breakdown. Large repos can take extra time to upload. Ensure your pipeline has enough timeout for the scan process. For advanced gating, fail the job if a certain severity is found. Combine --ci with parsing the CLI exit codes or vulnerability count from the JSON output. # Bamboo Setup for Local Code Scanning Source: https://docs.cybedefend.com/latest/code-scanning/ci-cd-integrations/bamboo-setup Use CybeDefend local scanning in your Atlassian Bamboo pipeline, either via Docker or binary installation. **Bamboo** (from Atlassian) can run **CybeDefend** local scans to keep your code private. Whether you’re using Docker tasks or an executable on the agent, you’ll upload only the minimal data to CybeDefend for analysis. ## Prerequisites * **Personal Access Token (PAT)**: Create one via [Personal Access Tokens (PAT)](/latest/code-scanning/local-code-scanning/introduction-api-key) and store it in **Plan Variables** (e.g. `CYBEDEFEND_PAT`). * **Branch Target**: We advise scanning only your main branch to prevent mixing partial or experimental features. Make sure your build agent has sufficient disk space, since the CLI zips your code locally before upload. *** ## Option 1: Docker-Based Task If your Bamboo agent supports Docker: 1. **Add a “Source Code Checkout” Task**\ Ensures your repository is cloned into the workspace. 2. **Docker Task** * **Command**: “Run a Docker container” * **Image**: `cybedefend/local-scanner:latest` * **Container Command**: ```bash theme={null} cybedefend scan . \ --project-id ${bamboo.CYBEDEFEND_PROJECT_ID} \ --ci ``` 3. **Save & Run**\ On the first run, if the project doesn’t exist yet in CybeDefend, it will be created automatically.

Under Plan Configuration > Repositories, limit builds to main or your default branch for consistent, consolidated vulnerability data.

*** ## Option 2: Executable Capability 1. **Download Binary**\ Place the `cybedefend` CLI on the Bamboo agent(s). Mark it executable (`chmod +x cybedefend`). 2. **Agent Capability** * In Bamboo, go to **Build Resources → Agents**. * Select the agent, add an **Executable** capability (e.g. label: “CybeDefend CLI,” path: `/usr/local/bin/cybedefend`). 3. **Plan → Tasks** * Add a **Command** task. * Under **Executable**, choose “CybeDefend CLI.” * **Argument field**: ```bash theme={null} scan . --project-id ${bamboo.CYBEDEFEND_PROJECT_ID} --ci ``` If your code is large, consider ignoring extraneous directories to speed up scanning (e.g., node\_modules, vendor, or build artifacts). *** ## Checking Results * **Bamboo Logs**: Check logs for a summary. * **Extra Command**: ```bash theme={null} cybedefend results --project-id ${bamboo.CYBEDEFEND_PROJECT_ID} --output html ``` * **CybeDefend Dashboard**: Full details on vulnerabilities, severity, and recommended fixes. If you plan to gate releases, parse the CLI exit code or use --fail-on if we offer that feature for gating merges. You can also define global variables for CYBEDEFEND\_PAT to reuse across multiple plans or projects. # Bitbucket Pipeline Setup for Local Code Scanning Source: https://docs.cybedefend.com/latest/code-scanning/ci-cd-integrations/bitbucket-pipeline-setup Run the CybeDefend CLI in Bitbucket Pipelines to securely upload and scan your repository code. Use **Bitbucket Pipelines** to automate local scanning with the CybeDefend CLI. This approach is ideal if you want to keep direct repository access closed and rely on your pipeline to handle code uploads. ## Prerequisites * **Personal Access Token (PAT)**: [Create it](/latest/code-scanning/local-code-scanning/introduction-api-key) and store in Bitbucket's **Repository Settings → Pipelines → Repository Variables** (e.g., `CYBEDEFEND_PAT`). * **Bitbucket Pipelines**: Enable pipelines in your repository. *** ## Example bitbucket-pipelines.yml ```yaml theme={null} image: ubuntu:latest pipelines: default: - step: name: CybeDefend Local Scan caches: - apt script: - apt-get update && apt-get install -y curl - curl -L https://github.com/CybeDefend/cybedefend-cli/releases/download/v1.0.0/cybedefend-linux-amd64 -o cybedefend - chmod +x cybedefend - mv cybedefend /usr/local/bin/ - cybedefend scan --dir . --ci --project-id $CYBEDEFEND_PROJECT_ID ``` ### Explanation 1. **image**\ `ubuntu:latest` is sufficient for installing cURL and the CLI. 2. **Install CLI**\ Similar approach as other platforms. 3. **Run the Scan**\ Use environment variables `$CYBEDEFEND_PAT` and `$CYBEDEFEND_PROJECT_ID` defined in Bitbucket's pipeline settings. You can add advanced steps, such as storing results in artifacts or gating merges based on severity thresholds. *** ## Where to Check Results 1. **Pipeline Logs**: The CLI’s console output shows a summary. 2. **Local Results**: Optionally fetch `sarif` or `html` outputs in subsequent steps: ```bash theme={null} cybedefend results --project-id $CYBEDEFEND_PROJECT_ID --output html --filename bitbucket-scan.html ``` 3. **CybeDefend Dashboard**: Provides a deeper analysis of all vulnerabilities discovered. Bitbucket Pipelines may have build minute limitations. Ensure your scans complete within your pipeline’s allotted time. For huge codebases, consider partial scans or artifact caching to reduce pipeline duration. # CircleCI Setup for Local Code Scanning Source: https://docs.cybedefend.com/latest/code-scanning/ci-cd-integrations/circleci-setup Implement CybeDefend local scanning in your CircleCI pipeline without granting direct repo access. **CircleCI** pipelines can run **CybeDefend** local scans by either installing the CLI or using Docker. This approach ensures your code is scanned **within** your pipeline, and only relevant data is uploaded to CybeDefend. ## Prerequisites 1. **Personal Access Token (PAT)**\ Create one via [Personal Access Tokens (PAT)](/latest/code-scanning/local-code-scanning/introduction-api-key). Store it in **Project Settings → Environment Variables** (e.g. `CYBEDEFEND_PAT`). 2. **Branch Filters**\ We recommend scanning only the main (or production) branch to avoid mixing partial results. *** ## Docker Example **.circleci/config.yml**: ```yaml theme={null} version: 2.1 jobs: cybedefend-scan: docker: - image: cybedefend/local-scanner:latest steps: - checkout: path: my-app - run: name: "Run CybeDefend scan" command: | cybedefend scan my-app \ --project-id $CYBEDEFEND_PROJECT_ID \ --ci workflows: local-security-workflow: jobs: - cybedefend-scan: filters: branches: only: - main ``` ### Explanation * **docker**: We use the prebuilt `cybedefend/local-scanner:latest` image. * **checkout**: CircleCI’s built-in step to fetch code into `my-app`. * **cybedefend scan**: Zips and uploads your code, referencing environment variables for the key and project ID. You can also run cybedefend results in a follow-up step to retrieve a SARIF or HTML report. *** ## Alternative: CLI Binary If you prefer your own Docker or machine executor: ```yaml theme={null} version: 2.1 jobs: cybedefend-scan: docker: - image: ubuntu:latest steps: - checkout - run: name: Install CybeDefend CLI command: | curl -L https://github.com/CybeDefend/cybedefend-cli/releases/download/v1.0.0/cybedefend-linux-amd64 -o cybedefend chmod +x cybedefend mv cybedefend /usr/local/bin/ - run: name: Run Local Scan command: | cybedefend scan --dir . \ --project-id $CYBEDEFEND_PROJECT_ID \ --ci ``` Large codebases can require extra CPU/RAM. If you hit resource limits, upgrade your CircleCI plan or use a larger resource class. For advanced gating, parse the CLI exit code or scan summary to fail the job on critical issues. # GitHub Action Setup for Local Code Scanning Source: https://docs.cybedefend.com/latest/code-scanning/ci-cd-integrations/github-action-setup Integrate CybeDefend local scans into your GitHub Actions workflow using the official CybeDefend Action. By default, CybeDefend can scan GitHub repos in the cloud. If you prefer **not** to grant direct GitHub access, you can run local scans in your **GitHub Actions** pipeline, uploading code to CybeDefend yourself. The easiest way to achieve this is by using the official **CybeDefend GitHub Action**. ## Prerequisites * **Personal Access Token (PAT)**: [Create and store](/latest/code-scanning/local-code-scanning/introduction-api-key) it in your repository's **Settings → Secrets** → **Actions** (e.g., `CYBEDEFEND_PAT`). * **Project ID**: You should also store your CybeDefend Project ID as a secret (e.g., `CYBEDEFEND_PROJECT_ID`). The `api_key` input is deprecated. Use `token` with a Personal Access Token (PAT) instead. *** ## Using the CybeDefend Action The [CybeDefend Action](https://github.com/CybeDefend/cybedefend-action) runs security scans easily in your CI/CD pipelines using the official CybeDefend CLI, powered by Docker (`ghcr.io/cybedefend/cybedefend-cli:latest`). ### Inputs | Name | Description | Required | Default | | ------------ | --------------------------- | -------- | ------- | | `token` | Personal Access Token (PAT) | ✅ | | | `project_id` | Project ID for the scan | ✅ | | ### Example Workflow: `.github/workflows/cybedefend-scan.yml` Add the following steps to your workflow file: ```yaml theme={null} name: CybeDefend Security Scan on: push: branches: - main # Or your desired branch jobs: cybedefend_scan: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 # Or a later version - name: Run CybeDefend Security Scan uses: CybeDefend/cybedefend-action@v1 with: token: ${{ secrets.CYBEDEFEND_PAT }} project_id: ${{ secrets.CYBEDEFEND_PROJECT_ID }} ``` This workflow checks out your code and then runs the CybeDefend action, which handles the scanning process using the provided API key and project ID. *** ## Checking Your Results * **Action Logs**: The job logs in GitHub Actions show a brief summary of vulnerabilities discovered during the scan. * **CybeDefend Dashboard**: Log in to your CybeDefend account to view full vulnerability details, manage issues, and track historical scan data for your project. Consider restricting scanning to your main development branch (e.g., `main` or `develop`). Use scans on feature branches if you want to catch new issues before they are merged. # GitLab Self-Managed Setup for Local Code Scanning Source: https://docs.cybedefend.com/latest/code-scanning/ci-cd-integrations/gitlab-self-managed-setup Integrate the CybeDefend CLI into a GitLab Self-Managed CI/CD pipeline for secure local code scanning. This guide shows you how to run **CybeDefend local scans** within a **GitLab Self-Managed** environment. It’s ideal if you want to keep your code in-house and still benefit from automated security checks. ## Prerequisites 1. **Personal Access Token (PAT)**\ Ensure you've already created a PAT in the CybeDefend dashboard. If not, see [Personal Access Tokens (PAT)](/latest/code-scanning/local-code-scanning/introduction-api-key). 2. **CybeDefend CLI**\ You can either install the CLI directly in your job container or use a Docker image containing the CLI. The --ci flag in CybeDefend’s CLI disables colors and fancy formatting, providing minimal, script-friendly output. *** ## Example .gitlab-ci.yml ```yaml theme={null} stages: - security-scan security_scan_job: image: ubuntu:latest stage: security-scan script: - apt-get update && apt-get install -y curl - curl -L https://github.com/CybeDefend/cybedefend-cli/releases/download/v1.0.0/cybedefend-linux-amd64 -o cybedefend - chmod +x cybedefend - mv cybedefend /usr/local/bin/ - cybedefend scan --dir . --ci --project-id $CYBEDEFEND_PROJECT_ID only: - main ``` ### Key Points * **Use the "security-scan" stage** or any custom stage relevant to your pipeline. * **Install CLI**: Basic `curl` commands to grab the binary. * **Run the scan**: Provide `--dir .` to scan current working directory. * **Env Variables**: `$CYBEDEFEND_PAT` and `$CYBEDEFEND_PROJECT_ID` are stored in GitLab's CI/CD Variables.

If you prefer Docker-based scanning, create or pull an image with cybedefend pre-installed, then run the scan inside a container in your pipeline.

*** ## Viewing Results After the job completes, you can: * **Check the CLI output** for immediate details. * **Use the CLI ‘results’ command** to fetch a more comprehensive vulnerability listing: ```bash theme={null} cybedefend results --project-id $CYBEDEFEND_PROJECT_ID --all --output html ``` * **Visit CybeDefend Dashboard** to see a full breakdown of vulnerabilities found during each pipeline run. For large codebases, consider caching dependencies to speed up builds – your security scans will remain unaffected as long as you keep scanning the final code or artifact. # Jenkins Setup for Local Code Scanning Source: https://docs.cybedefend.com/latest/code-scanning/ci-cd-integrations/jenkins-setup Integrate CybeDefend’s local scanning into a Jenkins pipeline without exposing your code externally. **Jenkins** is a widely used CI/CD tool that you can host on-prem or in the cloud. By installing the **CybeDefend CLI** on your Jenkins agent, you can securely run scans locally and upload the results to CybeDefend. ## Requirements 1. **Personal Access Token (PAT)**\ Follow [Personal Access Tokens (PAT)](/latest/code-scanning/local-code-scanning/introduction-api-key) to generate and store a PAT in Jenkins credentials (e.g., `CYBEDEFEND_PAT`). 2. **Operating System**\ Jenkins agent must be on a supported OS (Linux x86\_64, Windows, macOS). For Linux, ensure `glibc >= 2.27`. 3. **Sufficient Resources**\ At least 2–4 GB RAM, plus the recommended disk space for your repo. By default, we recommend scanning the main (or master) branch to avoid mixing partial results across multiple branches. *** ## Option 1: Docker-Based Scanning If your Jenkins agent supports Docker, run the **CybeDefend** scanner image: 1. **Create a New Jenkins Project** * Choose **Pipeline** or **Freestyle** with a Docker step. 2. **Configure Docker**\ Make sure your agent can run containers. 3. **Build Step**: ```bash theme={null} docker run --rm \ -v $WORKSPACE:/app \ -w /app \ -e CYBEDEFEND_PAT=$CYBEDEFEND_PAT \ cybedefend/local-scanner:latest \ cybedefend scan . --project-id $CYBEDEFEND_PROJECT_ID --ci ``` ### Explanation * **-v \$WORKSPACE:/app**: Mount your code from Jenkins into `/app`. * **cybedefend/local-scanner:latest**: Our Docker image containing the CLI. * **--ci**: Outputs minimal logs for a clean pipeline.

We suggest setting Branch Specifier to main or master in your Jenkins job, so scans remain consistent.

*** ## Option 2: Installing the Binary Directly 1. **Download the Binary**\ In a shell build step: ```bash theme={null} curl -L https://github.com/CybeDefend/cybedefend-cli/releases/download/v1.0.0/cybedefend-linux-amd64 -o cybedefend chmod +x cybedefend sudo mv cybedefend /usr/local/bin/ ``` 2. **Run the Scan** ```bash theme={null} cybedefend scan . \ --project-id $CYBEDEFEND_PROJECT_ID \ --ci ``` If this is your first time scanning the repo, a new project is created in CybeDefend. On subsequent scans, results are appended under the same Project ID. *** ## Checking Results * **Jenkins Console Output**: Quick summary of discovered vulnerabilities. * **CybeDefend “results” command**: Add a new step to fetch more detailed results in JSON, HTML, or SARIF. * **CybeDefend Dashboard**: Provides an in-depth view, charts, and historical vulnerability data. For large repos, scanning may take a few minutes. Adjust Timeout settings accordingly. Consider gating a release by parsing CLI output or exit codes, failing the build if high-severity issues remain. # TeamCity Setup for Local Code Scanning Source: https://docs.cybedefend.com/latest/code-scanning/ci-cd-integrations/teamcity-setup Quickly integrate local scanning with CybeDefend in a TeamCity pipeline using our Docker image. Use **Docker** to run CybeDefend local scans in your TeamCity pipeline, keeping your code in-house while uploading only the needed data for security analysis. ## Prerequisites * **Personal Access Token (PAT)**: [Create one](/latest/code-scanning/local-code-scanning/introduction-api-key) in your CybeDefend profile and store it as `CYBEDEFEND_PAT` in TeamCity parameters. * **Agent Permissions**: Ensure your self-hosted agent can install or run the CybeDefend CLI. * **TeamCity Access**: Sufficient rights to modify your pipeline definition. *** ## Best Practices * **Scan the main branch only**\ By default, all scan results unify under a single “main” or “master” branch in CybeDefend. Limiting scans to your default branch prevents mixing partial results from feature branches. * **Use Docker**\ This container-based approach simplifies environment setup, avoiding any installation overhead. *** ## Example TeamCity Configuration (YAML) If you’re using a YAML-based approach or the TeamCity DSL, a **script** build step might look like: ```yaml theme={null} jobs: local_security_scan: steps: - type: script name: CybeDefend Local Scan docker-image: cybedefend/local-scanner:latest script-content: >- cybedefend scan ./ --ci --project-id %CYBEDEFEND_PROJECT_ID% ``` ### Explanation * **docker-image**: Points to a Docker image (e.g., cybedefend/local-scanner) that already has the CybeDefend CLI installed. * **script-content**: Runs `cybedefend scan`, zipping your current directory (`./`) and securely uploading it to CybeDefend. * **--ci**: Outputs minimal logs for a cleaner CI experience. * **Environment Variables**: `%CYBEDEFEND_PAT%` and `%CYBEDEFEND_PROJECT_ID%` are typically stored in **TeamCity** → **Project Settings** → **Parameters**, masking sensitive data. If this is your first time scanning the repo, CybeDefend will automatically create a new project (assuming the Project ID is valid or left empty to be generated). Subsequent scans append results to the same project. *** ## Verifying Results 1. **Console Output**\ After the step finishes, TeamCity logs display a summary of any critical or high-severity issues. 2. **Further Exploration**\ Add a subsequent step to fetch results in JSON, HTML, or SARIF formats: ```bash theme={null} cybedefend results --project-id %CYBEDEFEND_PROJECT_ID% --output sarif --all ``` 3. **CybeDefend Dashboard**\ Visit your CybeDefend account to see the complete vulnerability list, including severity breakdowns and recommended fixes. For large codebases, scanning can take a few minutes. Make sure your TeamCity job does not have overly strict timeouts. You can restrict scanning to main by adjusting your TeamCity triggers. This avoids mixing partial or experimental features in your final security reports. # CLI Options for Local Scanner Source: https://docs.cybedefend.com/latest/code-scanning/local-code-scanning/cli-options Quickly install and use the CybeDefend CLI to scan your code locally, fetch results, and integrate secure checks into CI/CD. The **CybeDefend CLI** provides an efficient way to run local code scans and view results on our platform. It supports **Linux, macOS, and Windows** and is easily integrated into **CI/CD pipelines** or used in **offline** environments. ## Usage ```bash theme={null} cybedefend [command] [flags] ``` ```bash theme={null} CybeDefend CLI is a CLI tool to interact with the CybeDefend API. Usage: cybedefend [command] Available Commands: completion Generate the autocompletion script for the specified shell help Help about any command login Authenticate with CybeDefend (OAuth browser flow or PAT) logout Clear stored credentials results Get scan results scan Start a new scan version Show the version of cybedefend Flags: --api-url string API URL (default "https://api-us.cybedefend.com") --region string Platform region: us or eu (default "us") --ci CI mode --config string Config file (default is $HOME/.cybedefend/config.yaml) (optional) --debug Debug mode -h, --help help for cybedefend Use "cybedefend [command] --help" for more information about a command. ``` ## Installation You can install the CybeDefend CLI using one of the following methods: ### 1. Pre-built Binaries **Supported Platforms:** * **macOS**: `cybedefend-darwin-amd64` (Intel) or `cybedefend-darwin-arm64` (Apple Silicon M1/M2) * **Linux**: `cybedefend-linux-amd64` (64-bit) or `cybedefend-linux-386` (32-bit) * **Windows**: `cybedefend-windows-amd64.exe` (64-bit) or `cybedefend-windows-386.exe` (32-bit) **Installation Steps:** 1. **Download** the latest release for your platform from the [GitHub Releases page](https://github.com/CybeDefend/cybedefend-cli/releases) 2. **Make Executable** (Linux/macOS): ```bash theme={null} chmod +x cybedefend- ``` 3. **Move to PATH**: ```bash theme={null} sudo mv cybedefend- /usr/local/bin/cybedefend ``` 4. **Verify Installation**: ```bash theme={null} cybedefend version ``` ### 2. Build from Source ```bash theme={null} # Ensure you have Go installed git clone https://github.com/CybeDefend/cybedefend-cli.git cd cybedefend-cli go build -o cybedefend # Move the binary to your PATH sudo mv cybedefend /usr/local/bin/ cybedefend version ``` ### 3. Docker Image A pre-built Docker image is available on GitHub Container Registry: ```bash theme={null} docker pull ghcr.io/cybedefend/cybedefend-cli:latest # Example usage: docker run --rm -v $(pwd):/app -w /app \ -e CYBEDEFEND_PAT=$CYBEDEFEND_PAT \ -e CYBEDEFEND_PROJECT_ID=$CYBEDEFEND_PROJECT_ID \ ghcr.io/cybedefend/cybedefend-cli:latest scan --dir . --ci ``` *** ## Authentication The CLI supports two authentication modes. Both store credentials in `~/.cybedefend/credentials.json` and are picked up automatically by subsequent commands. ### OAuth Browser Flow (recommended for local use) ```bash theme={null} cybedefend login --region eu ``` Opens the CybeDefend login page in your default browser. After completing authentication, the CLI stores your session automatically. Access tokens are refreshed transparently when they expire. ### PAT-Based Login (recommended for CI/CD) ```bash theme={null} cybedefend login --pat YOUR_PAT --region eu ``` Validates your Personal Access Token and saves it locally. All subsequent commands use it automatically. ```bash theme={null} # One-time login cybedefend login --pat YOUR_PAT --region eu # From now on, no credentials needed per-command cybedefend scan --dir . cybedefend results --project-id YOUR_PROJECT_ID ``` ### Environment Variable (no login step) For CI/CD environments, skip `cybedefend login` entirely and set the PAT as an environment variable: ```bash theme={null} export CYBEDEFEND_PAT=your_pat_here ``` ### Credential Priority Order 1. `--pat` flag (highest priority) 2. `CYBEDEFEND_PAT` environment variable 3. `pat` field in config file 4. Stored credentials from `cybedefend login` ### Logout ```bash theme={null} cybedefend logout ``` Deletes `~/.cybedefend/credentials.json` and clears the stored session. **Deprecated**: The `--api-key` flag has been removed. API Keys are no longer supported. *** ## Configuration **Config File** (`config.yaml` in `./`, `$HOME/.cybedefend`, or `/etc/cybedefend`): ```yaml theme={null} api_url: "https://api-us.cybedefend.com" # Default if not overridden pat: "your-personal-access-token" # PAT from Profile → Personal Access Tokens project_id: "your-project-id" # Optional: choose region (us/eu) # region: "eu" ``` **Environment Variables:** * `CYBEDEFEND_API_URL` - API base URL * `CYBEDEFEND_REGION` - Platform region (`us` or `eu`). Ignored if `CYBEDEFEND_API_URL` is set * `CYBEDEFEND_PAT` - Personal Access Token (PAT) for authentication * `CYBEDEFEND_PROJECT_ID` - Default project ID **Command-Line Flags** (override config and env vars): * `--region` - Platform region (`us` or `eu`). Selects `https://api-us.cybedefend.com` or `https://api-eu.cybedefend.com` * `--api-url` - API base URL (manual override; takes precedence over `--region`) * `--project-id` - Project ID > **Deprecated**: The `--api-key` flag and `CYBEDEFEND_API_KEY` environment variable have been removed. Use `CYBEDEFEND_PAT` with a Personal Access Token instead. *** ## Commands ### 1. `scan` ```bash theme={null} cybedefend scan [flags] ``` Starts a new scan by uploading a directory or a pre-zipped file to the CybeDefend platform. By default, the command waits for the scan to complete and displays a summary of findings. **Flags:** * `--dir, -d` - Directory to scan (will be zipped before uploading). Cannot be used with `--file` * `--file, -f` - Pre-zipped file to scan. Cannot be used with `--dir` * `--project-id` - Project ID for the scan (required if not set in config/env) * `--region` - Platform region: `us` (default) or `eu` * `--api-url` - Manual API URL override (takes precedence over `--region`) * `--wait, -w` - Wait for scan completion before exiting (default: `true`) * `--interval` - Polling interval in seconds when waiting (default: `5`) * `--break-on-fail` - Exit with error code if scan fails (default: `false`) * `--break-on-severity` - Exit with error code if vulnerabilities of specified severity or higher are found. Values: `critical`, `high`, `medium`, `low` * `--ci` - CI/CD-friendly output (no colors, ASCII art, or extra formatting) #### Examples ```bash theme={null} # Scan a directory, wait for completion, and show summary (default behavior) # Assumes PAT is set via `cybedefend login` or CYBEDEFEND_PAT env var cybedefend scan --dir ./my-app --project-id your-project-id # Scan a pre-zipped file (PAT must be configured via login or env var) cybedefend scan --file ./my-app.zip --project-id your-project-id # Start a scan but don't wait for completion cybedefend scan --dir ./my-app --project-id your-project-id --wait=false # Scan, wait, and fail the CI job if the scan process itself fails cybedefend scan --dir ./my-app --project-id your-project-id --break-on-fail # Scan, wait, and fail the CI job if any CRITICAL vulnerabilities are found cybedefend scan --dir ./my-app --project-id your-project-id --break-on-severity critical # Scan, wait, and fail the CI job if any MEDIUM or higher vulnerabilities are found cybedefend scan --dir ./my-app --project-id your-project-id --break-on-severity medium # Select the EU region cybedefend scan --dir ./my-app --region eu # Manually override the API URL cybedefend scan --dir ./my-app --api-url https://api-eu.cybedefend.com # Change polling interval to 10 seconds cybedefend scan --dir ./my-app --interval 10 # CI-friendly mode cybedefend scan --dir ./my-app --ci ``` ### 2. `results` ```bash theme={null} cybedefend results [flags] ``` Retrieves scan results for a project and writes them to a file. By default it fetches **every** scan type (`--type all`) in JSON, across all pages, and saves to `results.json` in the current directory. **Flags:** | Flag | Default | What it does | | ---------------- | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--project-id` | from config / env | Project to fetch results for. Required if not set in the config file or `CYBEDEFEND_PROJECT_ID` | | `--type, -t` | `all` | Scan type: `sast`, `sca`, `iac`, `secret`, `cicd`, `container`, or `all` | | `--status` | `to_verify,confirmed` | Comma-separated triage states to include: `to_verify`, `confirmed`, `resolved`, `ignored` | | `--branch, -b` | all branches | Only return findings on this branch | | `--all, -a` | `true` | Fetch every page. Pass `--all=false` to fetch a single page | | `--page, -p` | `1` | Page to fetch. Ignored unless you pass `--all=false` | | `--grouped, -g` | `false` | Group findings by rule / CVE instead of listing every occurrence. JSON output only | | `--scores` | `false` | Add the CVE identifier and the risk scores (priority, CVSS 4.0, EPSS, exploitability) to the output. Applies to the per-occurrence output; grouped output always carries the scores the platform computed | | `--output, -o` | `json` | Output format: `json`, `html`, `sarif`, or `markdown` | | `--filename, -f` | `results.json` | Output file name | | `--filepath` | `.` | Directory to write the file to | | `--ci` | `false` | CI/CD-friendly output (no colors or extra formatting) | With `--type all` the JSON output keeps one array per scan type (`sast`, `sca`, `iac`, `secret`, `cicd`, `container`); the `html`, `sarif` and `markdown` reports flatten them into a single list. `--grouped` needs a single scan type — it has no effect while `--type` is `all`. #### Choosing which triage states to export `--status` decides which triage states end up in the file. The default, `to_verify,confirmed`, is the set of findings that still need attention: what you have already resolved or ignored stays out. | Value | Meaning | | ----------- | -------------------------------------- | | `to_verify` | Not triaged yet | | `confirmed` | Triaged and accepted as a real finding | | `resolved` | Fixed | | `ignored` | Deliberately dismissed | Any other value is rejected before a request is sent. `not_exploitable` is a state you will see in the platform, but the API does not accept it as a filter value, so you cannot ask for it here. **Your exports get smaller, and that is the fix.** Earlier CLI versions sent this filter in a spelling the API silently discarded, so every export contained every state — resolved and ignored findings included. The filter now reaches the API. If a pipeline of yours counts rows in `results.json` or feeds them into a ticketing system, expect fewer rows and adjust the threshold. ```bash theme={null} # Before: the default export returned every state, whatever you asked for cybedefend results --project-id $PROJECT_ID --type sca # After: ask for the extra states explicitly to get a comparable volume cybedefend results --project-id $PROJECT_ID --type sca \ --status to_verify,confirmed,resolved,ignored ``` Findings in the `not_exploitable` state were part of the old over-delivered export and cannot be requested back, so even the four-state filter above returns slightly fewer rows than the old default. Every finding in a JSON export carries its own state in `currentState`, so a file is self-describing and you can re-filter it afterwards without another call: ```json theme={null} { "id": "6f1c…", "path": "src/auth/session.ts", "branch": "main", "currentState": "to_verify", "vulnerability": { "name": "…", "severity": "…" } } ``` `currentState` is present in the JSON output only — the `html`, `sarif` and `markdown` reports do not show the triage state. `--status` is also not applied to `--grouped --type container`, which returns grouped images through a separate endpoint. `--status` is a recent addition. If your CLI answers `unknown flag: --status`, upgrade the binary from the [releases page](https://github.com/CybeDefend/cybedefend-cli/releases). #### Examples ```bash theme={null} # Every scan type, findings that still need attention (the default) cybedefend results --project-id your-project-id # Only what you have dismissed, to audit your own triage decisions cybedefend results --project-id your-project-id --type sca --status ignored,resolved # Everything the API will filter on, for a full snapshot cybedefend results --project-id your-project-id --status to_verify,confirmed,resolved,ignored # SAST findings on one branch, as SARIF, for code scanning upload cybedefend results --project-id your-project-id --type sast --branch main \ --output sarif --filename results.sarif # SCA findings with the CVE identifiers and risk scores cybedefend results --project-id your-project-id --type sca --scores # SCA findings grouped by CVE instead of one row per occurrence cybedefend results --project-id your-project-id --type sca --grouped # A single page instead of the whole project cybedefend results --project-id your-project-id --type sast --all=false --page 2 ``` ### 3. `version` Displays the CLI version: ```bash theme={null} cybedefend version ``` ### 4. `completion` Generates shell autocompletion for bash, zsh, etc.: ```bash theme={null} cybedefend completion [shell] ``` *** ## CI/CD Integration Combine the `scan` and `results` commands in your pipelines. The `scan` command's `--wait`, `--break-on-fail`, and `--break-on-severity` flags are particularly useful for controlling pipeline flow based on scan outcomes. For example, in GitHub Actions: ```yaml theme={null} - name: Install CybeDefend CLI # Or use the Docker image method run: | # Download commands... curl -L https://github.com/CybeDefend/cybedefend-cli/releases/latest/download/cybedefend-linux-amd64 -o cybedefend chmod +x cybedefend sudo mv cybedefend /usr/local/bin/ - name: Run security scan and break on High severity env: CYBEDEFEND_PAT: ${{ secrets.CYBEDEFEND_PAT }} run: cybedefend scan --dir ./ --ci \ --project-id ${{ secrets.CYBEDEFEND_PROJECT_ID }} \ --break-on-severity high # Fail build if High or Critical vulns found # Optionally, fetch detailed results artifact if needed, e.g., for reporting # This step might only run if the previous one succeeded, depending on workflow setup - name: Fetch Detailed Results as SARIF env: CYBEDEFEND_PAT: ${{ secrets.CYBEDEFEND_PAT }} run: cybedefend results --project-id ${{ secrets.CYBEDEFEND_PROJECT_ID }} \ --output sarif --filename results.sarif --ci # - name: Upload SARIF results (Example using GitHub action) # uses: github/codeql-action/upload-sarif@v2 # with: # sarif_file: results.sarif ``` Use `--ci` for minimal logs during the scan. The `--break-on-*` flags allow automatic build failure based on your security policies. You can still use `cybedefend results` to fetch detailed reports if the scan passes the break conditions or if you need the data regardless. *** **Related:** [Code Repository Scanning](/latest/code-scanning/scanning-options/code-repository-scanning) · [CI/CD Integrations](/latest/code-scanning/ci-cd-integrations/github-action-setup) · [GitHub CLI Repository](https://github.com/CybeDefend/cybedefend-cli) # Personal Access Tokens (PAT) Source: https://docs.cybedefend.com/latest/code-scanning/local-code-scanning/introduction-api-key Create and use Personal Access Tokens to authenticate the CybeDefend CLI. A **Personal Access Token (PAT)** lets you authenticate the CybeDefend CLI without going through the browser. It is the recommended authentication method for CI/CD pipelines and scripted environments. *** ## Create a Personal Access Token 1. Log in to the CybeDefend web interface 2. Navigate to **Profile → Personal Access Tokens** 3. Click **+ Create New Token**, give it a name (e.g., "CLI Token") 4. Copy and store the token securely — it is shown only once Create Personal Access Token Store your PAT in a secure secrets manager or as an encrypted CI/CD secret. Never commit it to source control. *** ## Authenticate the CLI with Your PAT ```bash theme={null} cybedefend login --pat YOUR_PAT --region eu ``` Your credentials are saved to `~/.cybedefend/credentials.json`. Subsequent commands (scan, results…) use them automatically — no need to pass `--pat` every time. Once logged in, the `--region` flag is remembered automatically. You can simply run `cybedefend scan --dir .` for all future commands. *** ## Authenticate via OAuth (interactive) For local development, you can also log in through your browser: ```bash theme={null} cybedefend login --region eu ``` This opens the CybeDefend login page in your default browser. After completing authentication, the CLI stores your session automatically. Access tokens are refreshed transparently when they expire. *** ## Use a PAT Without Logging In For CI/CD environments where persistent sessions are not practical, you can pass the PAT directly via environment variable — no `cybedefend login` step needed: ```bash theme={null} export CYBEDEFEND_PAT=your_pat_here cybedefend scan --dir . --project-id YOUR_PROJECT_ID ``` Or inline for a single command: ```bash theme={null} CYBEDEFEND_PAT=${{ secrets.CYBEDEFEND_PAT }} cybedefend scan --dir . --project-id YOUR_PROJECT_ID ``` ## Credential Priority Order When running any command, credentials are resolved in this order: 1. `--pat` flag (highest priority) 2. `CYBEDEFEND_PAT` environment variable 3. `pat` field in config file (`config.yml`) 4. Stored credentials from `cybedefend login` ## Logout ```bash theme={null} cybedefend logout ``` Deletes `~/.cybedefend/credentials.json` and clears the stored session. *** ## Next Steps * [CLI Options for Local Scanner](/latest/code-scanning/local-code-scanning/cli-options) * [Mac Setup](/latest/code-scanning/local-code-scanning/mac-setup) * [Windows Setup](/latest/code-scanning/local-code-scanning/windows-setup) * [Linux Setup](/latest/code-scanning/local-code-scanning/linux-setup) # Linux Setup for Local Code Scanning Source: https://docs.cybedefend.com/latest/code-scanning/local-code-scanning/linux-setup Install the CybeDefend CLI on various Linux distributions for local or CI-based security scans. CybeDefend’s CLI offers support for a wide range of Linux distributions. Install the CLI, provide your API key, and scan code right from your terminal or Docker-based environments. ## Requirements * **Linux** (32-bit or 64-bit). * [Personal Access Token (PAT)](/latest/code-scanning/local-code-scanning/introduction-api-key) from your CybeDefend account. * Basic terminal knowledge. *** ## Installation Steps 1. **Download the Binary**\ From [Releases](https://github.com/CybeDefend/cybedefend-cli/releases), pick `cybedefend-linux-amd64` (64-bit) or `cybedefend-linux-386` (32-bit). 2. **Make Executable** ```bash theme={null} chmod +x cybedefend-linux-amd64 ``` 3. **Move to PATH** ```bash theme={null} sudo mv cybedefend-linux-amd64 /usr/local/bin/cybedefend ``` 4. **Test** ```bash theme={null} cybedefend version ``` If you’re running Alpine or a musl-based distro, ensure compatibility or build from source using go build. *** ## Scanning Your Project 1. **Authenticate (one-time setup)** ```bash theme={null} cybedefend login --pat YOUR_PAT --region eu ``` 2. **In Terminal** ```bash theme={null} cd ~/my-app cybedefend scan --dir . --project-id YOUR_PROJECT_ID ``` 3. **Check Results** ```bash theme={null} cybedefend results --project-id YOUR_PROJECT_ID --all --output json ```

If you run scans inside Docker, mount your source directory as a volume and pass your PAT via the CYBEDEFEND\_PAT environment variable.

This process easily integrates into Jenkins, GitLab CI, or GitHub Actions running on Linux hosts. # Mac Setup for Local Code Scanning Source: https://docs.cybedefend.com/latest/code-scanning/local-code-scanning/mac-setup Install and run the CybeDefend CLI on macOS for secure local code scanning. This guide walks you through installing the **CybeDefend CLI** on macOS, ensuring you can quickly scan projects locally. ## Requirements * **macOS** (Intel or Apple Silicon). * [Personal Access Token (PAT)](/latest/code-scanning/local-code-scanning/introduction-api-key) from your CybeDefend account. * Optional: Homebrew or direct binary installation. *** ## Installation Methods ### 1. Homebrew (Recommended) ```bash theme={null} brew tap cybedefend/cli brew install cybedefend ``` Check version: ```bash theme={null} cybedefend version ``` ### 2. Direct Download 1. **Download**: `cybedefend-darwin-amd64` (for Intel) or `cybedefend-darwin-arm64` (for M1/M2) from [Releases](https://github.com/CybeDefend/cybedefend-cli/releases). 2. **Make Executable**: ```bash theme={null} chmod +x cybedefend-darwin-* ``` 3. **Move to /usr/local/bin**: ```bash theme={null} sudo mv cybedefend-darwin-* /usr/local/bin/cybedefend ``` 4. **Verify**: ```bash theme={null} cybedefend --help ``` If you encounter a macOS Gatekeeper prompt, right-click the binary in Finder → Open, or remove quarantine attributes with xattr -d com.apple.quarantine cybedefend-darwin-\*. *** ## Scanning on macOS 1. **Navigate to Your Code** ```bash theme={null} cd ~/Projects/my-app ``` 2. **Authenticate (one-time setup)** ```bash theme={null} cybedefend login --pat YOUR_PAT --region eu ``` 3. **Run a Scan** ```bash theme={null} cybedefend scan --dir . --project-id YOUR_PROJECT_ID ``` 4. **Check Results** ```bash theme={null} cybedefend results --project-id YOUR_PROJECT_ID --all ``` You can also store your PAT in the CYBEDEFEND\_PAT environment variable to avoid typing it each time: ```bash theme={null} export CYBEDEFEND_PAT=your_pat_here ``` # Windows Setup for Local Code Scanning Source: https://docs.cybedefend.com/latest/code-scanning/local-code-scanning/windows-setup Install and run the CybeDefend CLI on Windows for straightforward local code scanning. If you’re on Windows, you can install the **CybeDefend CLI** as an `.exe` file. Quickly run security scans from PowerShell, Command Prompt, or within CI runners like GitHub Actions (Windows-based). ## Requirements * **Windows 10 or 11** (32-bit or 64-bit). * [Personal Access Token (PAT)](/latest/code-scanning/local-code-scanning/introduction-api-key) from your CybeDefend account. * Optional: Integration with your CI pipeline. *** ## Installation Steps 1. **Download**\ Grab `cybedefend-windows-amd64.exe` (64-bit) or `cybedefend-windows-386.exe` (32-bit) from [Releases](https://github.com/CybeDefend/cybedefend-cli/releases). 2. **Rename (Optional)**\ Rename to `cybedefend.exe` for easier usage. 3. **Add to PATH**\ Place it in a folder included in your PATH, or just call it from its current location. On Windows, some security tools may flag new executables. Ensure cybedefend.exe is unblocked in your antivirus or firewall settings. *** ## Running a Scan 1. **Open PowerShell or CMD**\ Navigate to your project directory: ```powershell theme={null} cd C:\Users\YourName\Projects\my-app ``` 2. **Authenticate (one-time setup)** ```powershell theme={null} cybedefend.exe login --pat YOUR_PAT --region eu ``` 3. **Initiate Scan** ```powershell theme={null} cybedefend.exe scan --dir . --project-id YOUR_PROJECT_ID ``` 4. **View Results** ```powershell theme={null} cybedefend.exe results --project-id YOUR_PROJECT_ID --output sarif ``` If you see a SmartScreen prompt, confirm the binary’s source to proceed with the installation. You can also store your PAT in the **CYBEDEFEND\_PAT** environment variable: ```powershell theme={null} $env:CYBEDEFEND_PAT = "your_pat_here" ``` Using **--ci** can simplify output if you're parsing logs in a Windows-based CI system. # How to Launch a Scan on a C/C++ Project Source: https://docs.cybedefend.com/latest/code-scanning/scanning-by-project-type/how-to-launch-scan-c-cpp Integrate CybeDefend with your C/C++ toolchain and lock dependencies, typically via conan.lock. CybeDefend supports scanning C/C++ code for vulnerabilities in your source files and **conan.lock** for dependency management. By committing this lockfile to your repository, you enhance security scanning and ensure consistent builds. ## Recommended Steps 1. **Adopt Conan (or Another Manager)**\ If you rely on external libraries, use a package manager like **Conan** that can produce `conan.lock`. 2. **Generate & Commit conan.lock** * Ensure you have a Conan profile set up: `conan profile detect` (if needed) * Run `conan lock create . --lockfile-out=conan.lock` to produce the lockfile. * Run `conan install` to install dependencies using your lockfile. * Commit `conan.lock` so everyone uses the exact same library versions. 3. **Keep a Clean Codebase**\ Add any `.deps/` or build artifacts to `.gitignore` so that only the lockfile and source are tracked. ## Why You Should Use Lockfiles Using a **lockfile** is critical for secure and predictable builds. A lockfile contains a **fixed version** and a **hash** for each dependency and sub-dependency in your project. 1. **Supply Chain Protection**\ Lockfiles prevent malicious package injections. This is crucial as supply chain attacks are rising. 2. **Predictable Builds**\ Everyone uses the exact same package versions, avoiding “it works on my machine” inconsistencies. 3. **Performance Gains**\ With dependency versions locked, build tools skip the usual resolution step, making builds faster. Lockfiles are never edited manually. They’re generated and updated by your package manager and committed to your repository, ensuring consistent environments for all teammates. ## Generating a Conan Lockfile For Conan 2.x projects, use the following command in your project directory: ```bash theme={null} conan lock create . --lockfile-out=conan.lock ``` For older Conan 1.x projects, use: ```bash theme={null} conan lock create conanfile.py --lockfile=conan.lock ``` ## Supported Files for C/C++ | File Examples | | ----------------------------------------------------------------------------- | | `conan.lock`, `CMakeLists.txt`, `.cpp`, `.h`, `conanfile.py`, `conanfile.txt` | CybeDefend can detect vulnerabilities in known C/C++ libraries if your lockfile references them. Without a lockfile, your scanning might be incomplete or prone to version ambiguity. Always re-run conan lock create after updating library versions, and commit the new lockfile to keep CybeDefend scanning accurate. # How to Launch a Scan on a PHP/Composer Project Source: https://docs.cybedefend.com/latest/code-scanning/scanning-by-project-type/how-to-launch-scan-composer Best practices for configuring Composer projects to be scanned by CybeDefend, with an emphasis on lockfiles. If your PHP application uses **Composer**, CybeDefend can detect vulnerabilities in your `composer.json` and `composer.lock` files. However, you'll get the **best** results if you have a lockfile with pinned dependencies. ## Recommended Steps 1. **Install Dependencies with Composer**\ Run one of these commands to generate a `composer.lock` file: ```bash theme={null} # Standard install composer install # If you encounter platform requirement issues composer install --ignore-platform-reqs # If you want to just generate the lockfile without installing composer update --no-scripts --ignore-platform-reqs --lock ``` 2. **Commit the Lockfile**\ Always commit `composer.lock` to your repository. This ensures that the entire team, and CybeDefend, see the exact dependency versions. 3. **Keep Your Lockfile Updated**\ When you want to update dependencies, use `composer update` or `composer require` and commit the updated lockfile. ## Why You Should Use Lockfiles Using a **lockfile** is critical for secure and predictable builds. A lockfile contains a **fixed version** and a **hash** for each dependency and sub-dependency in your project. 1. **Supply Chain Protection**\ Lockfiles prevent malicious package injections. This is crucial as supply chain attacks are rising. 2. **Predictable Builds**\ Everyone uses the exact same package versions, avoiding “it works on my machine” inconsistencies. 3. **Performance Gains**\ With dependency versions locked, build tools skip the usual resolution step, making builds faster. Lockfiles are never edited manually. They’re generated and updated by your package manager and committed to your repository, ensuring consistent environments for all teammates. ## Troubleshooting Lockfile Generation If you encounter issues generating a lockfile, try these approaches: ```bash theme={null} # Update dependencies while ignoring platform requirements composer update --no-interaction --no-scripts --ignore-platform-reqs # Force lockfile regeneration composer update --no-interaction --no-scripts --ignore-platform-reqs --lock ``` While CybeDefend can scan projects with only a composer.json file, we strongly recommend generating and committing the composer.lock file for more accurate vulnerability detection. ## Supported Files for PHP/Composer | File Examples | | -------------------------------- | | `composer.json`, `composer.lock` | Never edit your composer.lock file manually. Always let Composer handle this file to ensure proper dependency resolution. If you're using development dependencies, be aware that these are also included in the security scanning. Consider carefully which packages you include, even as development dependencies. # How to Launch a Scan on a .NET Project Source: https://docs.cybedefend.com/latest/code-scanning/scanning-by-project-type/how-to-launch-scan-dotnet Use lockfiles like packages.lock.json in your .NET build for better SCA detection with CybeDefend. **.NET** projects often rely on NuGet packages. By generating a `packages.lock.json` file, you create a stable snapshot of all dependencies—critical for accurate CybeDefend SCA scanning. ## Recommended Steps 1. **Enable Lockfiles in .csproj** You can enable lockfiles in any of these ways: **Option A**: Add to your `.csproj` file: ```xml theme={null} true true ``` **Option B**: For all projects, create a `Directory.Build.props` file in your solution root: ```xml theme={null} true ``` 2. **Run dotnet restore**\ This generates a `packages.lock.json` file for each project. ```bash theme={null} dotnet restore --use-lock-file ``` 3. **Commit packages.lock.json**\ Never edit this file manually. Let `dotnet restore` handle updates. ## Why You Should Use Lockfiles Using a **lockfile** is critical for secure and predictable builds. A lockfile contains a **fixed version** and a **hash** for each dependency and sub-dependency in your project. 1. **Supply Chain Protection**\ Lockfiles prevent malicious package injections. This is crucial as supply chain attacks are rising. 2. **Predictable Builds**\ Everyone uses the exact same package versions, avoiding “it works on my machine” inconsistencies. 3. **Performance Gains**\ With dependency versions locked, build tools skip the usual resolution step, making builds faster. Lockfiles are never edited manually. They’re generated and updated by your package manager and committed to your repository, ensuring consistent environments for all teammates. ## Lockfile Commands * **Generate**: `dotnet restore --use-lock-file` * **Locked Restore**: `dotnet restore --locked-mode` * **Update**: Change versions in `.csproj` or `Directory.Packages.props`, then run `dotnet restore --force` to update the lockfile. ## Using Central Package Management For larger solutions with many projects, use NuGet's Central Package Management: 1. Create a `Directory.Packages.props` file in your solution root: ```xml theme={null} true ``` 2. In your project files, reference packages without versions: ```xml theme={null} ``` ## Supported Files for .NET | File Examples | | ------------------------------------------------------------------------- | | `.deps.json`, `packages.lock.json`, `Directory.Packages.props`, `.csproj` | If your lockfile is missing, SCA scanning might only detect partial or incorrect versions of NuGet packages. Lockfiles ensure precise dependency resolution. Use Directory.Packages.props (NuGet central package management) for an even cleaner approach to pinned versions across multiple projects. # How to Launch a Scan on Java/Scala/Kotlin Source: https://docs.cybedefend.com/latest/code-scanning/scanning-by-project-type/how-to-launch-scan-java-scala-kotlin Optimize SCA scanning by using Gradle lockfiles and pinned versions for Java, Scala, or Kotlin builds. For **Gradle-based** projects in Java, Scala, or Kotlin, generating a `gradle.lockfile` ensures consistent dependencies that CybeDefend can accurately scan. SBT-based Scala projects can also pin versions in `.sbt.lock` or a centralized method. ## Gradle Lockfiles 1. **Enable Gradle Locking**\ You can enable dependency locking in one of two ways: **Option A**: In your `gradle.properties`, set: ```properties theme={null} systemProp.gradle.useLocks=true systemProp.gradle.dependencyVerification=strict ``` **Option B**: Modify your `build.gradle` file to add: ```groovy theme={null} configurations.all { resolutionStrategy.activateDependencyLocking() } ``` Or for Kotlin DSL projects (`build.gradle.kts`): ```kotlin theme={null} configurations.all { resolutionStrategy.activateDependencyLocking() } ``` 2. **Generate Lockfiles**\ Run one of these commands: ```bash theme={null} ./gradlew dependencies --write-locks ``` or ```bash theme={null} ./gradlew resolveAndLockAll ``` This creates lockfiles in the `gradle/dependency-locks` directory. 3. **Commit**\ Check in the lockfiles so that your entire team and CybeDefend sees fixed dependency versions. ## Why You Should Use Lockfiles Using a **lockfile** is critical for secure and predictable builds. A lockfile contains a **fixed version** and a **hash** for each dependency and sub-dependency in your project. 1. **Supply Chain Protection**\ Lockfiles prevent malicious package injections. This is crucial as supply chain attacks are rising. 2. **Predictable Builds**\ Everyone uses the exact same package versions, avoiding “it works on my machine” inconsistencies. 3. **Performance Gains**\ With dependency versions locked, build tools skip the usual resolution step, making builds faster. Lockfiles are never edited manually. They’re generated and updated by your package manager and committed to your repository, ensuring consistent environments for all teammates. ## SBT Lock for Scala 1. **Add the sbt-lock Plugin**\ In your `project/plugins.sbt`, add: ```scala theme={null} addSbtPlugin("software.purpledragon" % "sbt-dependency-lock" % "1.5.1") ``` 2. **Generate the Lockfile**\ Run: ```bash theme={null} sbt dependencyLockWrite ``` This creates a `build.sbt.lock` or `dependencies.sbt.lock` file. 3. **Commit the Lockfile**\ Add this file to your repository to maintain pinned Scala library versions. ## Supported Files | Lang | File Examples | | ---------- | ----------------------------------------------------------------------- | | **Java** | `gradle.lockfile`, `pom.xml`, `.jar`, `.war`, `.ear` | | **Scala** | `build.sbt`, `plugins.sbt`, `.sbt.lock`, `dependencies.scala`, `.scala` | | **Kotlin** | `gradle.lockfile`, `.kts` files (Gradle Kotlin DSL) | Some older build tools or frameworks may require additional steps. The primary goal is to produce a stable lock or pinned version set for each submodule. For multi-module Gradle projects, run ./gradlew :module:dependencies --write-locks for each module to ensure all dependencies are properly locked. # How to Launch a Scan on a Maven Project Source: https://docs.cybedefend.com/latest/code-scanning/scanning-by-project-type/how-to-launch-scan-maven Best practices for configuring Maven to be scanned by CybeDefend, with an emphasis on lockfile-like mechanisms. If your Java application uses **Maven**, CybeDefend can detect vulnerabilities in your pom.xml, `.jar`, `.war`, or `.ear` files. However, you'll get the **best** results if you explicitly pin or lock dependencies to stable versions. ## Recommended Steps 1. **Pin Versions in pom.xml**\ Make sure each dependency in `` includes a specific version number: ```xml theme={null} org.example example-library 1.2.3 ``` 2. **Use a Lockfile-Like Approach**\ While Maven doesn't have an official universal lockfile, certain plugins or pinned version strategies replicate the effect. * **Dependency Management**: Use `` in your parent pom to centralize version definitions. * **Versions Maven Plugin**: Tools like `versions:lock-snapshots` or `versions:use-releases` can help freeze your dependencies. * **Maven Enforcer**: Consider using the enforcer plugin to ban dependency version ranges. 3. **Generate Flattened POM**\ The Maven Flatten Plugin creates a simplified POM with all versions resolved: ```xml theme={null} org.codehaus.mojo flatten-maven-plugin 1.3.0 resolveCiFriendliesOnly flatten ``` 4. **Store pom.xml in Repo**\ This ensures that the entire team, and CybeDefend, see the exact dependency versions. ## Why You Should Use Lockfiles Using a **lockfile** is critical for secure and predictable builds. A lockfile contains a **fixed version** and a **hash** for each dependency and sub-dependency in your project. 1. **Supply Chain Protection**\ Lockfiles prevent malicious package injections. This is crucial as supply chain attacks are rising. 2. **Predictable Builds**\ Everyone uses the exact same package versions, avoiding “it works on my machine” inconsistencies. 3. **Performance Gains**\ With dependency versions locked, build tools skip the usual resolution step, making builds faster. Lockfiles are never edited manually. They’re generated and updated by your package manager and committed to your repository, ensuring consistent environments for all teammates. For advanced usage, some teams generate `.flattened-pom.xml` or use ephemeral lock plugins. The key is to produce a stable, pinned set of dependencies that CybeDefend can accurately scan. ## Supported Files for Java/Maven | File Examples | | ------------------------------------------------------- | | `pom.xml`, `.jar`, `.war`, `.ear`, `.flattened-pom.xml` | Remember to re-run Maven and commit any updated metadata or flattened POM files if your plugin of choice modifies them. Once your Maven project is ready, create a new project in CybeDefend referencing this codebase. SCA scanning will detect vulnerabilities in pinned dependencies more accurately. # How to Launch a Scan on a Node Project Source: https://docs.cybedefend.com/latest/code-scanning/scanning-by-project-type/how-to-launch-scan-node Use package-lock.json, yarn.lock, or pnpm-lock.yaml to improve security scanning for Node apps in CybeDefend. Node.js offers various package managers—npm, Yarn, PNPM, Bun—that produce lockfiles. CybeDefend's SCA scanner relies on these files to accurately identify your app's dependencies. ## Lockfile Examples 1. **npm**: `package-lock.json` or `npm-shrinkwrap.json` 2. **Yarn**: `yarn.lock` 3. **PNPM**: `pnpm-lock.yaml`, `pnpm-lock.yml` 4. **Bun**: `bun.lock`, `bun.lockb` 5. **Deno**: `deno.lock` ## Why You Should Use Lockfiles Using a **lockfile** is critical for secure and predictable builds. A lockfile contains a **fixed version** and a **hash** for each dependency and sub-dependency in your project. 1. **Supply Chain Protection**\ Lockfiles prevent malicious package injections. This is crucial as supply chain attacks are rising. 2. **Predictable Builds**\ Everyone uses the exact same package versions, avoiding “it works on my machine” inconsistencies. 3. **Performance Gains**\ With dependency versions locked, build tools skip the usual resolution step, making builds faster. Lockfiles are never edited manually. They’re generated and updated by your package manager and committed to your repository, ensuring consistent environments for all teammates. ## Recommended Steps 1. **Install Dependencies**\ e.g., `npm install`, `yarn install`, `pnpm install`, or `bun install`. 2. **Commit the Generated Lockfile**\ This ensures your entire dev team and CybeDefend use identical dependencies. 3. **Avoid Manual Edits**\ Let the package manager handle the lockfile; do not modify it by hand. ## Deno Projects For **Deno** projects, you can generate a lockfile with: ```bash theme={null} deno cache --lock=deno.lock --lock-write your_script.ts ``` After generating the lockfile, commit it to your repository for CybeDefend to scan. ## Supported Files for Node | File Examples | | ---------------------------------------------------------------------------------------------------------------------------------------------- | | `npm-shrinkwrap.json`, `yarn.lock`, `pnpm-lock.yaml`, `bun.lock`, `bun.lockb`, `deno.lock`, `libman.json`, `package.json`, `package-lock.json` | Pin or lock versions in dependencies rather than devDependencies if you want to ensure full coverage for production packages. # Code Repository Scanning Source: https://docs.cybedefend.com/latest/code-scanning/scanning-options/code-repository-scanning Discover how the CybeDefend Engine unifies results from multiple scanners. CybeDefend offers a **multi-layered security** solution across your codebase, infrastructure, and third-party dependencies. We combine: 1. **CybeDefend Engine** – Aggregates and cross-references results from multiple open-source and proprietary scanners, minimizing duplicates and noise. CybeDefend Multi-Layer Security *** ## Why Use CybeDefend? * **Unified Scanning**: The CybeDefend Engine merges findings from different tools into a single, concise view. * **Reduced Noise**: Duplicate or overlapping vulnerabilities are identified and consolidated, preventing alert overload. *** ## 1. Static Application Security Testing (SAST) **SAST** inspects your **source code** to catch vulnerabilities early in the development process. CybeDefend unifies open-source scanners (e.g., **Semgrep**) under the **CybeDefend Engine**. ### Supported Languages | Language | Primary Scanners | | -------------- | ------------------------------------ | | **Go** | CybeDefend Engine & Rules + Opengrep | | **Python** | CybeDefend Engine & Rules + Opengrep | | **Java** | CybeDefend Engine & Rules + Opengrep | | **JavaScript** | CybeDefend Engine & Rules + Opengrep | | **C** | CybeDefend Engine & Rules + Opengrep | | **C++** | CybeDefend Engine & Rules + Opengrep | | **C#** | CybeDefend Engine & Rules + Opengrep | | **PHP** | CybeDefend Engine & Rules + Opengrep | | **Ruby** | CybeDefend Engine & Rules + Opengrep | | **Rust** | CybeDefend Engine & Rules | **Rust** is not supported by Opengrep — CybeDefend covers it with its own dedicated security rules, run by the CybeDefend Engine. IAC Security Analysis *** ## 2. Infrastructure as Code (IAC) Security IAC scanning ensures that **cloud** and **container** configurations adhere to best practices. The **CybeDefend Engine** works with scanners like **Checkov**, **Trivy**, and **KICS** to identify misconfigurations. Unlike SAST, enabling AI Mode for IAC does **not** provide line-level dataflow (which is primarily for code), but the Engine still handles **intelligent vulnerability matching** and deduplication. ### Supported Technologies | Category | IAC Types | Scanning Tools | | ------------------------ | -------------------------------------------------------------- | ---------------------------------------- | | **Cloud Configurations** | Terraform, CloudFormation, AWS CDK, Azure RM, Helm, Kubernetes | CybeDefend Engine + Checkov, KICS, Trivy | | **Serverless Security** | AWS Lambda, Azure Functions | CybeDefend Engine + Checkov, KICS | | **Container Security** | Dockerfiles, Docker Compose | CybeDefend Engine + Trivy, KICS | | **OpenAPI / gRPC** | .json, .yaml, .proto | CybeDefend Engine + KICS | IAC Security Analysis IAC misconfigurations can lead to severe breaches. The CybeDefend Engine identifies issues in your code, saving you from manually piecing together results from multiple scanners. *** ## 3. Software Composition Analysis (SCA) SCA detects vulnerabilities in **third-party libraries** and **open-source dependencies**. CybeDefend uses the **CybeDefend Engine** combined with **[Google OSV](https://osv.dev)** — the open-source vulnerability database maintained by Google — to identify known flaws in your dependencies. Rather than relying on a single feed, OSV **continuously aggregates and normalizes** advisories from **35+ language ecosystems and OS/distribution security trackers** into one source of truth. GitHub Advisories (GHSA) is one of the many databases OSV consolidates, so earlier coverage is fully retained — and considerably expanded. ### SCA Scanning Tools | Engine | External Advisory Source | | --------------------- | ------------------------------------------- | | **CybeDefend Engine** | **Google OSV** ([osv.dev](https://osv.dev)) | ### Vulnerability Data Sources (Google OSV) CybeDefend draws its SCA intelligence from **[Google OSV](https://osv.dev)** (Open Source Vulnerabilities), an open, distributed database that **aggregates and normalizes** advisories from across the open-source world into a single schema. This spans **language package registries** (npm, PyPI, Maven, NuGet, Go, crates.io, RubyGems, Packagist, Hex, and more) and **OS / distribution and container-image feeds** (Debian, Ubuntu, Alpine, Red Hat, SUSE, Rocky Linux, Chainguard, Wolfi, and many others) — with GitHub Advisories (GHSA) folded in as just one of the contributing sources. **These sources are aggregated continuously and grow every day.** New advisories — and entirely new ecosystems — are added to OSV constantly, and CybeDefend ingests them on an ongoing basis, so your scans always reflect the latest known vulnerabilities with no action on your side. The counts below are a **snapshot from [osv.dev](https://osv.dev), July 2026** — over **767,000** advisories across **38 sources** — and only trend upward. Check [osv.dev](https://osv.dev) for live figures. | Ecosystem | Advisories | Ecosystem | Advisories | | ----------- | ---------: | ---------------------------- | ---------: | | AlmaLinux | 5,242 | Alpaquita | 11,478 | | Alpine | 4,350 | Android | 3,403 | | Azure Linux | 12,016 | BellSoft Hardened Containers | 572 | | Bitnami | 8,264 | Chainguard | 9,229 | | CleanStart | 1,652 | crates.io | 2,561 | | Debian | 59,722 | Echo | 6,669 | | GIT | 93,379 | GitHub Actions | 54 | | Go | 8,148 | Hackage | 32 | | Hex | 182 | Julia | 989 | | Linux | 25,415 | Mageia | 6,011 | | Maven | 6,690 | MinimOS | 86,925 | | npm | 222,154 | NuGet | 1,770 | | openEuler | 7,186 | openSUSE | 13,449 | | OSS-Fuzz | 3,958 | Packagist | 6,664 | | PyPI | 22,362 | Red Hat | 21,177 | | Rocky Linux | 3,619 | Root | 17,380 | | RubyGems | 4,550 | SUSE | 21,326 | | SwiftURL | 58 | TuxCare | 5,651 | | Ubuntu | 57,187 | Wolfi | 6,451 | *The counts above reflect the **advisory data** OSV provides. Which ecosystems CybeDefend **parses from your project** — for dependency detection, license lookup, and exploitable paths — is listed under [Feature Support by Ecosystem](#feature-support-by-ecosystem) below.* ### Files & Package Managers Below is a non-exhaustive list of **key files** we inspect: | Language/Framework | File Examples | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Node** | `npm-shrinkwrap.json`, `yarn.lock`, `pnpm-lock.yaml`, `pnpm-lock.yml`, `bun.lock`, `deno.lock`, `libman.json`, `package.json`, `package-lock.json` | | **Java** | `gradle.lockfile`, `build.gradle`, `pom.xml` | | **Swift** | `Package.resolved`, `Podfile.lock` | | **.NET (NuGet)** | `packages.lock.json`, `Packages.props`, `.csproj`, `.vbproj`, `.fsproj`, `.nuspec` | | **Kotlin** | `gradle.lockfile` | | **Elixir** | `mix.lock` | | **C/C++** | `conan.lock` | | **Scala** | `build.sbt`, `plugins.sbt`, `dependencies.scala`, `libraries.scala`, `.sbt.lock` | | **Clojure** | `deps.edn` | | **Generic** | `composer.json`, `requirements.txt`, `Pipfile`, `Pipfile.lock`, `poetry.lock`, `pyproject.toml`, `Gemfile`, `Gemfile.lock`, `Cargo.toml`, `Cargo.lock`, `go.mod`, `pubspec.yaml`, `pubspec.lock`, `packages.config`, `Package.swift`, `rebar.config`, `rebar3.config`, `rebar.lock`, `rebar3.lock`, `.gemspec`, `.yml`, `.yaml` | Files like `bun.lockb` (binary Bun lockfile), `.jar` / `.war` / `.ear` (Java archives), and `.deps.json` (.NET build output) are **not supported** for SCA parsing. Use their text-based equivalents instead (`bun.lock`, `pom.xml` / `build.gradle`, `packages.lock.json`). ### Feature Support by Ecosystem Not all ecosystems support every SCA feature. The table below shows which features are available for each ecosystem: | Ecosystem | Dependency Detection | License Lookup | Exploitable Path | | ---------------------------------- | :------------------: | :------------: | :--------------: | | **npm / Yarn / pnpm / Bun / Deno** | ✅ | ✅ | ✅ | | **pip / Poetry / Pipenv** | ✅ | ✅ | ✅ | | **Maven / Gradle** (Java, Kotlin) | ✅ | ✅ | ✅ | | **Scala** | ✅ | ✅ | ✅ | | **Go modules** | ✅ | ✅ | ✅ | | **NuGet** (.NET) | ✅ | ✅ | ✅ | | **Composer** (PHP) | ✅ | ✅ | ✅ | | **Cargo** (Rust) | ✅ | ✅ | ✅ | | **Swift PM / CocoaPods** | ✅ | ✅ | ✅ | | **Pub** (Dart/Flutter) | ✅ | ✅ | ✅ | | **Hex** (Elixir/Erlang) | ✅ | ✅ | ✅ | | **RubyGems** (Ruby) | ✅ | ✅ | ✅ | | **Clojure** (Clojars) | ✅ | ✅ | ✅ | | **Conan** (C/C++) | ✅ | ✅ | ✅ | | **GitHub Actions** | ✅ | ✅ | ✅ | | **Rebar** (Erlang) | ✅ | ✅ | ✅ | If you use special file names or custom project layouts, you can configure file-patterns in the CybeDefend dashboard to ensure they are recognized and scanned. *** ## 4. Secret Scanning **Secret scanning** detects hardcoded secrets — API keys, tokens, passwords, private keys, and other credentials — exposed in your source code. CybeDefend runs **Gitleaks** under the **CybeDefend Engine** to surface these findings alongside your SAST, SCA, and IaC results in a single view. ### Secret Scanning Tools | Engine | Scanning Tool | | --------------------- | ------------- | | **CybeDefend Engine** | Gitleaks | *** **Related:** [Scan Parameters](/latest/code-scanning/scanning-options/scan-parameters) · [Create a Project](/latest/get-started/project-management/create-project) · [Cybe Analysis](/latest/agent-ai-integration/cybe-analysis-detail) # .cybeignore Exclusion File Source: https://docs.cybedefend.com/latest/code-scanning/scanning-options/cybedefend-ignore-file Exclude files from SAST reports with a .cybeignore file using gitignore syntax ## Overview The `.cybeignore` file lets you exclude specific files or directories from SAST vulnerability reports. It uses the same syntax as `.gitignore`, so it is familiar and easy to use. To suppress a single finding on one precise line instead of a whole file, use an [inline `cybedefend-ignore` comment](/latest/code-scanning/scanning-options/inline-ignore-comments). ## How It Works Create a `.cybeignore` file in your project's root directory to define exclusion patterns. Vulnerabilities found in matching files are automatically filtered from scan results. ## Where CybeDefend Looks The scanner reads the **first** file it finds, in this order: | Order | Path | Status | | ----- | -------------------- | ------------------------------------- | | 1 | `.cybeignore` | **Recommended** | | 2 | `.cybedefend` | Deprecated — still read | | 3 | `.cybedefend/ignore` | Use when `.cybedefend` is a directory | **`.cybedefend` is deprecated.** It still works and nothing breaks today, but it collides with the `.cybedefend/` directory that [VibeDefend](/latest/agent-ai-integration/vibedefend) creates for `config.json` — a single path cannot be both a file and a directory. Rename your file to `.cybeignore`; the contents do not change. If your repository is linked with VibeDefend, you already have a `.cybedefend/` **directory**. You have two options, and they behave identically: * Put your patterns in `.cybeignore` at the project root (recommended), or * Put them in `.cybedefend/ignore`, alongside `config.json`. ## Usage ### Creating a .cybeignore File Create a file named `.cybeignore` in your project root: ```bash theme={null} # Ignore test files **/test/** **/tests/** **/*_test.py **/*_test.go # Ignore dependencies node_modules/ vendor/ .venv/ # Ignore specific directories **/examples/** **/demo/** # Ignore by extension *.min.js *.log ``` ### Migrating from .cybedefend Renaming the file is the whole migration — the syntax is unchanged: ```bash theme={null} git mv .cybedefend .cybeignore ``` If you use VibeDefend and the root path is taken by the `.cybedefend/` directory, move your patterns inside it instead: ```bash theme={null} mv my-patterns.txt .cybedefend/ignore ``` ### Supported Patterns The syntax is identical to `.gitignore`: | Pattern | Description | Example | | ------------ | ----------------------- | --------------------- | | `file.txt` | Ignore specific file | `secrets.txt` | | `*.ext` | Ignore by extension | `*.log` | | `dir/` | Ignore directory | `node_modules/` | | `**/pattern` | Recursive matching | `**/bad/**` | | `!file.txt` | Negation (don't ignore) | `!important.log` | | `#comment` | Comment line | `# This is a comment` | Negation is the tool for excluding a whole class while keeping one member of it under review: ```bash theme={null} # Exclude every spec file… **/*.spec.ts # …except this one, which carries a credential whose origin is still unconfirmed !services/export/redact-secrets.spec.ts ``` ## Scope `.cybeignore` filters every finding produced by the SAST/IaC scanner binary: | Scan type | Filtered by `.cybeignore`? | | ---------- | -------------------------- | | SAST | Yes | | IaC | Yes | | **Secret** | **Yes** | | CI/CD | Yes | | SCA | No — separate scanner | | Container | No — separate scanner | **Excluding a file also hides its secret findings.** Gitleaks runs as a second pass inside the same scanner and shares the same exclusion list, so a path you exclude here stops being reported for hardcoded credentials too — including credentials a *later* commit adds to that file. This matters most for the patterns people reach for first. `**/*.spec.ts` or `tests/` will silence Gitleaks across your whole test suite, which is exactly where fixture credentials — and the occasional real one pasted in by mistake — tend to live. When only a few findings in a file are false positives, prefer [inline `cybedefend-ignore` comments](/latest/code-scanning/scanning-options/inline-ignore-comments) over listing the whole file here: the exclusion stays scoped to the lines you reviewed, and the rest of the file keeps being scanned. ## Common Use Cases ### Ignore Test Code ``` # .cybeignore **/test/** **/tests/** **/__tests__/** *.spec.js *.test.js **/*_test.py ``` ### Ignore Third-Party Code ``` # .cybeignore node_modules/ vendor/ third_party/ .venv/ ``` ### Ignore Demo/Example Code ``` # .cybeignore **/examples/** **/demo/** **/samples/** docs/code-examples/** ``` ### Ignore Configuration Templates ``` # .cybeignore *.example.yml *.template.json config/sample_*.py ``` ## Best Practices Use `.cybeignore` responsibly. Don't ignore real vulnerabilities in production code. ### Exclude Files, Not Findings You Dislike A file-level exclusion is right when the **whole file** is out of scope for SAST — a test fixture, a vendored dependency, a demo. When a finding is a false positive but the file also holds production code, use an [inline `cybedefend-ignore` comment](/latest/code-scanning/scanning-options/inline-ignore-comments) instead, so the rest of the file stays under review. ### Document Your Exclusions Always add comments explaining why files are excluded: ``` # .cybeignore # DEPENDENCIES # Third-party code managed by maintainers node_modules/ vendor/ # TEST CODE # Tests intentionally contain unsafe code for testing **/test/** # KNOWN FALSE POSITIVES # Ticket #123: Custom validation used src/legacy/auth_handler.py ``` ### Include in Code Reviews * Add `.cybeignore` to your repository * Review changes in pull requests * Regularly audit exclusion patterns ### Verify What You Wrote `.cybeignore` uses the gitignore engine, so git itself can check your patterns before you commit them: ```bash theme={null} git ls-files | git -c core.excludesFile=.cybeignore check-ignore --no-index --stdin ``` Every path it prints is a file that will drop out of your SAST results. If a production file appears in that list, your pattern is too broad. ### Monitor Impact Check scan logs to see which file was loaded and how many vulnerabilities were filtered: ``` [IgnoreFilter] loaded exclusion patterns from .cybeignore Filtered out 12 vulnerabilities based on .cybeignore patterns After filtering: 45 vulnerabilities to report ``` ## Troubleshooting ### Patterns Not Matching * Use `**/` for recursive matching: `**/bad/**` * Ensure correct path separators (always `/`) * Check that `.cybeignore` is in the project root * Review scan logs for path details ### File Not Found * Verify `.cybeignore` is included in your repository — it must be committed, not gitignored * Check file permissions * Ensure the file is at the project root level * If you have a `.cybedefend/` **directory**, the legacy root file cannot exist; use `.cybeignore` or `.cybedefend/ignore` ### Nothing Is Being Filtered Look for the loader line in your scan logs. `[IgnoreFilter] no .cybeignore file found` means no candidate was readable at all — most often the file was never committed, or it sits in a subdirectory rather than the project root. ## Example Configuration Here's a comprehensive example: ``` # .cybeignore # ============================================ # THIRD-PARTY DEPENDENCIES # ============================================ node_modules/ vendor/ .venv/ third_party/ # ============================================ # TEST CODE # ============================================ **/test/** **/tests/** **/__tests__/** **/*_test.py **/*_test.go *.spec.js *.test.js # ============================================ # EXAMPLES & DOCUMENTATION # ============================================ **/examples/** **/demo/** docs/vulnerable_examples/** # ============================================ # BUILD ARTIFACTS # ============================================ dist/ build/ *.min.js *.bundle.js # ============================================ # CONFIGURATION TEMPLATES # ============================================ *.example.yml *.template.json config/sample_*.py ``` The `.cybeignore` file is processed during scanning. Excluded vulnerabilities won't appear in your reports or affect your project metrics. # Inline Ignore Comments Source: https://docs.cybedefend.com/latest/code-scanning/scanning-options/inline-ignore-comments Suppress a single finding directly in your source code with a cybedefend-ignore comment ## Overview The `cybedefend-ignore` directive lets you silence a specific finding by adding a comment in your source code, on the vulnerable line or on the line directly above it. It is the right tool for confirmed false positives: the directive lives next to the code, is reviewed in pull requests, and keeps the finding silenced on every subsequent scan. Use the [`.cybeignore` exclusion file](/latest/code-scanning/scanning-options/cybedefend-ignore-file) when you want to exclude whole files or directories. Use an inline comment when you want to exclude one precise line. ## Supported Scanners The directive is applied to every finding produced by the code scanners: | Scanner type | Rule ID | | ------------ | ---------------------------------------------------- | | SAST | Rule identifier shown on the finding in the platform | | IaC | Rule identifier shown on the finding in the platform | | Secrets | Rule identifier shown on the finding in the platform | Use the rule identifier displayed on the finding when writing a scoped directive. SCA, container and AI-BOM findings are not attached to a source line and cannot be suppressed with an inline comment. ## Syntax The directive is matched as a plain token, so it works with any comment style: `//`, `#`, `/* */`, ``, `--`, etc. Matching is case-insensitive. ``` cybedefend-ignore cybedefend-ignore: cybedefend-ignore[]: cybedefend-ignore[,]: ``` | Form | Effect | | ------------------------- | ---------------------------------------------------------------------------------------------------------------- | | `cybedefend-ignore` | Blanket ignore: suppresses every finding reported on that line, whatever the rule | | `cybedefend-ignore[RULE]` | Scoped ignore: suppresses only findings from the listed rule(s). Other rules on the same line are still reported | | `: reason` | Optional free text. Always add one so reviewers know why the finding is a false positive | ## Placement The scanner checks two lines for each finding: the vulnerable line itself and the line directly above it. ### On the same line ```javascript theme={null} const query = `SELECT * FROM users WHERE id = ${id}`; // cybedefend-ignore: id is validated as an integer upstream ``` ### On the line above ```python theme={null} # cybedefend-ignore[]: table name comes from a static allowlist cursor.execute(f"SELECT * FROM {table} WHERE id = %s", (user_id,)) ``` Only the line directly above is checked. A directive two lines above the finding, or a directive followed by a blank line, has no effect. ## Examples by Language ### JavaScript / TypeScript ```javascript theme={null} // cybedefend-ignore: content is escaped by the template engine res.send(renderedHtml); ``` ### Python ```python theme={null} subprocess.run(cmd, shell=True) # cybedefend-ignore[]: cmd is a hard-coded constant ``` ### Go ```go theme={null} // cybedefend-ignore: file path is built from an internal enum, not user input data, err := os.ReadFile(path) ``` ### Terraform (IaC) ```hcl theme={null} resource "aws_s3_bucket" "public_assets" { bucket = "my-public-assets" # cybedefend-ignore[]: this bucket intentionally serves public static assets acl = "public-read" } ``` ### YAML / Kubernetes (IaC) ```yaml theme={null} containers: - name: app # cybedefend-ignore: dev-only manifest, never deployed to production securityContext: privileged: true ``` ### Secrets ```javascript theme={null} // cybedefend-ignore[]: sample value used in unit tests const API_KEY = "test-0000000000000000000000000000"; ``` ## Behaviour * **Every scan type**: the directive is honoured on both full scans and diff scans. * **Persistent**: because the directive is committed with the code, the finding stays suppressed on all later scans until the comment is removed. * **Silent**: suppressed findings do not appear in the platform, in reports, or in project metrics. * **Safe by default**: if the scanner cannot read the source file, the finding is kept and reported. Scan logs record how many findings were dropped: ``` Ignoring vulnerability in src/db/query.js (inline cybedefend-ignore directive) Filtered out 3 vulnerabilities via inline cybedefend-ignore directives After filtering: 42 vulnerabilities to report ``` ## Best Practices Prefer a scoped directive (`cybedefend-ignore[RULE]`) over a blanket one. A blanket ignore also hides any new rule that later fires on the same line. * **Always give a reason.** A bare `cybedefend-ignore` tells a reviewer nothing. Explain why the finding does not apply. * **Review in pull requests.** Treat a new ignore directive like a security decision. Reviewers should be able to verify the justification. * **Audit periodically.** Search your codebase for `cybedefend-ignore` and remove directives that no longer apply. * **Do not use it to hide real issues.** For findings that are true positives but accepted, mark them as such in the platform instead so they remain visible. ## Other Ignore Comments Ignore comments from other security tools have no effect on CybeDefend scans. Only `cybedefend-ignore` is honoured, so suppressions are consistent across all scanner types. ## Troubleshooting ### The finding is still reported * Check that the comment is on the vulnerable line or the line directly above it. * If you used a scoped form, verify the rule ID matches exactly the one shown on the finding. * Confirm the change was committed and included in the scanned branch. ### Another finding disappeared unexpectedly A blanket `cybedefend-ignore` suppresses every rule on that line. Switch to the scoped form to keep other findings visible. # Scan Project Parameters Source: https://docs.cybedefend.com/latest/code-scanning/scanning-options/scan-parameters Configure your scan settings: choose scanner types, enable fast scanning, and set vulnerability severity levels. In CybeDefend, you can customize your scans by adjusting key parameters in **Project Settings** → **Scanning**. This guide covers the essential scan configuration options. Scan Settings Overview *** ## Scanner Types CybeDefend supports multiple security scanning methods. Enable the scanners that match your project needs: ### SAST (Static Application Security Testing) Analyzes source code for security vulnerabilities before runtime. ### SCA (Software Composition Analysis) Inspects open-source dependencies and libraries for known vulnerabilities. ### IaC (Infrastructure as Code) Detects misconfigurations in infrastructure definitions (Terraform, Kubernetes, Docker, etc.). ### Container Scans container images for vulnerabilities in base images, packages, and configurations. Scanning Methods We recommend **enabling all scanners** for comprehensive security coverage across your entire stack. *** ## Vulnerability Severity Levels Select which **severity levels** to include in your scan results: * **Critical**: Immediate security risks requiring urgent action * **High**: Serious vulnerabilities that should be prioritized * **Medium**: Moderate security issues to address * **Low**: Minor vulnerabilities or potential improvements Vulnerability Severity Choice Unchecked severity levels will not appear in your results, allowing you to focus on the most critical findings. This setting filters scan results only—it does not impact scanning time or depth. *** ## AI-Powered Features For advanced vulnerability analysis and remediation, CybeDefend offers AI agent features that can be enabled in project settings: * **Cybe Analysis**: Intelligent false positive detection and vulnerability triage * **Cybe AutoFix**: Automated fix generation with pull/merge requests * **Cybe Security Champion**: Interactive security guidance and chatbot Learn more about configuring AI features in the [Agent & AI Integration](/latest/agent-ai-integration/cybe-analysis-detail) section. *** ## Saving Your Configuration After adjusting scan parameters: 1. **Save your settings** in the project configuration 2. **Trigger a new scan** manually or wait for automatic scanning 3. **Review results** in your project dashboard Balance **scan coverage** and **speed** based on your development stage. Use fast scanning for rapid iterations, and comprehensive scanning for releases. # Container Image Scanning Source: https://docs.cybedefend.com/latest/container-scanning/container-image-scanning Scan container images for vulnerabilities from public registries or private repositories to secure your containerized applications. CybeDefend's **Container Image Scanning** provides comprehensive security analysis for your Docker containers and images. Whether you're using public images from Docker Hub or private images from your organization's registry, our scanning engine identifies vulnerabilities in your container layers and dependencies. Container Image Scanning ## Scanning Options ### Public Container Images Scan any publicly available container image from popular registries: * **Docker Hub**: Pull and scan any public image directly by name * **Public Registries**: Access images from GCR, ECR, and other public repositories * **Official Images**: Scan official language runtime images, database images, and more * **Community Images**: Analyze community-maintained containers for security issues ### Private Container Images Securely scan your organization's private container images: * **Private Registries**: Connect to your private Docker registries with authentication * **Secure Access**: Use API keys, tokens, service accounts, or cross-account IAM roles (e.g. AWS ECR) — no secret leaves your control * **Organization Credentials**: Define registry credentials once at the organization level and link them to the projects allowed to use them * **Organization Images**: Scan custom-built images from your CI/CD pipelines * **Multi-Registry Support**: Connect multiple private registries simultaneously ## How Container Scanning Works 1. **Image Selection**\ Choose to scan either a public image by name or connect to your private registry to select specific images. 2. **Layer Analysis**\ Our scanner analyzes each layer of your container image, examining: * Base operating system vulnerabilities * Installed packages and libraries * Application dependencies * Configuration files 3. **Vulnerability Detection**\ Identify security issues across multiple categories: * **CVE Vulnerabilities**: Known security vulnerabilities in packages * **Malware Detection**: Scan for malicious code or suspicious files * **Secrets Scanning**: Detect exposed API keys, passwords, or tokens * **Configuration Issues**: Identify misconfigurations and security weaknesses 4. **Results & Reporting**\ Get detailed reports with: * Vulnerability severity levels (Critical, High, Medium, Low) * Affected packages and versions * Remediation recommendations * Layer-by-layer breakdown ## Scanning Process Choose between public image scanning or connect to your private registry Enter the image name and tag for public images, or browse your private registry Set scanning parameters and select vulnerability types to detect Our engine pulls and analyzes the container image layers Access comprehensive vulnerability reports and remediation guidance ## Benefits Identify vulnerabilities before deploying containers to production environments. Understand which layer introduced specific vulnerabilities for targeted fixes. Seamlessly connect to multiple public and private container registries. Meet security compliance requirements for containerized applications. *** **Related:** [Dockerfile Scanning](/latest/container-scanning/dockerfile-security-scanning) · [Registry Integrations](/latest/container-scanning/registry-integrations/docker-hub) · [Create a Project](/latest/get-started/project-management/create-project) # Dockerfile Security Scanning Source: https://docs.cybedefend.com/latest/container-scanning/dockerfile-security-scanning Detect vulnerabilities and security issues in Dockerfile configurations and container image builds during code scanning. CybeDefend's **Dockerfile Security Scanning** analyzes your Dockerfile configurations for security vulnerabilities, misconfigurations, and best practice violations. This scanning is automatically integrated into your regular code scanning process, ensuring container security is part of your development workflow. ## How It Works When CybeDefend scans your codebase, it automatically detects Dockerfile files and performs comprehensive security analysis alongside your source code scanning. This integrated approach ensures both your application code and container configurations are secure. ### Automatic Detection CybeDefend automatically identifies and scans: * `Dockerfile` files in your repository * Multi-stage build configurations * Docker Compose files with build contexts * Custom Dockerfile variants (e.g., `Dockerfile.prod`, `Dockerfile.dev`) ### Security Analysis The scanner examines multiple aspects of your Dockerfile: 1. **Base Image Security** * Identifies vulnerable base images * Recommends secure alternatives * Checks for outdated image versions 2. **Configuration Issues** * Detects insecure configurations * Identifies privilege escalation risks * Finds exposed sensitive data 3. **Best Practice Violations** * Running containers as root user * Missing health checks * Inefficient layer management ## Types of Issues Detected Detection of base images with known CVEs and security vulnerabilities Hard-coded passwords, API keys, or sensitive data in Dockerfile instructions Containers running as root or with unnecessary elevated privileges Exposed ports and insecure network configurations ## Integration with Code Scanning Dockerfile scanning is seamlessly integrated into your regular code scanning workflow: ### Automatic Inclusion * No additional configuration required * Scans run alongside SAST, SCA, and IaC analysis * Results appear in the same vulnerability dashboard ### Scan Triggers * **Repository Scans**: Includes all Dockerfiles in the repository * **CI/CD Integration**: Scans Dockerfiles in pull requests and commits * **Manual Scans**: On-demand analysis of container configurations ### Results Integration * Dockerfile issues appear with other security findings * Severity levels aligned with overall vulnerability scoring * Remediation guidance provided for each issue Dockerfile security scanning is automatically enabled when you scan repositories containing Docker configurations. No additional setup is required beyond your regular code scanning configuration. *** **Related:** [Container Image Scanning](/latest/container-scanning/container-image-scanning) · [IaC Security](/latest/code-scanning/scanning-options/code-repository-scanning) · [Scan Parameters](/latest/code-scanning/scanning-options/scan-parameters) # Amazon ECR Source: https://docs.cybedefend.com/latest/container-scanning/registry-integrations/amazon-ecr Scan container images stored in Amazon Elastic Container Registry, using a cross-account IAM role or static AWS keys. **Amazon Elastic Container Registry (ECR)** is AWS's managed Docker container registry. CybeDefend connects to ECR to list your repositories, browse image tags, and scan images for vulnerabilities. CybeDefend supports two authentication modes: CybeDefend assumes a **cross-account IAM role** in your AWS account. No AWS secret is ever shared — access is granted by a role you fully control and can revoke at any time. Provide a long-lived IAM **access key ID** and **secret access key**. Simpler to set up, but the secret is stored by CybeDefend and must be rotated manually. ECR credentials are managed at the **organization level** and linked to one or more projects. Only the projects a credential is linked to can browse its images and start scans. See [Organization credentials & project linking](#organization-credentials--project-linking). ## Option 1 — IAM role (recommended) With this mode, CybeDefend never holds an AWS secret. You create an IAM **role** in your own AWS account whose trust policy allows **only** CybeDefend's AWS principal to assume it, gated by a unique **External ID**. At scan time, CybeDefend assumes that role, exchanges it for a **short-lived ECR token**, and hands only that token to the scanner — your AWS credentials never reach the scanning engine. ### How it works CybeDefend issues a unique **External ID** and produces two ready-to-paste JSON policies: a **trust policy** (who may assume the role) and a **permission policy** (read-only ECR access). You create an IAM role with that trust policy and attach the permission policy. The role lives entirely in your account. To list images or run a scan, CybeDefend calls `sts:AssumeRole` (passing the External ID) to obtain **temporary** credentials, then calls `ecr:GetAuthorizationToken` to get a short-lived Docker login. Only that registry token is injected into the scanner pod. ### Setup Start from your project's **Container Registries → AWS ECR** integration, pick **IAM role**, choose the **AWS region** of your registry, and click **Generate setup instructions**. CybeDefend returns the External ID, the trusted principal, and the two policies referenced below. Keep the setup window open until you save. Each click on **Generate setup instructions** mints a **new External ID** — a role you already created in AWS will be refused until you update its trust policy with the new value. AWS Console → **IAM** → **Roles** → **Create role** → select **Custom trust policy**, paste the trust policy JSON below, then click **Next**. ```json Trust policy (example) theme={null} { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "cybedefend--" } } } ] } ``` The `Principal.AWS` value is **CybeDefend's AWS service account** (a single, shared principal). The `sts:ExternalId` condition is mandatory — it is what prevents another tenant from assuming your role (the *confused-deputy* protection). Use the exact values from the setup window. On **Add permissions**, select nothing and click **Next**. Give the role a name (e.g. `cybedefend-ecr-scan`) and click **Create role**. Open the role you just created → **Permissions** tab → **Add permissions** → **Create inline policy** → **JSON** tab. Paste the permission policy below, name it (e.g. `cybedefend-ecr-pull`), then create it. ```json Permission policy theme={null} { "Version": "2012-10-17", "Statement": [ { "Sid": "EcrAuthToken", "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" }, { "Sid": "EcrPullAndDescribe", "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:BatchCheckLayerAvailability", "ecr:DescribeRepositories", "ecr:DescribeImages" ], "Resource": "*" } ] } ``` These are **read-only** ECR permissions — enough to list repositories, inspect images, and pull layers for scanning. CybeDefend never needs write access. From the role's summary page, copy its **ARN** (e.g. `arn:aws:iam::123456789012:role/cybedefend-ecr-scan`) and paste it back into CybeDefend, then click **Save**. CybeDefend immediately verifies it can assume the role and reach ECR before storing the integration. The 12-digit AWS account ID and the registry URL (`.dkr.ecr..amazonaws.com`) are derived automatically from the role ARN and region — you don't enter them yourself in IAM-role mode. ## Option 2 — Static AWS keys If you prefer (or can't use cross-account roles), provide a long-lived IAM access key. CybeDefend encrypts the secret at rest and verifies it against AWS STS before storing it. | Field | Description | Example | | ------------------------------ | --------------------------------------- | ------------------------------------------ | | **AWS Account ID (12 digits)** | Your 12-digit AWS account ID | `123456789012` | | **AWS Region** | Region where your ECR registry lives | `us-east-1` | | **Access Key ID** | AWS IAM access key ID | `AKIAIOSFODNN7EXAMPLE` | | **Secret Access Key** | AWS IAM secret access key | `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` | | **Description** | Optional description for the credential | `Production ECR registry` | AWS Console → **IAM** → **Users** → **Create user**. Attach `AmazonEC2ContainerRegistryReadOnly` — it grants exactly the ECR read/pull access CybeDefend needs. **Security credentials** → **Create access key** → select **Application running outside AWS**. Copy the **Access Key ID** and **Secret Access Key** and paste them into CybeDefend along with the account ID and region. The Secret Access Key is shown only once in AWS. Copy it immediately before closing the dialog. Static keys are long-lived — rotate them regularly (every 90 days is the AWS recommendation). ## Organization credentials & project linking ECR credentials are stored once per **organization** and then **linked** to the projects allowed to use them: An organization admin adds the credential (IAM role or static keys) a single time, under the organization. The same credential is linked to one or more projects. Only **linked** projects can list images and start scans with it. Updating the credential (or switching from static keys to an IAM role) rotates it for every linked project at once. Deleting the credential removes it everywhere; deleting a project only drops that project's link — the org credential stays. ## Security best practices Cross-account roles avoid sharing any secret and can be revoked instantly by deleting the role or its trust. Never remove the `sts:ExternalId` condition from the trust policy — it is what scopes the role to your tenant. Grant only the read-only ECR actions above (or `AmazonEC2ContainerRegistryReadOnly` for static keys). Write access is never required. If you use static keys, rotate them on a schedule and store them only in AWS — CybeDefend already encrypts them at rest. ## Troubleshooting * Confirm the trust policy's `Principal.AWS` matches the **trusted principal** shown in the setup window. * Confirm the `sts:ExternalId` in the trust policy is **exactly** the External ID CybeDefend generated. Regenerating the instructions creates a new External ID — update the role's trust policy if you did. * Make sure the role still exists and the region matches your registry. * The ARN must look like `arn:aws:iam::<12-digit-account>:role/`. * Verify you copied the role's ARN (not the user's or the policy's) from the role summary page. * Verify the Access Key ID and Secret Access Key are correct and still active. * Ensure the IAM user has the `AmazonEC2ContainerRegistryReadOnly` permissions. * Pass the image as `repository:tag` **without** the registry host — the host is derived from the credential and is prepended automatically. * Ensure the credential can `ecr:DescribeRepositories` / `ecr:DescribeImages` for that repository. * ECR repositories are region-specific. The region on the credential must match the registry that holds your images. *** **Related:** [Container Image Scanning](/latest/container-scanning/container-image-scanning) · [Registry Integrations](/latest/container-scanning/registry-integrations/docker-hub) · [ECR API reference](/latest/api-reference/endpoint/ecr-container-registry/prepare-an-iam-role-based-ecr-integration) # Azure Container Registry Source: https://docs.cybedefend.com/latest/container-scanning/registry-integrations/azure-container-registry Scan container images stored in Azure Container Registry. **Azure Container Registry (ACR)** is Microsoft Azure's managed Docker registry service. CybeDefend integrates with ACR to scan your container images using Service Principal authentication. ## CybeDefend Configuration | Field | Description | Example | | ------------------------------ | ------------------------------------------------ | -------------------------------------- | | **Login Server** | Your ACR login server URL | `myregistry.azurecr.io` | | **Service Principal App ID** | Application (client) ID of the service principal | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | | **Service Principal Password** | Service principal password/secret | `*****` | | **Description** | Optional description for the registry | `Production ACR registry` | ## How to Get Azure Container Registry Credentials ### Option A: Admin User (Quick Setup) Go to Azure Portal → **Container Registries** → Select your registry Go to **Settings** → **Access keys** → Enable **Admin user** Copy the **username** and **password** provided ### Option B: Service Principal (Recommended) Create a Service Principal with the **AcrPull** or **AcrPush** role Assign the Service Principal to your ACR with appropriate permissions Enter the Service Principal App ID and password in CybeDefend Using Admin User is convenient for testing but Service Principal is recommended for production environments. ## Security Best Practices Prefer Service Principals over Admin User for production environments. Use the minimal `AcrPull` role for scanning operations only. Rotate Service Principal secrets regularly to minimize exposure. When running in Azure, prefer Managed Identities for authentication. ## Troubleshooting * Verify Service Principal App ID and password are correct * Check if the client secret has expired * Ensure the login server URL is correct * Verify the Service Principal has `AcrPull` role * Check RBAC assignments on the registry # Docker Hub Source: https://docs.cybedefend.com/latest/container-scanning/registry-integrations/docker-hub Connect and scan container images from Docker Hub. **Docker Hub** is the default registry for Docker containers. CybeDefend allows you to scan both public and private images using Personal Access Token authentication. ## CybeDefend Configuration | Field | Description | Example | | ------------------------- | -------------------------------- | ----------------------- | | **DockerHub Username** | Your Docker Hub username | `username` | | **Personal Access Token** | Docker Hub Personal Access Token | `dckr_pat_xxxxxxxxxxxx` | ## How to Create a Personal Access Token in DockerHub Go to Docker Hub → **Account Settings** → **Security** → **Access Tokens** Create a new Access Token with a description (e.g., `cybedefend-scanner`) Select **Read-only** permission (recommended for scanning) Copy the token immediately and paste it in CybeDefend (you won't see it again!) The Personal Access Token is only displayed once when created. Make sure to copy it immediately before closing the dialog. ## Security Best Practices Create tokens with minimal permissions required for scanning operations only. Change your access tokens periodically to minimize security risks. Store tokens in environment variables or secret managers, never in code. Create a separate Docker Hub account for automated scanning. ## Troubleshooting * Verify username and token are correct * Check if the token has expired * Ensure the token has the required permissions * Docker Hub has pull rate limits for free accounts * Consider upgrading to Docker Hub Pro for higher limits * Use authenticated pulls to get higher rate limits # GitHub Container Registry Source: https://docs.cybedefend.com/latest/container-scanning/registry-integrations/github-container-registry Scan container images stored in GitHub Container Registry (GHCR). **GitHub Container Registry (GHCR)** is GitHub's container registry for Docker images. CybeDefend integrates with GHCR to scan public and internal container images. **Supported Image Visibility:** * ✅ **Public** images - Accessible to everyone * ✅ **Internal** images - Accessible within your organization * ❌ **Private** images - Not supported by CybeDefend ## CybeDefend Configuration **Personal Access Token Required:** A Personal Access Token with `read:packages` scope is required to scan internal container images. Public images can be scanned without authentication. | Field | Description | Example | | ------------------------- | -------------------------------------------------------------------- | ---------------------------- | | **GitHub Username** | Your GitHub username or organization | `myorg` | | **Personal Access Token** | GitHub PAT with `read:packages` scope (required for internal images) | `ghp_xxxxxxxxxxxx` | | **Description** | Optional description for the registry | `Production GitHub Registry` | ## How to Create a Personal Access Token (PAT) in GitHub A Personal Access Token with the `read:packages` scope is **required** to scan internal container images. Public images can be accessed without authentication. Go to GitHub → **Settings** → **Developer settings** → **Personal access tokens** → **Tokens (classic)** Click **Generate new token** and select **Generate new token (classic)** Select the required scopes for internal container images: * ✅ `read:packages` (required for internal images) * Optional: `write:packages` (if you need write access) Copy the generated token and paste it in CybeDefend The Personal Access Token is only displayed once when created. Make sure to copy it immediately before leaving the page. ## Security Best Practices Prefer fine-grained PATs over classic tokens when possible for better security. Only grant `read:packages` scope for scanning operations. Always set an expiration date for your tokens to limit exposure. Change your access tokens periodically to minimize security risks. ## Troubleshooting * Verify the PAT has `read:packages` scope * Check if the token has expired * Ensure the username matches the token owner * Verify you have access to the repository * Check package visibility settings * Ensure organization membership for internal packages * Private container images are not supported by CybeDefend * Change image visibility to **Internal** or **Public** to enable scanning * Contact your GitHub admin to modify package visibility settings # GitLab Container Registry Source: https://docs.cybedefend.com/latest/container-scanning/registry-integrations/gitlab-container-registry Scan container images stored in GitLab's integrated container registry. **GitLab Container Registry** provides a secure space for your Docker images. CybeDefend integrates with GitLab's registry to scan your containers for vulnerabilities. ## CybeDefend Configuration | Field | Description | Example | | ------------------------ | ---------------------------- | ------------------------------------- | | **GitLab Project ID** | Numeric project ID in GitLab | `12345` | | **Registry URL** | GitLab registry URL | `registry.gitlab.com` | | **Project Path** | Project path in GitLab | `username/project` or `group/project` | | **Project Access Token** | GitLab project access token | `glpat-xxxxxxxxxxxx` | ## How to Create a Project Access Token in GitLab Go to your GitLab project → **Settings** → **Access Tokens** Create a new token with a name (e.g., `CybeDefend Scanner`) Select the role: **Developer** Select the required scopes: * `read_api` (required to list images) * `read_registry` (required to access the registry) Click **Create project access token** and copy it immediately (you won't see it again!) Paste the credentials with your project information in CybeDefend The Project Access Token is only displayed once when created. Make sure to copy it immediately before closing the dialog. ## Security Best Practices Prefer project access tokens over personal tokens for better security isolation. Only grant `read_api` and `read_registry` scopes for scanning. Always set an expiration date for your tokens to limit exposure. Use Reporter role instead of Developer when only read access is needed. ## Troubleshooting * Verify token has both `read_api` and `read_registry` scopes * Check if the token has expired * Ensure the registry URL is correct * Verify the project ID is correct * Check project visibility settings * Ensure registry is enabled for the project # Google Container Registry Source: https://docs.cybedefend.com/latest/container-scanning/registry-integrations/google-container-registry Scan container images stored in Google Container Registry. **Google Container Registry (GCR)** is Google Cloud's managed Docker registry service. CybeDefend integrates with GCR to scan your container images using service account authentication. ## CybeDefend Configuration | Field | Description | Example | | ------------------------------ | ---------------------------------------- | ---------------------------------- | | **GCP Project ID** | Your Google Cloud project ID | `my-gcp-project-123` | | **Registry Hostname** | GCR hostname for your region | `gcr.io (Global/US)` | | **Service Account Key (JSON)** | Full JSON content of service account key | `{"type": "service_account", ...}` | ### Available Registry Hostnames | Hostname | Region | | ------------- | ---------------------- | | `gcr.io` | Global / United States | | `us.gcr.io` | United States | | `eu.gcr.io` | Europe | | `asia.gcr.io` | Asia | ## How to Create a Service Account Key in GCP Go to GCP Console → **IAM & Admin** → **Service Accounts** Create a new service account or select an existing one Grant the role **Storage Object Viewer** (read access) or **Storage Admin** (read/write) Create a new key in **JSON format** and download it Paste the complete JSON content in CybeDefend The service account key JSON file contains sensitive credentials. Store it securely and never commit it to version control. ## Security Best Practices Use `Storage Object Viewer` role for read-only access to images. Rotate service account keys regularly to minimize security risks. Prefer Workload Identity over service account keys when possible. Enable Cloud Audit Logs for monitoring and compliance. ## Troubleshooting * Verify the JSON key is valid and complete * Check if the service account has been deleted or disabled * Ensure the project ID matches your registry * Verify the service account has `Storage Object Viewer` role * Check if Container Registry API is enabled # Harbor Container Registry Source: https://docs.cybedefend.com/latest/container-scanning/registry-integrations/harbor Scan container images stored in Harbor registry. **Harbor** is an open-source enterprise container registry. CybeDefend integrates with Harbor to scan your container images using robot account authentication. ## CybeDefend Configuration | Field | Description | Example | | ------------------ | -------------------------------- | ---------------------------- | | **Harbor URL** | Full URL of your Harbor instance | `https://harbor.example.com` | | **Harbor Project** | Name of the Harbor project | `my-project` | | **Robot Username** | Robot account username | `robot$my-project+deploy` | | **Robot Token** | Robot account token | `*****` | | **Description** | Optional description | `Production Harbor Registry` | ## Required Robot Account Permissions | Resource | Permission | | -------------- | ---------------- | | **Artifact** | List, Read | | **Label** | List, Read | | **Project** | Read | | **Repository** | List, Pull, Read | | **Tag** | List | ## How to Configure Harbor Container Registry Connect to your Harbor instance and navigate to your project Go to **Robot Accounts** and create a new robot account with read access Configure the robot account permissions as listed above for scanning access Copy the robot username (e.g., `robot$project+name`) and the generated token Enter your Harbor URL, project name, robot username, and token in CybeDefend The robot token is only displayed once when created. Make sure to copy it immediately before closing the dialog. ## Security Best Practices Prefer robot accounts over personal credentials for automated scanning. Grant only the required permissions listed above for security. Configure robot account expiration dates to limit exposure. Always use TLS for Harbor connections to encrypt data in transit. ## Troubleshooting * Verify robot username format: `robot$project+name` * Check if the robot account has expired * Ensure the Harbor URL is correct * Verify robot account has the required permissions * Check project visibility settings # JFrog Artifactory Source: https://docs.cybedefend.com/latest/container-scanning/registry-integrations/jfrog-artifactory Scan container images stored in JFrog Artifactory. **JFrog Artifactory** is a universal artifact repository manager that supports Docker registries. CybeDefend integrates with JFrog Artifactory to scan your container images using access token authentication. ## CybeDefend Configuration | Field | Description | Example | | ------------------------- | ------------------------------- | --------------------------------------- | | **JFrog Artifactory URL** | Full URL of your JFrog instance | `https://company.jfrog.io` | | **Docker Repository Key** | Docker repository key name | `docker-local` | | **Username** | Artifactory username | `admin` | | **Access Token** | Access token for authentication | `*****` | | **Description** | Optional description | `Production JFrog Artifactory Registry` | ## How to Configure JFrog Artifactory Container Registry Connect to your JFrog Artifactory instance Go to **User Management** → **Access Tokens** and create a new token Ensure the token has read access to your Docker repositories Enter your Artifactory URL, Docker repository key, username, and access token Access tokens are only displayed once. Make sure to copy and store the token securely before closing the dialog. ## Security Best Practices Prefer access tokens over API keys for better security. Grant only read access to Docker repositories for scanning. Configure token expiration dates to limit exposure window. Rotate access tokens regularly (every 90 days recommended). ## Troubleshooting * Verify username and access token are correct * Check if the token has expired * Ensure the Artifactory URL is correct * Verify the Docker repository key is correct * Check if the repository is of type Docker # Red Hat Quay Source: https://docs.cybedefend.com/latest/container-scanning/registry-integrations/red-hat-quay Scan container images stored in Red Hat Quay registry. **Red Hat Quay** is an enterprise-grade container registry. CybeDefend integrates with both Quay.io (SaaS) and self-hosted Quay instances to scan your container images. ## CybeDefend Configuration | Field | Description | Example | | --------------------------------- | ------------------------ | ----------------------------- | | **Quay Host** | Quay hostname | `quay.io` | | **Namespace (Organization/User)** | Organization or username | `myorganization` | | **Robot Account Username** | Robot account username | `myorganization+deploy_robot` | | **Robot Account Token** | Robot account token | `*****` | | **Description** | Optional description | `Production Quay registry` | ## How to Configure Quay.io Container Registry Connect to your Quay.io account and navigate to your repository Go to **Repository Settings** → **Robot Accounts** and create a new robot account Grant the robot account **read access** to your repository Copy the robot username and token and paste them in CybeDefend The robot token is only displayed once when created. Make sure to copy it immediately before closing the dialog. ## Security Best Practices Prefer robot accounts over personal credentials for automated scanning. Grant only read access for scanning operations. Rotate robot account tokens regularly to minimize exposure. Limit robot account access to specific repositories only. ## Troubleshooting * Verify robot username format: `organization+robot_name` * Check if the robot account has been deleted * Ensure the token is correct * Verify robot account has read access to the repository * Check repository visibility settings # Scaleway Container Registry Source: https://docs.cybedefend.com/latest/container-scanning/registry-integrations/scaleway-container-registry Scan container images stored in Scaleway Container Registry. **Scaleway Container Registry** is Scaleway's managed Docker registry service available across multiple European regions. CybeDefend integrates with Scaleway to scan your container images using API secret key authentication. ## CybeDefend Configuration | Field | Description | Example | | -------------------------- | ------------------------------------------------------ | -------------------------------------- | | **Scaleway Project ID** | Your Scaleway project UUID | `550e8400-e29b-41d4-a716-446655440001` | | **Region** | Scaleway region where the registry is hosted | `fr-par` | | **Namespace Name** | The name of your Scaleway Container Registry namespace | `my-namespace` | | **Secret Key** | Your Scaleway API secret key | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | | **Description** (optional) | A label to help identify this credential | `Production registry` | ### Available Regions | Region Code | Location | | ----------- | ---------------------- | | `fr-par` | France, Paris | | `nl-ams` | Netherlands, Amsterdam | | `pl-waw` | Poland, Warsaw | ## How to Get Your Scaleway API Secret Key Go to [console.scaleway.com](https://console.scaleway.com) and log in to your account. Go to **Identity and Access Management (IAM)** → **API Keys**. Click **Generate an API key**. Select the project scope and set the purpose to container registry access. Copy the **Secret Key** value. This is only shown once — store it securely. In CybeDefend, go to your organization's **Container Registry** settings and add a new Scaleway credential with the secret key. The secret key is only displayed once when created. If you lose it, you must generate a new API key. ## How It Works Once credentials are stored, CybeDefend can: 1. **Browse namespaces** — List all container registry namespaces in your Scaleway project 2. **List images** — View all Docker images within a namespace 3. **List tags** — See all available tags for a specific image 4. **Scan images** — Pull and scan any image for known vulnerabilities Credentials are stored with **AES-256-GCM encryption** and are never exposed in API responses. ## Credential Management Credentials are managed at two levels: | Level | Actions | Permission Required | | ---------------- | -------------------------------------------- | --------------------- | | **Organization** | Create and delete credentials | `manage_integration` | | **Project** | View credentials, browse images, start scans | `read` / `start_scan` | Credentials are created at the organization level and can be used across all projects within that organization. ## Security Best Practices Create a dedicated API key with only Container Registry permissions. Rotate API keys regularly and update stored credentials in CybeDefend. Scope API keys to specific projects rather than granting organization-wide access. Monitor API key usage in Scaleway's IAM audit logs. ## Troubleshooting * Verify the secret key is correct and has not been revoked * Check that the API key has Container Registry permissions * Ensure the region matches the namespace location * Confirm the namespace name is spelled correctly (case-sensitive) * Verify the namespace exists in the selected region * Check that the API key's project scope includes the namespace * Ensure the API key has `ContainerRegistryFullAccess` or equivalent policy * Verify the API key is scoped to the correct Scaleway project * Verify the image name and tag are correct * Ensure the image exists in the specified namespace * Check that the `container_scanning` feature is enabled for your plan # Assigning Roles in Organizations and Teams Source: https://docs.cybedefend.com/latest/get-started/account-setup/assigning-roles Learn about the different roles available in CybeDefend organizations and teams, and how to manage user permissions. CybeDefend provides **distinct roles** for Organizations and Teams, each granting specific permissions. Update roles from Organization or Team settings to ensure everyone has appropriate access levels. Roles and Permissions Overview Each Organization has at least one Administrator/Creator, and each Team has at least one Team Manager. *** ## Organization Roles | **Role** | **Description** | **Key Permissions** | | ------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Administrator** | Top-level authority. Cannot modify their own role or another Admin’s role. |
  • Manage organization settings
  • Add/remove users
  • Update user roles
  • Create/delete teams
  • Read logs
  • Full access
| | **Manager** | High-level authority but slightly less than Administrator. |
  • Manage integrations
  • Add/remove users
  • Create teams
  • Read logs
| | **Billing Manager** | Focuses on financial or billing aspects within the organization. |
  • Access billing settings
  • Read organization info
| | **Member** | Standard member with basic read and limited write rights. |
  • Read organization information
  • Use assigned tools
| *** ## Team Roles | **Role** | **Description** | **Key Permissions** | | --------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Team Manager** | Leads the team. Cannot modify their own role or another Team Manager’s role. |
  • Manage team settings
  • Create/remove users
  • Update user roles
  • Create projects
  • Read logs
  • Start scans
| | **Analyst Developer** | Focuses on analyzing scan results and possibly contributing code fixes. |
  • Read and create reports
  • Change vulnerability states
  • Start scans
  • Full read on scan results
| | **Developer** | Primarily involved in writing code. |
  • Read scan results
  • Change vulnerability states
  • Start scans
| | **Read Only** | Has read access to projects, teams, and scan outcomes but no editing rights. |
  • View team details
  • View project scan results (where granted by org/team)
| All roles inherit the Organization’s overarching permissions, but these team roles define additional capabilities within each team. *** ## Managing Organization Member Roles 1. **Open Organization Settings → Manage**\ Scroll to the user list and click **Manage** next to a user’s name. 2. **Choose New Role**\ Pick from Administrator, Manager, Billing Manager, or Member. 3. **Save Changes**\ The user’s permissions update instantly. Change Organization Member Role Must keep at least one Administrator. Admins cannot downgrade themselves or each other. *** ## Managing Team Member Roles 1. **Organization Settings → Teams → Manage**\ Select a team, find the user, and click **Manage** next to their name. 2. **Assign Role**\ Pick Team Manager, Analyst Developer, Developer, or Read Only. 3. **Confirm**\ The user’s capabilities in that team adjust immediately. Each team must have at least one Team Manager. Team Managers cannot modify their own or each other’s roles. *** ## Future Role Customization Some organizations may require specialized roles. If your use case isn’t covered: * Visit our [Roadmap](https://cybedefend.featurebase.app/roadmap) for upcoming role expansions. * Send feedback to our dev team—if enough customers share a need, we may add a new role. We strive to balance simplicity and flexibility when expanding role definitions. # Create Account Source: https://docs.cybedefend.com/latest/get-started/account-setup/create-account-organization Learn how to create your CybeDefend account, set up an organization, and integrate your code repositories. CybeDefend simplifies onboarding by allowing you to create an account through **OAuth2** (Google, Microsoft, GitHub, or GitLab). After signing in, you can form an **Organization** to group your projects and manage access. Once your repositories are connected, CybeDefend automatically starts scanning them. *** ## 1. Create an Account via OAuth2 1. **Go to the CybeDefend Registration Page**\ Choose the sign-up option of your choice (Google, Microsoft, GitHub, GitLab). 2. **Select Your Cloud Region**\ CybeDefend offers two sovereign cloud options to meet your compliance and performance needs: **Optimized for GDPR compliance and data sovereignty** Select Europe Cloud **Certifications held by the underlying infrastructure provider (Scaleway):** * CISPE * ANSSI SecNumCloud * G-Cloud UK * ACN (Italy) * ENS (Spain) * BSI KRITIS * BSI C5 * ISO 27001/17/18 * ISO 27701 These are **Scaleway's** certifications, describing the infrastructure CybeDefend runs on. They are not CybeDefend's own certifications. CybeDefend is GDPR compliant today; our SOC 2 Type II and ISO 27001 audits are in progress. See the [Security page](https://cybedefend.com/en/legal/security) for our current status. Choose Europe for full GDPR compliance and European data sovereignty requirements. **Optimized for low latency in North America** Select US Cloud **Certifications held by the underlying infrastructure provider (Google Cloud):** * SOC 2 * ISO 27001/17/18 * ISO 27701 * HIPAA * PCI-DSS These are **Google Cloud's** certifications, describing the infrastructure CybeDefend runs on. They are not CybeDefend's own certifications. CybeDefend is GDPR compliant today; our SOC 2 Type II and ISO 27001 audits are in progress. See the [Security page](https://cybedefend.com/en/legal/security) for our current status. Choose United States for lowest latency in North America. Your region selection binds IAM/Gateway endpoints at runtime. 3. **Authorize Your Credentials**\ OAuth2 ensures a secure handshake without requiring you to store new passwords. 4. **Complete Your Profile**\ Provide your name and agree to our Terms of Service to finalize your account creation. Already have an existing OAuth provider account? The sign-up process is near-instant. *** ## 2. Create Your Organization 1. **Access the Form**\ After your first login, you’ll be prompted to create an **Organization**. Alternatively, visit **Organization Settings** → **New Organization**. 2. **Fill in Details**\ Provide an organization name, an optional description, and (if needed) a logo. 3. **Save & Continue**\ This sets up your top-level group where teams and projects will live. Create Organization Form You can create multiple organizations if you manage different companies, clients, or environments. *** ## 3. Connect Your Repositories 1. **Select Your Version Control Platform**\ CybeDefend supports GitHub. Check out our [Detailed Integration Guides](/latest/get-started/connect-your-source-code/connect-github) for each platform. 2. **Authorize Access**\ Approve read (and optionally write) permissions so we can scan your code. 3. **Pick Your Repositories**\ Choose which repos to include in your **Organization**. You can assign them to specific teams or projects later. 4. **Instant Scanning**\ As soon as you connect a repository, CybeDefend triggers an initial scan, identifying potential vulnerabilities. Connecting Your Repository Once your repositories are connected, scans start automatically—no extra steps required. # Managing Access with Organizations and Teams Source: https://docs.cybedefend.com/latest/get-started/account-setup/managing-access-org-teams Learn how to structure your organization, create teams, and invite members to manage code and projects effectively. CybeDefend offers flexible structures to keep your organization and teams organized. Each **Organization** can have multiple **Teams**, and each Team can own projects (the codebase). This helps segment permissions and simplify collaboration. Organization and Team Structure Teams are ideal for grouping people working on the same projects or requiring similar levels of access. *** ## How to Create Teams 1. **Open Organization Settings**\ From the main dashboard, select **Organization Settings**. 2. **Navigate to Teams**\ Click **Teams** → **Create New Team**. 3. **Provide Basic Info**\ Name your team and optionally include a description. Create Team Popup Each organization has at least **one** Team Manager, who can manage team members and their projects. ## Inviting Organization Members 1. **Open the Invite Dialog** * Go to **Organization Settings** → **+ Add Member**. * Enter the user’s email and assign an **Organization Role** (e.g., Administrator, Manager, Billing Manager, or Member). Invite Organization Member Popup 2. **Pending Invitations** * Once invited, the user appears in the member list with a **Pending** status. * You can cancel the invite at any time if needed. Pending Invitation List 3. **User Acceptance Flow** * **Receive Email**: The invitee gets an email with a unique link. * **Sign Up or Log In**: If they don’t have a CybeDefend account, they’ll be prompted to create one. * **Accept Invitation**: After confirming, they’re redirected to the main dashboard with new **Organization Access**. Invitation Landing Page Admins can revoke an invitation before it’s accepted, ensuring you maintain full control over who joins your organization. *** ## Adding Team Members 1. **Go to Teams**\ In **Organization Settings** → **Teams**, pick the team you want to modify. 2. **+ Add Member**\ Enter the user’s email and a team role (Team Manager, Analyst Developer, Developer, or Read Only). 3. **Save & Notify**\ Once they accept your organization invite, they’ll see team details and projects. Add Team Member Popup *** ## Switching Organizations in the UI If you belong to multiple organizations, use the top navigation bar or settings dropdown to switch org contexts easily. Switch Organization UI # Connect GitHub Account to CybeDefend Source: https://docs.cybedefend.com/latest/get-started/connect-your-source-code/connect-github Authorize and install the CybeDefend GitHub App to link your repositories for static code scanning. To begin performing **static code scans** on your GitHub repositories with CybeDefend, you’ll need to **authorize** and **install** our GitHub App. Once installed, your repositories will be accessible when creating new projects in CybeDefend. GitHub Integration Intro *** ## 1. Access Organization Integrations 1. **Navigate to “Integratin Settings”** Go to your Organization's settings > Integrations. 2. **Search for “GitHub”** Within that section, choose the **GitHub** option for installation instructions. 3. **Click “Install & Authorize”**\ You’ll be redirected to GitHub’s official authorization flow. You must have Administrator or Manager privileges in CybeDefend to add integrations. *** ## 2. Install & Authorize CybeDefend on GitHub When GitHub prompts you to install the **CybeDefend GitHub App**: 1. **Choose Repositories**\ Select either all or specific repositories to grant CybeDefend read access. 2. **Confirm Permissions**\ We need at least read access for scanning. Write access is optional but enables advanced features like **Auto-Fix PRs** (coming soon). 3. **Complete Installation**\ Wait a few seconds for GitHub to finalize authorization. If you have organizational policies restricting third-party app installations, contact your GitHub Org Admin to approve CybeDefend’s GitHub App. *** ## 3. Linking Repositories to Your Projects After installation, you can associate any authorized repository with a **new project** in CybeDefend: * **Go to "Create Project"**: Navigate to [Create Project](/latest/get-started/project-management/create-project). * **Select "Continue with GitHub"**: Your authorized repos will appear in a dropdown. * **Choose Your Repo**: Pick a repository, assign it to a team, and configure scanning parameters. If you just installed the app, it may take a few moments before your repositories become visible in the "Create Project" flow. *** **Related:** [Connect GitLab](/latest/get-started/connect-your-source-code/connect-gitlab) · [Create a Project](/latest/get-started/project-management/create-project) · [Cybe AutoFix](/latest/agent-ai-integration/cybe-autofix-detail) # Connect GitLab Account to CybeDefend Source: https://docs.cybedefend.com/latest/get-started/connect-your-source-code/connect-gitlab Authorize and install the CybeDefend GitLab integration to link your repositories for static code scanning. To begin performing **static code scans** on your GitLab repositories with CybeDefend, you'll need to **authorize** and **install** our GitLab integration. Once installed, your repositories will be accessible when creating new projects in CybeDefend. GitLab Integration Intro *** ## 1. Access Organization Integrations 1. **Navigate to "Integration Settings"** Go to your Organization's settings > Integrations. 2. **Search for "GitLab"** Within that section, choose the **GitLab** option for installation instructions. 3. **Click "Install & Authorize"**\ You'll be redirected to GitLab's official authorization flow. You must have Administrator or Manager privileges in CybeDefend to add integrations. *** ## 2. Install & Authorize CybeDefend on GitLab When GitLab prompts you to authorize **CybeDefend**: 1. **Choose Repositories**\ Select either all or specific repositories to grant CybeDefend read access. 2. **Confirm Permissions**\ We need at least read access for scanning. Write access is optional but enables advanced features like **Auto-Fix Merge Requests**. 3. **Complete Installation**\ Wait a few seconds for GitLab to finalize authorization. If you have organizational policies restricting third-party integrations, contact your GitLab Admin to approve CybeDefend's access. *** ## 3. Linking Repositories to Your Projects After installation, you can associate any authorized repository with a **new project** in CybeDefend: * **Go to "Create Project"**: Navigate to [Create Project](/latest/get-started/project-management/create-project). * **Select "Continue with GitLab"**: Your authorized repos will appear in a dropdown. * **Choose Your Repo**: Pick a repository, assign it to a team, and configure scanning parameters. If you just installed the integration, it may take a few moments before your repositories become visible in the "Create Project" flow. *** **Related:** [Connect GitHub](/latest/get-started/connect-your-source-code/connect-github) · [Create a Project](/latest/get-started/project-management/create-project) · [Cybe AutoFix](/latest/agent-ai-integration/cybe-autofix-detail) # Creating Projects Source: https://docs.cybedefend.com/latest/get-started/project-management/create-project Learn how to create projects in CybeDefend, whether you're linking GitHub, GitLab, or uploading a ZIP file. CybeDefend projects are the core of your DevSecOps workflow. They allow you to scan your code for vulnerabilities, track your security posture, and collaborate with your team. This guide will show you how to create projects in CybeDefend using GitHub, GitLab, or ZIP upload. *** ## How to Create Projects Before creating your first project, decide how you want to add your code to CybeDefend: 1. **Recommended: Link a Git Provider**\ Connect your **GitHub** or **GitLab** account to seamlessly import repositories. See our integration guides: * [GitHub Integration Setup](/latest/get-started/connect-your-source-code/connect-github) * [GitLab Integration Setup](/latest/get-started/connect-your-source-code/connect-gitlab) 2. **Alternatively: Upload a ZIP**\ You can upload your code in a zip file for quick or offline testing. We strongly recommend connecting a Git repository for the best DevSecOps experience. *** ## Steps to Create a Project ### 1. Navigate to Create Project In your organization's home page, click **Create Project**. ### 2. Select Your Method Choose how you want to add your code: #### Option A: Connect with GitHub Link GitHub Project * Click **Continue with GitHub** * Select your repository from the dropdown * Assign it to a specific team * Configure scan parameters #### Option B: Connect with GitLab Link GitLab Project * Click **Continue with GitLab** * Select your repository from the dropdown * Assign it to a specific team * Configure scan parameters #### Option C: Upload ZIP Upload ZIP Project * Click **Upload ZIP** * Provide your code archive * Assign to a team * Configure scan parameters ### 3. Configure Scan Parameters Adjust scanning settings based on your needs: * **Severity levels**: Choose which vulnerabilities to detect * **Scanner types**: SAST, SCA, IaC, Container * **Advanced options**: Enable Cybe Analysis etc. See more details in our [Scan Project Parameters](/latest/code-scanning/scanning-options/scan-parameters) guide. *** ## What Happens After Creation? Once your project is created: * **Initial Scan Starts**: CybeDefend automatically begins scanning your code * **Vulnerabilities Detected**: Results appear in your project dashboard *** **Related:** [Connect GitHub](/latest/get-started/connect-your-source-code/connect-github) · [Connect GitLab](/latest/get-started/connect-your-source-code/connect-gitlab) · [Scan Parameters](/latest/code-scanning/scanning-options/scan-parameters) · [Cybe Analysis](/latest/agent-ai-integration/cybe-analysis-detail) # Global Project Management Source: https://docs.cybedefend.com/latest/get-started/project-management/global-project-management Get a high-level view of all your organization’s projects, vulnerabilities, and trends. **CybeDefend** provides a central dashboard to help you see your organization’s security posture at a glance. This page is your go-to hub for the big-picture stats and aggregated vulnerability data across all projects. Main Dashboard Overview ## Key Dashboard Sections 1. **High-Risk Projects Count**\ Instantly see how many projects have critical or high-severity vulnerabilities. This allows teams to prioritize resources where they’re needed most. 2. **Recent Activity (7-Day Window)** * **New Issues**: The number of vulnerabilities discovered in the past week. * **Resolved Issues**: How many vulnerabilities were fixed over the same period, reflecting your team’s remediation efforts. 3. **Pie Chart: Vulnerabilities by Severity**\ A visual breakdown (Critical, High, Medium, Low) across your entire organization, offering a quick sense of overall risk distribution. 4. **Project List & Severity Counts**\ Below the summary stats, you’ll find a detailed table of all projects. Each row shows: * **Project Name** * **Open Vulnerabilities by Severity** (e.g., 2 Critical, 5 High, 8 Medium) * **Scanner Type Counts** (SAST, IAC, SCA) if you need to see which analysis is flagging the most issues. Project List with Vulnerability Details The table supports searching by project name. You can also click a project row to jump into its detailed vulnerability list. (PS: of course our API is not vulnerable, it's just an example :) ) *** ## Recommended Usage * **Daily Standups**: Quickly identify if any new critical vulnerabilities appeared overnight. * **Reporting**: Export or screenshot this page for management updates on your organization's security trends. * **Prioritization**: High-risk projects and spikes in new issues are immediate signals where additional focus may be needed. Stay proactive by scheduling scans at a higher frequency for your “High-Risk Projects” to detect newly introduced vulnerabilities faster. # Project Overview & Stats Source: https://docs.cybedefend.com/latest/get-started/project-management/project-overview-stats Dive deeper into per-project analytics, including severity breakdowns, states, and historical trends. While the **Project Vulnerability List** highlights current open issues, the **Project Overview** page offers in-depth analytics and historical context. It answers questions like, “Are we reducing critical vulnerabilities over time?” and “Which scanner finds the most issues?” Project Overview Dashboard ## Breakdown Charts 1. **Vulnerabilities by Severity**\ A bar or donut chart showing the split among Critical, High, Medium, Low issues. Perfect for zeroing in on severity hotspots. 2. **Vulnerabilities by Analysis Type**\ Compares how many issues come from SAST, IAC, or SCA. This can reveal if your code (SAST) or your infrastructure (IAC) demands more attention. 3. **Vulnerabilities by State**\ Shows how many are Open, In Progress, or Resolved. Great for agile workflows to see if issues keep piling up or are actively being addressed. 4. **Vulnerabilities Over Time**\ A timeline chart that records how many vulnerabilities exist at any given time in the project’s history. This helps track improvement trends. *** ## Practical Use Cases * **Management Reporting**: Show weekly or monthly improvements to stakeholders. * **Prioritization**: If SAST counts are skyrocketing, your dev team might need more secure coding guidance. * **Team Accountability**: Some organizations tie metrics (like “Resolved vs. New Vulnerabilities”) to sprint goals. Combine this data with your weekly triage approach to confirm that your security posture is actually improving. # Antigravity Source: https://docs.cybedefend.com/latest/ide-integrations/antigravity Install the CybeDefend extension in Antigravity via the Open VSX Registry. Scan. Detect. Fix. — Security meets AI, right in your editor. *** ## Overview Antigravity is compatible with VS Code extensions via the **Open VSX Registry**. The CybeDefend extension works in Antigravity with the same features as in VS Code — security scanning, AI-powered remediation, and vulnerability management. Get the CybeDefend extension for Antigravity *** ## Getting Started Open the Extensions view in Antigravity, search for "**CybeDefend**", and click **Install**. The extension is fetched from the Open VSX Registry automatically. Follow the same setup steps as VS Code: select your region, authenticate via OAuth 2.0, configure your project, and start scanning. See the [VS Code Extension guide](/latest/ide-integrations/vscode#getting-started) for detailed step-by-step instructions — the workflow is identical. *** ## Features All features from the VS Code extension are available in Antigravity: * **5 scan types** — SAST, SCA, IaC, Secrets, CI/CD * **CybeAgent** — AI-powered vulnerability analysis and fix suggestions * **DeepFix** — Automated dependency upgrades across 9 ecosystems * **Editor integration** — Gutter icons, diagnostics, context menu, status bar * **Vulnerability management** — Update status directly from the IDE For full feature details, see the [VS Code Extension](/latest/ide-integrations/vscode) documentation. *** **Related:** [VS Code Extension](/latest/ide-integrations/vscode) · [Windsurf](/latest/ide-integrations/windsurf) · [Cursor](/latest/ide-integrations/cursor) · [MCP Server Integration](/latest/plateform-overview/key-features/mcp-server-integration) # Cursor Source: https://docs.cybedefend.com/latest/ide-integrations/cursor Install the CybeDefend extension in Cursor by downloading the .vsix file from the Open VSX Registry. Scan. Detect. Fix. — Security meets AI, right in your editor. *** ## Overview Cursor supports VS Code extensions, but does not connect to the Open VSX Registry by default. To install CybeDefend in Cursor, you need to **download the `.vsix` file** and install it manually. *** ## Getting Started Go to the CybeDefend extension page on Open VSX and download the latest `.vsix` file: Download the CybeDefend `.vsix` file On the extension page, click the **Download** button to get the `.vsix` file. Open Cursor and install the extension using one of these methods: **Option A — Command Palette:** 1. Open the Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`) 2. Type **"Extensions: Install from VSIX..."** 3. Select the downloaded `.vsix` file **Option B — Terminal:** ```bash theme={null} cursor --install-extension path/to/cybedefend-cybedefend-.vsix ``` Follow the same setup steps as VS Code: select your region, authenticate via OAuth 2.0, configure your project, and start scanning. See the [VS Code Extension guide](/latest/ide-integrations/vscode#getting-started) for detailed step-by-step instructions — the workflow is identical. When a new version of CybeDefend is released, you will need to download and install the updated `.vsix` file manually. Cursor does not auto-update extensions installed from `.vsix` files. *** ## Features All features from the VS Code extension are available in Cursor: * **5 scan types** — SAST, SCA, IaC, Secrets, CI/CD * **CybeAgent** — AI-powered vulnerability analysis and fix suggestions * **DeepFix** — Automated dependency upgrades across 9 ecosystems * **Editor integration** — Gutter icons, diagnostics, context menu, status bar * **Vulnerability management** — Update status directly from the IDE For full feature details, see the [VS Code Extension](/latest/ide-integrations/vscode) documentation. *** **Related:** [VS Code Extension](/latest/ide-integrations/vscode) · [Windsurf](/latest/ide-integrations/windsurf) · [Antigravity](/latest/ide-integrations/antigravity) · [MCP Server Integration](/latest/plateform-overview/key-features/mcp-server-integration) # JetBrains Plugin Source: https://docs.cybedefend.com/latest/ide-integrations/jetbrains Integrate CybeDefend security scanning and AI-powered remediation into IntelliJ IDEA, PyCharm, WebStorm, and other JetBrains IDEs. Scan. Detect. Fix. — Security meets AI, right in your editor. *** ## Overview The CybeDefend plugin for JetBrains IDEs brings comprehensive security analysis and AI-powered remediation directly into your development workflow. Identify vulnerabilities, get AI-generated fixes, and manage your security posture — all without leaving your IDE. Get the CybeDefend plugin for JetBrains IDEs *** ## Supported IDEs The plugin is compatible with **JetBrains IDEs build 2024.3+**, including: And all other JetBrains IDEs based on the IntelliJ Platform (DataGrip, AppCode, etc.). *** ## Key Features SAST, SCA, IaC, Secrets, and CI/CD scanning in one plugin AI-powered assistant that analyzes and fixes vulnerabilities with full code context Automated dependency upgrades for SCA vulnerabilities across 10 ecosystems Gutter icons, diagnostics, context menus, and tool windows built for JetBrains ### Security Scanning | Scan Type | What It Detects | | ----------- | -------------------------------------------------------------------------------------------------- | | **SAST** | SQL injection, XSS, path traversal, command injection — with taint analysis and data flow tracking | | **SCA** | Known CVEs in dependencies (npm, Maven, pip, Go, NuGet, RubyGems, Cargo, Swift, Packagist) | | **IaC** | Misconfigurations in Terraform, CloudFormation, Kubernetes, Docker | | **Secrets** | Leaked API keys, tokens, passwords, certificates | | **CI/CD** | Insecure pipeline configurations and overly permissive permissions | ### Editor Integration * **Gutter icons** — Severity-colored markers on every vulnerable line (Critical, High, Medium, Low, Info) * **Diagnostics** — Native underlines visible in the inspections/problems panel * **Context menu** — Right-click on vulnerable code to view details or trigger AI fix * **Tool windows** — Dedicated "CybeDefend" and "CybeDefend Security" panels * **Code navigation** — Click any vulnerability to jump to the exact line of code ### CybeAgent — AI-Powered Fix Click **"Fix with CybeAgent"** on any vulnerability. The AI agent receives the full vulnerability context — severity, CWE, OWASP classification, data flow, code snippet, and remediation guidance — then proposes a precise code fix that you review and apply. ### DeepFix — Automated Dependency Upgrades Automatically resolves safe version upgrades for SCA vulnerabilities. Supports **10 package ecosystems**: npm, Maven, pip/PyPI, Go, NuGet, Packagist, RubyGems, Cargo, SwiftPM, and CocoaPods. ### Git Integration The plugin adds a **"Generate Commit Message"** action in the VCS commit dialog, using AI to generate meaningful commit messages based on your staged changes. *** ## Getting Started Open **Settings/Preferences** → **Plugins** → **Marketplace**, search for "**CybeDefend**", and click **Install**. Restart the IDE when prompted. In the CybeDefend tool window settings, select **EU** (Europe — default) or **US** (United States) depending on your CybeDefend instance. Open the CybeDefend tool window and click **Login**. Your browser opens for a secure OAuth 2.0 authentication flow. After completing login, you are redirected back to the IDE automatically. No API key or Personal Access Token is needed — the plugin uses secure browser-based OAuth 2.0 with PKCE. Select the corresponding CybeDefend Organization and Project for your workspace. Open the CybeDefend Security tool window and start a vulnerability scan with one click. Results appear directly in your editor with gutter icons and diagnostics. *** ## File Exclusion Create a **`.cybeignore`** file at your project root to exclude files and directories from scans. It uses `.gitignore` syntax: ``` # Exclude test fixtures tests/fixtures/ *.test.js # Exclude generated code dist/ build/ ``` The older name `.cybedefend` is still read, but it is deprecated: it collides with the `.cybedefend/` directory VibeDefend uses for `config.json`. See [.cybeignore Exclusion File](/latest/code-scanning/scanning-options/cybedefend-ignore-file). Common directories like `node_modules`, `.git`, `dist`, `build`, `venv`, and `__pycache__` are excluded by default. *** ## Vulnerability Management You can update vulnerability status directly from the IDE: | Status | Meaning | | ------------- | ----------------------- | | **To Verify** | Needs triage (default) | | **Confirmed** | Validated vulnerability | | **Resolved** | Fixed | | **Ignored** | Accepted risk | *** ## Requirements * **JetBrains IDE** 2024.3 or later (build 243.0+) * A **CybeDefend account** ([create one here](/latest/get-started/account-setup/create-account-organization)) * Internet connection to the CybeDefend API *** **Related:** [VS Code Extension](/latest/ide-integrations/vscode) · [MCP Server Integration](/latest/plateform-overview/key-features/mcp-server-integration) · [Create Your Account](/latest/get-started/account-setup/create-account-organization) · [CybeDefend Ignore File](/latest/code-scanning/scanning-options/cybedefend-ignore-file) # VS Code Extension Source: https://docs.cybedefend.com/latest/ide-integrations/vscode Integrate CybeDefend security scanning and AI-powered remediation directly into Visual Studio Code. Scan. Detect. Fix. — Security meets AI, right in your editor. *** ## Overview The CybeDefend VS Code extension brings comprehensive security analysis and AI-powered remediation directly into your development workflow. Identify vulnerabilities, get AI-generated fixes, and manage your security posture — all without leaving Visual Studio Code. Get the CybeDefend extension for VS Code *** ## Key Features SAST, SCA, IaC, Secrets, and CI/CD scanning in one extension AI-powered assistant that analyzes and fixes vulnerabilities with full code context Automated dependency upgrades for SCA vulnerabilities across 9 ecosystems ### Security Scanning | Scan Type | What It Detects | | ----------- | -------------------------------------------------------------------------------------------------- | | **SAST** | SQL injection, XSS, path traversal, command injection — with taint analysis and data flow tracking | | **SCA** | Known CVEs in dependencies (npm, Maven, pip, Go, NuGet, RubyGems, Cargo, Swift, Packagist) | | **IaC** | Misconfigurations in Terraform, CloudFormation, Kubernetes, Docker | | **Secrets** | Leaked API keys, tokens, passwords, certificates | | **CI/CD** | Insecure pipeline configurations and overly permissive permissions | ### Editor Integration * **Gutter icons** — Severity-colored markers on every vulnerable line (Critical, High, Medium, Low, Info) * **Diagnostics** — Native squiggly underlines visible in the Problems panel * **Context menu** — Right-click on vulnerable code to view details or trigger AI fix * **Status bar** — Live scan progress and result summary * **Code navigation** — Click any vulnerability to jump to the exact line of code ### CybeAgent — AI-Powered Fix Click **"Fix with CybeAgent"** on any vulnerability. The AI agent receives the full vulnerability context — severity, CWE, OWASP classification, data flow, code snippet, and remediation guidance — then proposes a precise code fix that you review and apply. ### DeepFix — Automated Dependency Upgrades Automatically resolves safe version upgrades for SCA vulnerabilities. Supports **9 package ecosystems**: npm, Maven, pip/PyPI, Go, NuGet, Packagist, RubyGems, Cargo, and SwiftPM. *** ## Getting Started Search for "**CybeDefend**" in the VS Code Extensions view (`Ctrl+Shift+X` / `Cmd+Shift+X`) and click **Install**. Alternatively, open Quick Open (`Ctrl+P` / `Cmd+P`) and run: ``` ext install CybeDefend.cybedefend ``` Open VS Code settings and set `cybedefend.region` to **eu** (Europe — default) or **us** (United States) depending on your CybeDefend instance. Click the CybeDefend icon in the Activity Bar and click **Login**. Your browser opens for a secure OAuth 2.0 authentication flow. After completing login, you are redirected back to VS Code automatically. No API key or Personal Access Token is needed — the extension uses secure browser-based OAuth 2.0 with PKCE. Open your project folder. The extension guides you to select the corresponding CybeDefend Organization and Project. You can also use the command `CybeDefend: Update Project ID (Current Workspace)`. Open the CybeDefend Security panel from the Activity Bar and click the **Start Vulnerability Scan** icon. Results appear directly in your editor with gutter icons and diagnostics. *** ## File Exclusion Create a **`.cybeignore`** file at your project root to exclude files and directories from scans. It uses `.gitignore` syntax: ``` # Exclude test fixtures tests/fixtures/ *.test.js # Exclude generated code dist/ build/ ``` The older name `.cybedefend` is still read, but it is deprecated: it collides with the `.cybedefend/` directory VibeDefend uses for `config.json`. See [.cybeignore Exclusion File](/latest/code-scanning/scanning-options/cybedefend-ignore-file). Common directories like `node_modules`, `.git`, `dist`, `build`, `venv`, and `__pycache__` are excluded by default. *** ## Settings | Setting | Default | Description | | ------------------------------------ | ------------------------------------- | --------------------------------------------------------- | | `cybedefend.region` | `eu` | Region (`eu` or `us`) — determines auth and API endpoints | | `cybedefend.enableCodeActions` | `true` | Show quick-fix code actions on vulnerabilities | | `cybedefend.allowedCommands` | `["git log", "git diff", "git show"]` | Terminal commands the AI agent can run | | `cybedefend.deniedCommands` | `[]` | Blocked terminal commands | | `cybedefend.commandExecutionTimeout` | `0` | Command timeout in seconds (0 = no limit) | | `cybedefend.apiRequestTimeout` | `600` | API request timeout in seconds | | `cybedefend.debug` | `false` | Enable debug logging | *** ## Vulnerability Management You can update vulnerability status directly from VS Code: | Status | Meaning | | ------------- | ----------------------- | | **To Verify** | Needs triage (default) | | **Confirmed** | Validated vulnerability | | **Resolved** | Fixed | | **Ignored** | Accepted risk | *** ## Requirements * **VS Code** 1.84.0 or later * A **CybeDefend account** ([create one here](/latest/get-started/account-setup/create-account-organization)) * Internet connection to the CybeDefend API *** **Related:** [JetBrains Plugin](/latest/ide-integrations/jetbrains) · [Create Your Account](/latest/get-started/account-setup/create-account-organization) · [CybeDefend Ignore File](/latest/code-scanning/scanning-options/cybedefend-ignore-file) # Windsurf Source: https://docs.cybedefend.com/latest/ide-integrations/windsurf Install the CybeDefend extension in Windsurf via the Open VSX Registry. Scan. Detect. Fix. — Security meets AI, right in your editor. *** ## Overview Windsurf is compatible with VS Code extensions via the **Open VSX Registry**. The CybeDefend extension works in Windsurf with the same features as in VS Code — security scanning, AI-powered remediation, and vulnerability management. Get the CybeDefend extension for Windsurf *** ## Getting Started Open the Extensions view in Windsurf, search for "**CybeDefend**", and click **Install**. The extension is fetched from the Open VSX Registry automatically. Follow the same setup steps as VS Code: select your region, authenticate via OAuth 2.0, configure your project, and start scanning. See the [VS Code Extension guide](/latest/ide-integrations/vscode#getting-started) for detailed step-by-step instructions — the workflow is identical. *** ## Features All features from the VS Code extension are available in Windsurf: * **5 scan types** — SAST, SCA, IaC, Secrets, CI/CD * **CybeAgent** — AI-powered vulnerability analysis and fix suggestions * **DeepFix** — Automated dependency upgrades across 9 ecosystems * **Editor integration** — Gutter icons, diagnostics, context menu, status bar * **Vulnerability management** — Update status directly from the IDE For full feature details, see the [VS Code Extension](/latest/ide-integrations/vscode) documentation. *** **Related:** [VS Code Extension](/latest/ide-integrations/vscode) · [Antigravity](/latest/ide-integrations/antigravity) · [Cursor](/latest/ide-integrations/cursor) · [MCP Server Integration](/latest/plateform-overview/key-features/mcp-server-integration) # Introduction Source: https://docs.cybedefend.com/latest/introduction Overview and introduction to the CybeDefend platform and its innovative approach to cybersecurity. CybeDefend Banner Welcome to the CybeDefend documentation. This page provides an in-depth look at our platform, our motivations, and our future roadmap. Here you will discover how CybeDefend is revolutionizing cybersecurity by integrating robust security measures right from the start of development. *** ## Explore CybeDefend ### What is CybeDefend? CybeDefend is a revolutionary SaaS cybersecurity platform designed to protect business applications against cyberattacks. By leveraging advanced artificial intelligence, our solution not only detects vulnerabilities but also analyzes them intelligently, eliminates false positives, and prioritizes real threats—ensuring robust security accessible to businesses of every size. ### Motivation Our journey began with firsthand experiences of cyberattacks and the costly rework that follows when vulnerabilities are detected too late. With CybeDefend, security is embedded at the very beginning of the development cycle—not as an afterthought. This proactive approach prevents the need to reverse entire development loops and fixes vulnerabilities early, saving both time and resources. ### With CybeDefend, You Can * **Secure Your Digital Assets:** Protect your applications and data from evolving cyber threats from the very first line of code. * **Automate Vulnerability Management:** Leverage AI to reduce false positives and streamline remediation. * **Gain a Unified View:** Access a single, integrated dashboard that combines all the standard security tools (SAST, DAST, SCA, etc.) with our innovative new features. * **Innovate Beyond the Norm:** Not only do we provide all the tools that our competitors offer, but we also push the envelope by introducing BLSA—a revolutionary new scanner that sets a new industry standard. * **Choose your sovereignty and platform:** Select either a European or US infrastructure to ensure optimal latency and secure storage of your analyses, tailored to your geolocation and regulatory requirements. Security from Day 1 ### Roadmap Our vision is built on a clear, phased roadmap that is available for public viewing. Check our progress at [CybeDefend Roadmap](https://cybedefend.featurebase.app/roadmap). *** ## What happens to your code Security teams evaluating CybeDefend usually want this answer before anything else, so here it is in one place. **The scanning platform receives your repository, because it cannot scan what it does not have.** Your repo is cloned into an isolated container, analysed, and the container together with its copy of the code is destroyed when the scan finishes. **We do not retain source code after analysis.** What we keep is the result: findings, their file and line, and repository metadata. **VibeDefend is a different thing.** It is the layer that plugs into your AI coding agent (Claude Code, Cursor, Windsurf, GitHub Copilot, OpenAI Codex) and it runs on the developer's machine. Edits happen locally, and only governance metadata comes back to the platform. **If you enable the AI features that learn your repository's conventions**, we additionally keep a business-logic knowledge graph. It holds **file paths and a short description of what each file does. It does not contain your source code.** You can delete it at any time, and disabling the AI features stops it being built. **AI inference runs on open-weight models we host ourselves**, inside the region you selected: Scaleway for the EU region, Google Cloud for the US region. No code and no prompt is sent to any third-party AI API. Nothing crosses the regional boundary. Nothing you submit trains any model. **Certifications.** GDPR compliant today. **SOC 2 Type II and ISO 27001 audits are in progress**, controls are implemented and operating, and we expect the SOC 2 report shortly. Certifications listed in this documentation for Scaleway or Google Cloud belong to those providers and describe the infrastructure we run on, not CybeDefend itself. What we destroy, what we keep, and how the knowledge graph works. See also [LLM Usage & Privacy](/latest/plateform-overview/security-privacy/llm-usage-privacy), our [Security page](https://cybedefend.com/en/legal/security), and the [sub-processor list](https://cybedefend.com/en/legal/subprocessors). *** ## Evolution and Innovation: Introducing BLSA ### What is BLSA? BLSA (Business Logic Security Analysis) is our innovative, next-generation scanner that uses AI agents to detect vulnerabilities in business logic—ensuring security by design from the outset. This breakthrough tool: * **Detects Business Logic Flaws:** Uncovers vulnerabilities in the fundamental design of your applications that traditional scanners often miss. * **Utilizes AI Agents:** Leverages intelligent agents to continuously monitor and analyze application logic for potential security risks. * **Ensures Security by Design:** Integrates security measures early in the development process, preventing costly rework later on. * **Complements Traditional Tools:** Works seamlessly alongside SAST, DAST, and SCA, providing a comprehensive 360° view of your security posture. For more detailed information about BLSA, please visit our [BLSA documentation page](/latest/plateform-overview/key-features/blsa-business-logic-security-analysis). BLSA: Business Logic Security Analysis *** ## CybeDefend FAQs Our platform embeds security from the very beginning of the development process. By detecting vulnerabilities early, CybeDefend prevents costly rework and ensures that security is a fundamental part of your coding practices. BLSA (Business Logic Security Analysis) is a groundbreaking new scanner that employs AI agents to detect design flaws and vulnerabilities within the business logic of your applications. It ensures security by design and complements traditional scanning tools like SAST, DAST, and SCA. [Learn more about BLSA](/blsa) Unlike traditional cybersecurity tools that offer fragmented solutions, CybeDefend provides a unified platform encompassing all standard security tools plus innovative features like BLSA. This holistic approach delivers comprehensive protection across the entire development lifecycle. CybeDefend is designed for everyone—from individual developers and SMEs to large enterprises. Our scalable and flexible plans ensure that robust cybersecurity is accessible to organizations of all sizes. For further information, please explore our [Website](https://www.cybedefend.com/). # Jira Cloud Source: https://docs.cybedefend.com/latest/issue-tracker-integrations/jira Connect Atlassian Jira Cloud to turn CybeDefend vulnerabilities into trackable tickets, with two-way status sync via webhooks. The Jira integration lets you push CybeDefend findings (SAST, SCA, IaC, Container, Secret) into your Atlassian Jira Cloud projects as tickets — either manually for selected vulnerabilities or **automatically after every scan**. Ticket status, priority, and assignee are kept in sync with CybeDefend in near real-time through Jira webhooks. Only **Jira Cloud** is supported. Jira Data Center / Server is not currently compatible because the integration relies on Atlassian's OAuth 2.0 (3LO) flow and Cloud webhook APIs. *** ## What you get * **Ticket creation** for one or many vulnerabilities, with three grouping strategies (per vulnerability, per type, per file). * **Rich descriptions** in Atlassian Document Format (ADF), including CVSS, CWE/OWASP tags, file location, fix recommendations, and a direct link back to the CybeDefend view. * **Severity → priority mapping** (Critical → Highest, High → High, …) applied to each issue. * **Auto-create after scan** to file tickets without human intervention (configurable per project). * **Branch allow-list** so tickets are only created for findings on branches you care about (e.g. `main`, `develop`). * **Live status sync** via Jira webhooks — status, assignee, priority, and project moves are reflected in CybeDefend automatically. * **Link to existing issue** for vulnerabilities already tracked under another ticket. * **Duplicate protection** — open tickets are reused; closed tickets do not re-open silently. *** ## Prerequisites You need a user that has access to the target Jira Cloud site and can install OAuth apps for it. The OAuth app requests the following scopes: * `read:jira-work` — list projects, read issues * `write:jira-work` — create and update tickets * `read:jira-user` — resolve assignees * `manage:jira-webhook` — register the status-sync webhook * `offline_access` — refresh tokens automatically You must hold the `manage_integration` permission on the organization (Owner or Admin). *** ## 1. Connect Jira to your organization In CybeDefend, go to **Organization Settings → Integrations** and select **Jira**. Click **Connect Jira**. You will be redirected to Atlassian to authorize the CybeDefend app. A CSRF state token is stored server-side for 10 minutes — finish the flow within that window. Approve access for the Jira Cloud site you want to use. If multiple sites are accessible to your Atlassian account, the integration uses the **first accessible site** returned by Atlassian. On callback, CybeDefend exchanges the authorization code for an access token, encrypts it with AES-256-GCM, and registers a webhook so issue updates flow back automatically. Tokens are encrypted at rest. Refresh is automatic — you do not need to re-authorize unless the integration is uninstalled from the Atlassian side. *** ## 2. Map a CybeDefend project to a Jira project The OAuth connection is at the **organization** level. Each CybeDefend project then points to a single Jira project that will receive its tickets. From the project view, go to **Settings → Integrations → Jira**. Select the destination Jira project from the dropdown. CybeDefend fetches up to 100 projects from the connected site, ordered by name. Add up to **50 branches** (e.g. `main`, `develop`, `release/*`) to the allow-list. Vulnerabilities detected on any other branch will be **silently skipped** when creating tickets. Leave the list empty to allow all branches. Toggle **Auto-create tickets after scans** if you want every new finding (matching the branch allow-list) to be filed automatically once a scan completes. For triage-heavy projects, leave **auto-create off** and use the **per vulnerability type** mode manually — you'll get one ticket per CWE/CVE rather than one ticket per occurrence, which is far easier to action. *** ## 3. Create tickets for vulnerabilities From the vulnerability list (SAST, SCA, IaC, Container, Secret), select one or more findings and choose **Create Jira issues**. You pick the **grouping mode**: | Mode | Behavior | When to use | | -------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | | **Per vulnerability** | One Jira ticket per individual detection (`vulnerabilityId + filePath + line`, or `vulnId + package@version` for SCA). | Fine-grained tracking, small batches. | | **Per vulnerability type** | One ticket per rule / CVE, grouping all occurrences. | Default — best signal-to-noise ratio. | | **Per file** | One ticket per `(scanner, file path)`. SCA tickets group by dependency manifest. | Code reviews organized by file owner. | ### What's in the ticket * **Summary** — human-readable name (e.g. `lodash: Prototype pollution in lodash.merge`) with a `[CybeDefend]` prefix and a count suffix when grouped. * **Description** (ADF) — severity, CVSS, CWE/OWASP, fix recommendation, code snippet for SAST, package details for SCA, and a deep link back to the matching CybeDefend view (filtered by name). * **Priority** — mapped from severity: Critical → Highest, High → High, Medium → Medium, Low → Low, Info → Lowest. * **Issue type** — `Bug` if available, otherwise `Task`, then `Story`, falling back to the first non-subtask type in the project's create-meta. Before creating a ticket, CybeDefend checks for an **existing open ticket** with the same group key, or vulnerabilities already linked to a non-terminal ticket (`open`, `in progress`, …). Duplicates are skipped, not re-filed. Tickets in `done`, `closed`, `resolved`, or `deleted` states do not block re-creation. *** ## 4. Link to an existing Jira issue If a ticket already exists for the work, you can attach CybeDefend vulnerabilities to it instead of creating a new one. Select the findings in the CybeDefend vulnerability list and choose **Link to existing Jira issue**. Provide the Jira key (e.g. `TRI-142`). CybeDefend validates the key exists and reads its current summary and status. CybeDefend records the mapping and **appends** a "Linked CybeDefend vulnerabilities" section to the existing Jira description — your original description is never overwritten. *** ## 5. Status synchronization CybeDefend registers a **dynamic webhook** at install time, listening to `jira:issue_updated` and `jira:issue_deleted` for every project on the site. When a ticket changes in Jira, CybeDefend updates the linked vulnerabilities within seconds: * **Status** — reflected as `issueState` (e.g. `in progress`, `done`). * **Priority** — stored on the mapping. * **Assignee** — the Jira display name is mirrored. * **Project key** — if a ticket is **moved between Jira projects**, the new key is detected via the changelog and all mappings are updated. * **Deleted issues** — marked as `deleted` in CybeDefend. Dynamic webhooks expire after 30 days; CybeDefend refreshes them periodically through a background cron, so no manual action is needed. If a webhook ever misses an event, you can trigger a **manual sync** from the project's Jira integration panel — CybeDefend will pull the latest status for each linked ticket and detect any project moves at the same time. *** ## 6. Disconnecting Jira Disconnecting from **Organization Settings → Integrations → Jira → Disconnect** will: 1. Remove the OAuth integration and stored tokens. 2. Delete every per-project Jira configuration (mapping, allowed branches, auto-create setting). 3. Remove every vulnerability ↔ Jira issue mapping for the organization. 4. **Leave the Jira tickets untouched** — they remain in Jira and are no longer linked back to CybeDefend. To use Jira again afterwards, simply re-run the connect flow. *** ## Troubleshooting Your Atlassian account does not have access to any Jira Cloud site, or your administrator has restricted OAuth apps for the site. Ask your Jira admin to grant access or approve the CybeDefend app. The CybeDefend project has no mapping yet. Open **Project Settings → Integrations → Jira** and select a destination Jira project. Check three things: (1) **Auto-create** is enabled on the CybeDefend project, (2) the scan's branch is in the **allow-list** (or the list is empty), (3) the vulnerability isn't already linked to an open Jira ticket — duplicates are intentionally skipped. The webhook may have been removed at the Jira side, or the webhook expired. Disconnect and reconnect the integration to re-register it, or use the manual **Sync status** action on the project's Jira panel. The CSRF state token lives for 10 minutes. Restart the install flow from CybeDefend instead of refreshing the Atlassian callback page. *** **Related:** [Project Vulnerability List](/latest/managing-vulnerabilities/project-vulnerability-list) · [Updating Vulnerabilities](/latest/managing-vulnerabilities/updating-vulnerabilities) # Findings Export (GRC / SIEM) Source: https://docs.cybedefend.com/latest/managing-vulnerabilities/findings-export Pull every finding across your organization from a single cursor-paginated endpoint, designed for GRC platforms and SIEM ingestion. The **Findings Export** is a read-only, organization-wide feed of your security findings. It exists for machines: a GRC platform, a SIEM, a compliance warehouse, or any internal job that needs the whole picture on a timer rather than one project at a time in the dashboard. This is a **public contract**. Field names are `snake_case`, and every optional field is always present. When there is no value for a field, it is explicitly `null`, so a consumer can tell "never triaged" apart from "field missing". ## Endpoint ```http theme={null} GET /organization/{organizationId}/findings ``` Authenticate with a bearer token, exactly as elsewhere in the API. Use the base URL of the region your organization is hosted in: `https://api-eu.cybedefend.com` (EU) or `https://api-us.cybedefend.com` (US). ```bash theme={null} curl -H "Authorization: Bearer $CYBEDEFEND_TOKEN" \ "https://api-eu.cybedefend.com/organization/$ORG_ID/findings?severity=critical,high&page_size=100" ``` ## Scope The export covers the projects your token has access to. The `project_id` filter can only **narrow** that set, never widen it. ## Query parameters | Parameter | Type | Description | | --------------- | --------- | ---------------------------------------------------------------------------------- | | `status` | enum list | `to_verify`, `confirmed`, `ignored`, `resolved`. Omit for every state. | | `severity` | enum list | `critical`, `high`, `medium`, `low`, `none`. Computed from the current CVSS score. | | `project_id` | uuid list | Restrict to these projects. Max 200 per page. | | `updated_since` | ISO 8601 | Findings whose lifecycle changed at or after this instant. | | `cursor` | string | Opaque cursor from `next_cursor`. Do not construct or edit it. | | `page_size` | integer | 1 to 100. Defaults to 50. | List parameters accept **both** spellings and any mix of the two: ``` ?status=confirmed,ignored ?status=confirmed&status=ignored ``` **A mistyped filter fails loudly. It never widens the scope.** An unknown value (`?status=confimed`), an unrecognised parameter name (`?statuss=`), or a filter that is present but empty (`?status=`) all return **400**. On a compliance feed, silently dropping a filter would return your entire organization while you believed you asked for one status, so the API refuses the request instead. ## Response ```json theme={null} { "success": true, "message": "Findings retrieved", "data": { "findings": [ { "id": "a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1a3f1", "finding_type": "sast", "project_id": "11111111-1111-4111-8111-111111111111", "project_name": "payments-api", "title": "SQL injection in the invoice lookup", "description": "User input reaches the query builder unescaped.", "remediation": "Bind the parameter instead of concatenating it.", "severity": "critical", "status": "confirmed", "url": "https://app.cybedefend.com/...", "first_detected_at": "2026-07-02T09:14:00.000Z", "last_detected_at": "2026-08-30T02:11:00.000Z", "triaged_at": "2026-07-03T16:20:00.000Z", "triaged_by": "22222222-2222-4222-8222-222222222222", "triaged_by_type": "user", "resolved_at": null, "dismissal_reason": null, "details": { "file": "src/invoices/lookup.ts", "line": 88 }, "updated_at": "2026-08-30T02:11:00.000Z" } ], "next_cursor": "...", "has_more": true, "next_since": "2026-08-30T02:10:55.000Z" } } ``` ### Notable fields Survives reindentation, line drift and scanner rule renames. It **does** change when the file is renamed, when the vulnerable code itself changes, or when one of several identical occurrences in a file disappears. Computed from the CVSS 4 environmental score, falling back to the base score. `none` is a real band (a CVSS score of exactly 0) and is exported. `null` where the source carries none, such as OSV advisories (`sca`) and container findings. A null here means "we have no guidance", **not** "no action needed". File and line for `sast`, package for `sca`, image for `container`, and so on. `null` when no structured details are available for the finding. ## Paginating one pull Follow `next_cursor` until `has_more` is `false`. Results are sorted ascending on `updated_at`. ```bash theme={null} CURSOR="" while : ; do PAGE=$(curl -s -H "Authorization: Bearer $CYBEDEFEND_TOKEN" \ "https://api-eu.cybedefend.com/organization/$ORG_ID/findings?page_size=100&cursor=$CURSOR") echo "$PAGE" | jq '.data.findings[]' [ "$(echo "$PAGE" | jq -r '.data.has_more')" = "true" ] || break CURSOR=$(echo "$PAGE" | jq -r '.data.next_cursor') done ``` `updated_at` is the sort key, so a finding modified mid-pagination moves forward in the stream and is delivered again. Consumers must be idempotent on `id`. ## Pulling incrementally Store the `next_since` of your last page and replay it verbatim as `updated_since` on the next run. That is the whole contract: you do not compute the watermark yourself. ``` run 1: GET .../findings -> next_since = T1 run 2: GET .../findings?updated_since=T1 -> next_since = T2 run 3: GET .../findings?updated_since=T2 -> ... ``` `next_since` is set a few seconds before the last row served, so that consecutive runs overlap slightly. This guarantees that no finding is skipped. Overlap is cheap, a missed finding is not. ## Rate limiting A GRC platform polls on a timer, so **429 is part of this contract, not an error path**. Back off and retry. | Status | Meaning | | ------ | ------------------------------------------------------------------- | | `400` | Unknown parameter name, unknown filter value, or an emptied filter. | | `401` | Missing or invalid token. | | `403` | The token is not allowed to export findings for this organization. | | `429` | Rate limited. Back off and retry. | # Project Vulnerability List Source: https://docs.cybedefend.com/latest/managing-vulnerabilities/project-vulnerability-list Dive into a specific project's vulnerabilities, with filters and sorting for clear organization. Once you select a project from the **Global Dashboard**, you’ll land on the **Project Vulnerability List**. This section consolidates **all vulnerabilities** for a single project—whether discovered by SAST, IAC, or SCA scanning. Project Vulnerability List Interface ## Scanner Tabs & Filters 1. **Scanner Tabs**\ Switch between **SAST**, **IAC**, **SCA** or **CONTAINER** tabs to isolate vulnerabilities discovered by each scanner type. This helps you focus on code issues, infrastructure misconfigurations, or library dependencies, respectively. 2. **Severity Filter**\ Show or hide vulnerabilities at different severity levels (e.g., Critical, High, Medium, Low). 3. **Status Filter**\ Limit results to vulnerabilities marked **To Verify**, **In Progress** or **Resolved** etc. 4. **Priority Filter**\ If you’ve tagged vulnerabilities with internal priorities (Critical Urgent, Urgent, Normal, High, Low), you can quickly narrow down the list to see which require immediate attention. 5. **Sort Options** * **Severity**: Sort by ascending or descending severity. * **CVSS Score** (SCA-only): Sort libraries by their numeric score to find the most dangerous dependencies first. **1. Break it down by Scanner**\ If your codebase is quite large, start with SAST to address code-based vulnerabilities, then move on to IAC for cloud misconfigurations. **2. Sort by Priority**\ Combining severity + priority helps you quickly form a top-10 list to tackle. **3. Batch Update**\ Some teams use a weekly bug triage meeting to set statuses or priorities for multiple vulnerabilities at once. Always re-run or schedule scans after significant code or infrastructure changes to keep this list accurate. # Top Vulnerabilities Source: https://docs.cybedefend.com/latest/managing-vulnerabilities/top-vulnerabilities A unified Top N list of the highest-priority vulnerabilities across every scanner in a project ## Overview The **Top Vulnerabilities** view answers the single most important triage question — *"if I had time for only five fixes today, which ones should I take?"* It ranks **active** vulnerabilities across **every scanner** (SAST, SCA, IAC, Container, CICD, Secrets) on a single composite priority score, so the most urgent items always surface first — regardless of which scanner detected them. One ranked list across SAST · SCA · IAC · Container · CICD · Secrets Sorted by composite Priority Score, not raw severity Excludes resolved / ignored detections automatically Default Top 5 — request any N via the API *** ## What "Top" means Each detection is scored by the platform's [Priority Scoring](/latest/plateform-overview/key-features/priority-scoring) engine — a weighted blend of CVSS 4.0 environmental score, EPSS percentile, exploitability verdict and project Security Context. The Top Vulnerabilities list returns the **N highest composite scores** across the project. Only detections in an **active** state are eligible: * `to_verify` * `proposed_not_exploitable` * `confirmed` Resolved, ignored, fixed and false-positive findings are excluded — the list is always a current to-do. A re-scored detection (after a Security Context change or an exploitability verdict update) can enter or leave the Top in real time. There is no daily snapshot — the ranking is computed on demand. *** ## API reference ```http theme={null} GET /project/{projectId}/results/top-vulnerabilities?limit=5 ``` | Parameter | In | Type | Description | | ----------- | ----- | ------- | -------------------------------------------- | | `projectId` | path | UUID | The project to query | | `limit` | query | integer | Number of items to return. Defaults to **5** | ### Response shape ```json theme={null} { "items": [ { "id": "b41…", "vulnerabilityType": "sca", "name": "CVE-2024-12345", "description": "Prototype pollution in lodash", "severity": "critical", "compositeScore": 0.842, "cvss4EnvironmentalScore": 9.4, "exploitabilityVerdict": "proven", "exploitabilityReason": "Reachable from production code path", "exploitabilityScoreReason": "Used in src/server/index.ts", "exploitabilitySource": "agent", "filePath": null, "line": null, "cveId": "CVE-2024-12345", "cwe": [], "packageName": "lodash" } ] } ``` | Field | Notes | | ------------------------- | ---------------------------------------------------------------------------------------------------------------- | | `vulnerabilityType` | One of `sast`, `iac`, `cicd`, `secret`, `sca`, `container` | | `compositeScore` | Internal 0–1 composite priority (× 100 = user-facing Priority Score) | | `cvss4EnvironmentalScore` | The project-adjusted CVSS 4.0 score used in the calculation | | `exploitabilitySource` | `agent`, `manual` or `static` — see [Priority Scoring](/latest/plateform-overview/key-features/priority-scoring) | | `filePath` / `line` | Populated for SAST, IAC, CICD and Secrets findings | | `cveId` / `packageName` | Populated for SCA and Container findings | | `cwe` | CWE identifiers for code-based findings | *** ## How items are selected For each scanner table, the service pre-loads `max(limit × 4, 20)` rows ordered by stored `priorityScore DESC`. This keeps the candidate pool large enough that re-scoring with the current Security Context cannot demote a true winner. Each candidate is re-scored with the project's current Security Context (business criticality, data classification) so the ranking always reflects the latest configuration — not the score stored at the time of the scan. All candidates from all scanners are merged and sorted by `compositeScore` descending. The first `limit` items are returned. Detections with a **manual priority override** keep their stored score and are included in the ranking unchanged. If you want them re-evaluated, clear the override first. *** ## Where it appears * **Project dashboard** — the *Top 5* widget on the project overview. * **Email reports** — periodic vulnerability reports start with the project's Top items. * **Cybe MCP & API** — agents and external integrations consume the same endpoint to brief developers on the day's priorities. *** ## Best practices The Top list is most useful once the project's **Internet Exposure**, **Environment**, **Data Classification** and **Business Criticality** are set. Without context, the CVSS environmental score and the Context signal fall back to neutral defaults and the ranking becomes a CVSS-only sort. The default `limit=5` matches what a developer can realistically address in a day. A wider `limit=25` is better suited to weekly grooming or release-readiness reviews. A `not_exploitable` verdict from Cybe Analysis can keep a CVSS 9.8 out of the Top — that is by design. Review the `exploitabilityReason` before reopening. Pair the Top list with a [Policy](/latest/plateform-overview/key-features/policy-management) that blocks merges when any Top item is in the `Critical Urgent` bucket. Triage becomes self-enforcing. *** **Related:** [Priority Scoring](/latest/plateform-overview/key-features/priority-scoring) · [CVSS 4.0 Scoring](/latest/plateform-overview/key-features/cvss-4-scoring) · [Project Vulnerability List](/latest/managing-vulnerabilities/project-vulnerability-list) · [Updating Vulnerabilities](/latest/managing-vulnerabilities/updating-vulnerabilities) # Updating Vulnerabilities Source: https://docs.cybedefend.com/latest/managing-vulnerabilities/updating-vulnerabilities Easily change vulnerability status, priority, and add comments to coordinate fixes. CybeDefend streamlines remediation by letting you **update each vulnerability** (found by SAST, IAC, or SCA) directly from the dashboard. Whether you’re marking it as “In Progress” or adding a priority label, you can keep the entire team aligned. Vulnerability Update Popup ## Steps to Update 1. **Open the Vulnerability**\ In the project’s vulnerability list, click a specific item to reveal the **Update Popup**. 2. **Edit Fields** * **Status**: Switch from To Verify → Confirmed. * **Priority**: Assign internal priority tags (e.g., critical, low). * **Comment**: Record progress, decisions made, or references to external tickets. 3. **Confirm & Save**\ Changes are immediately visible to all team members, helping them see updated statuses without additional overhead. ## Dismissing a finding requires a justification Setting a finding to **Ignored** — in the dashboard, through the API, or through the Cybe MCP tool — now requires a written reason. A dismissal without one is refused. **Breaking change.** Any integration that sets `status: "ignored"` must now send `dismissalReason` alongside it. Requests that omit it fail validation with `dismissalReason is required when status is "ignored"`. | Rule | Value | | -------------- | ------------------------------------------ | | Required when | `status` is `ignored` | | Blank values | Rejected — whitespace only is not a reason | | Maximum length | 512 characters | ```json theme={null} { "vulnerabilityId": "11111111-1111-4111-8111-111111111111", "status": "ignored", "dismissalReason": "Accepted risk — signed off by the CISO on 2026-07-01" } ``` The same rule applies to **bulk dismissal**: each item in a batch update carries its own `dismissalReason`, so a bulk action stays audited rather than becoming a way around the requirement. The justification is recorded against the finding and surfaces as `dismissal_reason` in the [Findings Export](/latest/managing-vulnerabilities/findings-export). Automated triage is held to the same standard — when Cybe Agent dismisses a finding, it records its own reason and is attributed as `agent`. After Updating Vulnerability Use the comment field for quick, contextual notes. This eliminates the need for separate emails or Slack threads where details can get lost. *** ## Consistent Management Across Scanners A critical SAST finding about SQL injection can be handled the same way as a high-severity IAC misconfiguration in Terraform. This uniform approach: * **Reduces Confusion**: No separate tools or flows for each scanner. * **Speeds Remediation**: Everyone uses the same interface, no matter the vulnerability source. Consider adopting weekly triage sessions where you review newly detected vulnerabilities and update them as a team. # Slack Source: https://docs.cybedefend.com/latest/notifications/slack Connect your Slack workspace to receive CybeDefend scan results, security alerts, and reports directly in your team channels. The **Slack integration** lets CybeDefend push security notifications into the channels your team already uses. Once connected, you can map any project to a Slack channel and receive scan completions, zero-day alerts, and periodic security reports — without leaving Slack. *** ## What You Get A summary of every scan: total findings, severity breakdown, and per-scanner counts (SAST, SCA, IaC, secrets, containers). Instant notifications when newly disclosed vulnerabilities affect packages already in your projects. A 7-day summary of open findings, new vulnerabilities, and resolved issues per project. A monthly rollup with severity distribution and trend indicators to share with stakeholders. *** ## Prerequisites * You must have **Administrator** or **Manager** privileges on the CybeDefend organization (the `manage_integration` permission). * You must be a **workspace admin** in Slack, or have permission to install Slack apps in your workspace. The Slack integration is configured at the **organization level**. Once connected, every project in the organization can map a channel — but each project can only target a single channel. *** ## 1. Connect Your Slack Workspace From the CybeDefend dashboard, go to your **Organization settings → Integrations**, then click **Slack**. A Slack authorization window opens. You will be asked to choose the workspace to install the CybeDefend app into. Slack will list the permissions the app needs: * `chat:write` — post messages in channels the app is a member of * `channels:read` — list public channels in the workspace * `groups:read` — list private channels the app is invited to Click **Allow** to complete installation. The popup closes automatically and the integration modal shows your workspace name with a **Connected** badge. You are now ready to map channels to projects. If your Slack workspace requires admin approval for third-party apps, the install request is sent to your workspace administrator. Installation completes once it is approved. *** ## 2. Map a Channel to a Project Each project routes its notifications to one Slack channel. The mapping is configured from the project itself. Navigate to your project → **Settings → Notifications**. Click the **Slack channel selector**. A searchable dropdown lists all accessible channels in the connected workspace — public channels and private channels the app has been invited to. Pick a channel (e.g. `#security-alerts`). The CybeDefend bot will automatically join public channels selected here. **Private channels:** The CybeDefend bot cannot auto-join private channels. You must invite it manually with `/invite @CybeDefend` inside the channel before notifications can be delivered. To **remove** the mapping, click the **×** next to the channel name. The project will stop sending notifications to Slack but the workspace integration remains active. *** ## Notification Anatomy All CybeDefend Slack messages share a consistent layout: a colored sidebar indicating severity, a header with the project name, a compact breakdown, and an action button that deep-links into the CybeDefend dashboard. | Color | Meaning | | --------- | --------------------------------------- | | 🔴 Red | At least one **Critical** finding | | 🟠 Orange | At least one **High** finding | | 🟡 Yellow | At least one **Medium** finding | | 🔵 Blue | Only **Low** findings, or informational | | 🟢 Green | Clean scan — no vulnerabilities | ### Example: Scan Complete ``` ✅ Scan Complete my-frontend-app — `main` · SAST · SCA 5 vulnerabilities found 🔴 1 critical · 🟠 2 high · 🟡 2 medium [ View Results ] ``` ### Example: Zero-Day Alert ``` 🚨 Zero-Day Vulnerability Alert 2 new vulnerabilities detected in api-backend 🔴 CVE-2025-12345 — CRITICAL · CVSS 9.8 🟠 CVE-2025-67890 — HIGH · CVSS 7.5 [ View Details ] ``` *** ## Permissions Reference | Action | CybeDefend permission | Scope | | ------------------------------- | ------------------------------- | ---------------------- | | Connect / disconnect Slack | `manage_integration` | Organization | | List workspace channels | `manage_integration` | Organization | | Map a channel to a project | `manage_integration` + `update` | Organization + Project | | View a project's mapped channel | `start_scan` | Project | *** ## Disconnect Slack Disconnecting Slack removes the integration **and all project channel mappings** in the organization. Organization settings → Integrations → **Slack**. Confirm in the dialog. CybeDefend will revoke the bot token and delete the workspace mapping. Disconnecting is **irreversible from the dashboard**: project–channel mappings are deleted on disconnect. You will need to reconfigure them after re-installing the app. *** ## Security & Privacy The Slack bot token is encrypted at rest using **AES-256-GCM** before being stored in CybeDefend's database. The integration requests only the scopes needed to list channels and post messages — no message reading, no user identity scopes. CybeDefend never sends source code, secrets, or vulnerable file contents to Slack. Messages only include metadata (counts, severities, CVE IDs, deep links). Disconnecting from CybeDefend revokes the bot token. You can also remove the app directly from your Slack workspace admin panel. *** ## Troubleshooting * Verify the workspace is still **Connected** in Organization settings → Integrations. * Confirm the project has a channel mapped (Project → Settings → Notifications). * For **private channels**, ensure the CybeDefend bot has been invited with `/invite @CybeDefend`. * Check that your organization is not in a **read-only** billing state — notification dispatch is gated by writability. * The bot lists **public channels** and **private channels it is already a member of**. Invite the bot to any private channel you want to use. * If even public channels are missing, try disconnecting and re-installing the Slack app to refresh the workspace token. * Verify popups are not blocked for the CybeDefend dashboard origin. * Make sure your Slack workspace allows installation of third-party apps. If admin approval is required, your request is pending in the Slack admin console. The bot tried to post in a channel it is not a member of. For public channels, re-select the channel in the project settings — CybeDefend will attempt to auto-join. For private channels, invite the bot manually. *** **Related:** [Managing Vulnerabilities](/latest/managing-vulnerabilities/project-vulnerability-list) · [Policy Management](/latest/plateform-overview/key-features/policy-management) · [Account Setup](/latest/get-started/account-setup/assigning-roles) # AI-BOM & EU AI Act Compliance Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/ai-bom Inventory every AI component in your code — models, datasets, frameworks, agents, MCP servers, guardrails — and assess compliance with the EU AI Act ## Overview The **AI-BOM** (AI Bill of Materials) scanner builds a complete inventory of the artificial intelligence and machine-learning components used by your project. It discovers AI models, ML frameworks, AI SDKs, datasets, vector stores, agents, MCP servers, guardrails and model weight files directly from your source code and dependency manifests — then maps each component to the obligations of **Regulation (EU) 2024/1689 (the EU AI Act)**. AI-BOM is a dedicated scanner type, alongside SAST, SCA, Container, IaC and Secret scanning. Unlike the others, it does not report vulnerabilities — it produces a **structured inventory** of your AI supply chain and the regulatory context that applies to it. Automatically discovers models, frameworks, SDKs, datasets, agents, MCP servers and guardrails across your codebase Classifies each component by risk category and links it to the applicable articles and obligations Output follows the standard CycloneDX 1.6 Machine Learning profile, ready to export and share Detects and fingerprints loose model weight files (.safetensors, .gguf, .onnx, .pt…) on disk *** ## What Gets Detected The AI-BOM scanner inventories AI/ML usage from several angles — imported packages, declared dependencies, hard-coded model identifiers and model files present in the repository. | Component family | Examples | | ------------------------------------ | ----------------------------------------------------------------------------------- | | **AI models** | LLMs (GPT, Claude, Gemini, Llama…), embeddings, vision and speech models | | **ML frameworks** | PyTorch, TensorFlow, Transformers, LangChain, LlamaIndex, scikit-learn | | **AI SDKs & services** | Provider client libraries and hosted inference APIs | | **Datasets & vector stores** | Vector databases, dataset loaders, retrieval stores | | **AI applications** | Streamlit, Gradio, Chainlit and similar AI app frameworks | | **Inference infrastructure** | Local inference engines and serving runtimes | | **Agents, MCP servers & guardrails** | Agent frameworks, Model Context Protocol servers, safety/guardrail libraries | | **Model weight files** | `.safetensors`, `.gguf`, `.ggml`, `.onnx`, `.pt`, `.pth`, `.h5`, `.pkl`, `.tflite`… | Regular dependencies that have nothing to do with AI are **not** included — the AI-BOM focuses exclusively on AI/ML-relevant components. Code-level vulnerabilities remain the job of the SAST and SCA scanners. *** ## How Detection Works The scanner combines multiple detection layers so that components are found even when one signal is missing: 1. **Dependency manifests** — parses Python `requirements*.txt`, `setup.py` and `pyproject.toml` to discover declared AI packages and pin their versions. UTF-8 and UTF-16 (Windows-generated) manifests are both supported. 2. **Source code analysis** — scans source files for AI-related imports and for hard-coded model identifiers (e.g. `"gpt-4o"`, `"claude-..."`, `"meta-llama/Llama-..."`) that would otherwise go unrecorded. 3. **Model weight files** — discovers model artifacts on disk by extension, records them as components and fingerprints them with a SHA-256 hash. 4. **Version & evidence enrichment** — attaches versions from manifests and records the exact file location where each component was found. ### Coverage * **Primary language:** Python (`.py`) * **Additional languages:** JavaScript / TypeScript, Go, Java, Kotlin, Ruby, Rust, C#, C/C++, Shell, and configuration files (YAML / TOML / JSON, Dockerfiles) Build and vendor directories (`node_modules`, `venv`, `__pycache__`, `dist`, `build`, `.git`, …) are automatically excluded from the inventory. *** ## Component Types Every component is classified using the **CycloneDX 1.6** native component types: | Type | Typical AI usage | | ------------------------ | --------------------------------------------------- | | `machine-learning-model` | LLMs, embeddings, vision models, model weight files | | `framework` | PyTorch, TensorFlow, LangChain, Transformers | | `library` | AI SDKs, ML utility libraries | | `data` | Datasets, vector stores, retrieval sources | | `application` | AI app frameworks (Streamlit, Gradio, …) | | `container` | Inference engines and serving runtimes | | `file` | Loose model weight files detected on disk | *** ## Inventory Output For each detected component, the AI-BOM records a rich, standards-aligned set of fields: * **Identity** — `name`, `version`, `type`, `purl` (Package URL) and `source` (e.g. a model hub, a package registry, a Git repository, or a local file) * **Licenses** — SPDX identifiers extracted from the component, including composite expressions * **Evidence** — the file path (and line where available) proving where the component is used * **Hashes** — SHA-256 fingerprints for model weight files * **External references** — links to model cards, documentation and source repositories * **Model card** — for ML models, structured metadata such as model parameters, quantitative analysis and considerations (when available) * **Tags & metadata** — additional classification labels and key/value metadata The complete inventory is also available as a raw **CycloneDX 1.6 ML-BOM** JSON document that you can export and feed into other tools or share with auditors. *** ## EU AI Act Compliance Beyond the inventory, the AI-BOM evaluates your AI components against **Regulation (EU) 2024/1689**. ### Risk Categories Each component is mapped to an EU AI Act risk category: | Category | Meaning | | -------------- | ------------------------------------------------------------------------------------------------------------------- | | **Prohibited** | Practices banned under the EU AI Act (e.g. social scoring, certain biometric uses) | | **High** | High-risk uses subject to strict obligations (e.g. employment screening, law enforcement, biometric identification) | | **Limited** | Uses requiring transparency towards users (e.g. chatbots, synthetic/AI-generated content) | | **Minimal** | Default category for components with minimal regulatory obligations | ### General-Purpose AI & Systemic Risk The scanner identifies **General-Purpose AI (GPAI)** models and flags those that may fall under **systemic-risk** provisions (Article 51 and following), so you can quickly see which components carry the heaviest obligations. ### Compliance Report A per-framework compliance report aggregates the analysis for a project and branch: * Total components evaluated * Breakdown by risk category * Count of components flagged for systemic risk * Applicable **obligations** and **articles**, with the components each one applies to The AI-BOM inventory and compliance report together form the kind of technical record (in the spirit of the EU AI Act's Annex IV) that you can present to demonstrate visibility over your AI supply chain. *** ## Enabling AI-BOM AI-BOM scanning is configured per project. Navigate to your project's scanning configuration, where you choose which analysis types to run (SAST, SCA, IaC, Container, Secret, AI-BOM). Turn on the **AI-BOM** analysis type for the project. Launch a scan as usual. When it completes, the AI-BOM inventory and compliance report are available for the scanned branch. *** ## Viewing Results Once a scan completes, the AI-BOM results are available in the project dashboard: * **Component inventory** — the full list of detected AI components, filterable by **branch** and **component type** * **Per-component detail** — identity, licenses, evidence (where it was found), external references and model card metadata * **Compliance view** — the EU AI Act risk breakdown, GPAI / systemic-risk flags and the applicable obligations *** ## Best Practices Start with components mapped to the **Prohibited** and **High** risk categories — these carry the strongest regulatory obligations under the EU AI Act. General-purpose AI models, and especially those flagged for systemic risk, come with additional obligations. Keep an eye on these as your AI usage grows. AI models often ship under non-standard or restrictive licenses. Use the recorded license information to confirm your usage is permitted. Export the raw CycloneDX 1.6 ML-BOM to share with auditors, feed into governance tooling, or keep as part of your technical documentation. AI usage changes quickly. Run AI-BOM on the branches you care about so the inventory stays current. *** **Related:** [License Compliance](/latest/plateform-overview/key-features/license-compliance) · [Policy Management](/latest/plateform-overview/key-features/policy-management) · [Managing Vulnerabilities](/latest/managing-vulnerabilities/project-vulnerability-list) # BLSA: Business Logic Security Analysis Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/blsa-business-logic-security-analysis Discover our AI-driven, holistic approach to identifying insecure-by-design flaws in your application. Traditional scanners (SAST, IAC, SCA) excel at finding known patterns or misconfigurations. **Business Logic Security Analysis (BLSA)** goes a step further, using **AI agents** to interpret your application's overall architecture, highlighting **insecure-by-design** issues that can't be detected by standard rule-based tools. BLSA Overview ## Why BLSA? 1. **Contextual Understanding**\ AI doesn't just read lines of code—it understands how different parts interact, spotting vulnerabilities when business flows are implemented incorrectly (e.g., logic around payment processing or user account privileges). 2. **Agent-Based Analysis**\ Each AI "agent" focuses on a segment of your code, forming an overall "mental model." This is especially valuable for complex monoliths or microservices that standard scanners struggle to piece together. 3. **Split Prompting & Intelligent Correlation**\ We split large codebases into chunks (split prompting) so our AI system can analyze the entire repository in detail, then reassemble findings into a single, cohesive report. **Availability.** BLSA is **live for design partners** and is not yet generally available. If you want access, ask us and we will tell you honestly whether your stack is a fit today. Follow the [Roadmap](https://cybedefend.featurebase.app/roadmap) for general availability. *** ## Potential Impact * **Uncover Hidden Flaws**: Identify logic breaks that hackers can exploit, such as bypassing payment checks or manipulating workflow states. * **Reduce Manual Audits**: BLSA can flag suspicious flows that might otherwise require specialized security consultants. * **Enhance DevSecOps**: Integrating BLSA results alongside SAST, IAC, and SCA ensures a complete coverage of technical and logical vulnerabilities. We do not publish the full technical architecture, but we run live demos on a real repository with design partners. Ask for one rather than take our word for it. *** **Related:** [Cybe Analysis](/latest/plateform-overview/key-features/cybe-analysis) · [Security Champion](/latest/plateform-overview/key-features/cybe-security-champion) · [Roadmap](https://cybedefend.featurebase.app/roadmap) # CVSS 4.0 Scoring Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/cvss-4-scoring Modern severity scoring with environmental adjustments based on your project security context ## Overview CybeDefend computes a **CVSS 4.0** score for every vulnerability — across SAST, SCA, IAC, Container, CICD and Secrets. The platform stores two distinct values: * a **Base Score**, derived from the vulnerability's intrinsic properties (attack vector, complexity, impact on confidentiality / integrity / availability), * an **Environmental Score**, recomputed for each project from the **Security Context** you configure, so the same CVE can legitimately score differently across projects. Latest FIRST.org standard with Vulnerable / Subsequent system impact metrics Legacy CVSS 3.1 vectors are automatically converted to a CVSS 4.0 base vector Project context (exposure, environment, data class) reshapes the score If no vector is available, severity (Critical / High / Medium / Low) drives a sensible default *** ## How the score is built For each detection, CybeDefend resolves a CVSS 4.0 base vector with the following priority: 1. **Direct CVSS 4.0 vector** if provided by the scanner or advisory. 2. **CVSS 3.1 vector** — converted into an equivalent CVSS 4.0 base vector (AV/AC/PR/UI/VC/VI/VA mapping, AT defaulted to None, scope handled). 3. **Severity-only fallback** — uses a curated default vector per severity tier. The resulting **base score** is stored once. The **environmental score** is then recomputed every time the project's Security Context changes. Both the base vector and the full environmental vector (including `MAV`, `MAT`, `MPR`, `CR`, `IR`, `AR`, `MSC`, `MSI`, `MSA` modifiers) are persisted so the scoring is fully auditable. *** ## Environmental modifiers The Security Context of the project drives the environmental adjustments applied to the base vector: | Context field | CVSS 4.0 metric(s) | Effect | | ------------------------------------------------------------------------------ | ------------------------------------ | -------------------------------------------------------------------------------- | | **Internet Exposure** (`public` / `internal` / `airgapped`) | `MAV` (Modified Attack Vector) | Network → Adjacent → Local as exposure shrinks | | **Network Segmentation** (`flat` / `segmented` / `microsegmented`) | `MAT` (Modified Attack Requirements) | Segmented networks raise attack requirements | | **Environment** (`development` / `staging` / `production`) | `MPR`, `CR`, `IR`, `AR` defaults | Dev raises required privileges; prod sets high CIA requirements | | **Data Classification** (`public` / `internal` / `confidential` / `regulated`) | `CR`, `MSC` | Regulated data boosts confidentiality requirement and subsequent confidentiality | | **Business Criticality** (`low` / `medium` / `high` / `mission_critical`) | `AR`, `MSA` | Mission-critical workloads boost availability requirement | | **Handles PII** | `CR:H`, `MSC:H` | PII processing raises confidentiality weight | | **Handles Payment Data** | `CR:H`, `IR:H`, `MSC:H`, `MSI:H` | Payment processing raises confidentiality and integrity | | **Safety-Critical** | `IR:H`, `AR:H`, `MSI:H`, `MSA:H` | Safety workloads raise integrity and availability | Explicit `dataClassification` / `businessCriticality` values override the `environment`-derived defaults. PII / Payment / Safety boosts are applied last and can only **upgrade** previous values, never downgrade them. *** ## Where to see the scores * **Vulnerability list** — sortable by CVSS Score (SCA) and severity. * **Vulnerability detail** — displays both Base Score and Environmental Score, the full CVSS 4.0 vector, and a human-readable explanation of each component. * **Top Vulnerabilities** widget — surfaces the highest-priority items, including the environmental CVSS score per detection. * **API** — every detection returned by the REST API exposes `cvss4BaseScore`, `cvss4EnvironmentalScore`, `cvss4Vector` and `cvss4EnvironmentalVector`. *** ## Recalculation triggers Environmental scores are automatically recomputed when: Any update to the project's Security Context (exposure, environment, data class, criticality, PII / Payment / Safety toggles) re-enqueues a CVSS recalculation for all active detections. Newly ingested vulnerabilities are scored with the current Security Context as part of the ingestion pipeline. When a more authoritative CVSS source becomes available (e.g. NVD publishes a CVSS 4.0 vector for a CVE previously scored from CVSS 3.1), the score is upgraded. If the Security Context contains `unspecified` fields, the corresponding modifier is **skipped** rather than guessed — the base vector is preserved for that axis. Fill the context in **Project Settings** to get the most accurate environmental score. *** ## Severity vs. Score Severity buckets (`Critical`, `High`, `Medium`, `Low`) remain available for filtering and reporting, but the **environmental CVSS score** is what the platform uses internally as the CVSS dimension of the [Priority Score](/latest/plateform-overview/key-features/priority-scoring). Severity displayed in the UI follows the standard CVSS 4.0 mapping: ≥ 9.0 Critical · ≥ 7.0 High · ≥ 4.0 Medium · > 0 Low · 0 None. *** **Related:** [Priority Scoring](/latest/plateform-overview/key-features/priority-scoring) · [Top Vulnerabilities](/latest/managing-vulnerabilities/top-vulnerabilities) · [Exploitable Path](/latest/plateform-overview/key-features/exploitable-path) # Cybe Analysis Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/cybe-analysis AI-powered vulnerability analysis that eliminates false positives and provides expert-level security insights. Transform your vulnerability management with **Cybe Analysis**, an autonomous AI agent that analyzes, contextualizes, and prioritizes security findings with senior-level expertise. Cybe Analysis Interface *** ## What is Cybe Analysis? Powered by proprietary code parsing technology and advanced AI algorithms, Cybe Analysis eliminates up to **90% of false positives** while providing deep contextual analysis of every vulnerability. Our knowledge graph system enables unprecedented understanding of your codebase, delivering expert-level security insights 24/7. *** ## Key Capabilities ### Intelligent False Positive Detection Leverages proprietary knowledge graph technology to understand your entire codebase context. By analyzing data flows, dependencies, and business logic, it achieves industry-leading accuracy in distinguishing real vulnerabilities from false alarms. ### Senior-Level Security Expertise Operates at the expertise level of a senior security analyst, providing detailed vulnerability assessments, risk scoring, and prioritization recommendations. Each finding includes comprehensive analysis covering exploitability, business impact, and remediation complexity. ### Proprietary Code Understanding Our breakthrough parsing technology creates a complete knowledge graph of your application, enabling Cybe Analysis to trace vulnerability paths through complex codebases with unprecedented precision. ### Contextual Vulnerability Analysis Evaluates vulnerabilities based on actual usage patterns, data sensitivity, and architectural considerations—ensuring you focus on what truly matters. *** ## Why Cybe Analysis? * **Unmatched Accuracy**: Proprietary parsing technology delivers unprecedented precision * **Time Savings**: Reduce security team workload by eliminating false positives * **Expertise at Scale**: Access senior-level security analysis 24/7 * **Complete Data Control**: Self-hosted AI models ensure code remains within your infrastructure Learn more about configuring and using Cybe Analysis in the [detailed guide](/latest/agent-ai-integration/cybe-analysis-detail). # Cybe AutoFix Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/cybe-autofix AI-powered intelligent remediation that understands context and fixes vulnerabilities across your entire codebase. Go beyond simple patches with **Cybe AutoFix**—an AI agent that understands, contextualizes, and intelligently remediates vulnerabilities across your entire codebase. Cybe AutoFix Interface *** ## What is Cybe AutoFix? Traditional autofix solutions apply band-aid fixes without understanding the broader context. Cybe AutoFix revolutionizes remediation by leveraging our proprietary knowledge graph to comprehend the full scope of each vulnerability, ensuring fixes are not only secure but also maintain code quality, performance, and architectural integrity. *** ## Advanced Remediation Features ### Context-Aware Remediation Performs deep contextual analysis using knowledge graph technology. Understands the vulnerability's root cause, its propagation through the codebase, and potential side effects of remediation. ### Intelligent Code Generation Generates production-ready code that follows your team's coding standards, maintains consistency with existing patterns, and preserves business logic while eliminating vulnerabilities. ### Multi-File Coherent Fixes When vulnerabilities span multiple files, Cybe AutoFix orchestrates coherent modifications across your entire codebase, ensuring all related components are properly updated and synchronized. ### Automated Pull Request Generation Seamlessly integrates with GitHub and GitLab by automatically creating detailed pull requests. Each PR includes comprehensive documentation explaining the vulnerability, the fix approach, and architectural considerations. ### Regression Prevention By understanding the complete codebase through our knowledge graph, Cybe AutoFix ensures fixes don't introduce new vulnerabilities or break existing functionality. *** ## Why Cybe AutoFix? * **Comprehensive Understanding**: Every fix considers full application context * **Developer-Ready Code**: Follows your coding standards and architectural patterns * **Reduced MTTR**: Cut Mean Time To Remediation with intelligent, automated fixes * **Learning System**: Continuously improves remediation strategies from your codebase patterns Learn how to configure and use Cybe AutoFix in the [detailed guide](/latest/agent-ai-integration/cybe-autofix-detail). # Cybe Chat Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/cybe-chat The in-dashboard AI security assistant. Ask Cybe anything about your security posture across every project you can access, drive actions on findings from a single chat, and pick up where you left off thanks to RGPD-compliant memory. **Cybe Chat is the assistant baked into the CybeDefend dashboard.** It talks to the same MCP toolset that powers our IDE integrations, but with a UI tuned for SecOps and engineering managers: cross-project posture, human-in-the-loop write actions, persistent memory, and a quota-aware streaming experience. *** ## What Cybe Chat gives you | Scope | Example prompts | | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **All accessible projects** | *"Where are the most critical findings across our portfolio?"* — *"Which teams have unaddressed criticals older than 30 days?"* — *"Compare the SCA exposure between our payment and back-office repos."* | | **A specific project** | *"What changed in this project's posture since last week?"* — *"Walk me through the open SAST findings on `develop`."* — *"List packages with known CVEs and a fix available."* | | **The current page** | *"Summarise this vulnerability."* — *"Is there a similar pattern elsewhere?"* — *"Propose a status update."* The scope auto-locks to whatever you are looking at. | Cybe Chat sees only what your CybeDefend account is permitted to see. Permify is the single source of truth — the chat reflects your team and project scopes exactly the way the dashboard does. *** ## Why it matters Most security platforms ask you to click through five pages to answer "what's the riskiest thing on my plate right now?". Cybe Chat collapses that into one question. * **Cross-project posture from one prompt.** Instead of switching between dashboards, ask in plain English. Cybe walks your accessible projects, aggregates findings, and answers with citations back to the right view in the UI. * **Actions, not just answers.** When the right next step is "mark these SQLi findings as not-exploitable" or "raise this CVE to critical", Cybe proposes the action and waits for your approval. Every write is human-confirmed before it lands. * **Same engine as your IDE.** Cybe Chat and the [Cybe MCP server](/latest/plateform-overview/key-features/mcp-server-integration) share the same typed toolset and the same Permify-backed authorization. The view you have in the dashboard is the view your AI agents have in Cursor, Claude Code or VS Code. * **Memory that respects your data rights.** Cybe remembers your last conversation, your preferences and the context you opened the drawer on. You can read, edit and delete every entry from the chat settings — GDPR-compliant by design. *** ## Human-in-the-loop write actions Cybe Chat can call the same 18 typed MCP tools as your IDE agents. Read tools (`list_vulnerabilities_*`, `get_project_overview`, …) run silently. **Write tools always require explicit user approval.** When Cybe proposes an action — for example, updating the status of a finding — a card appears in the conversation: ```text theme={null} Cybe proposes: update_vulnerability project · payments-api finding · vs_8a3b · SQLi on /api/users set status → not_exploitable comment → "fixed by parameterised query helper" [ Confirm ] [ Reject ] ``` Confirming the card re-checks your Permify scope at execution time. If your access was revoked between the proposal and the confirmation, the action is rejected on the spot. Every confirmed action lands in your CybeDefend audit trail with your user identity and timestamp — the same audit surface as a manual change in the dashboard. *** ## Cross-project posture, in practice Cybe Chat introduces an **all-accessible-projects** scope that no other surface of the platform exposes today. From a single prompt, Cybe can: * Aggregate severity counts across every project your account can read. * Surface the top contributors to your overall risk (project, scanner, language, branch). * Compare two projects side by side. * Highlight outliers — a project that suddenly accumulated criticals, a package showing up in many repos, a finding pattern recurring across teams. The scope is gated by Permify. If you only see five projects, Cybe only sees five projects. There is no "admin override" that bypasses your team boundaries. *** ## Memory you control Cybe Chat remembers two kinds of state for you: * **Conversations**: every thread you have started, so you can pick up where you left off. * **Preferences**: the last conversation you opened, whether the drawer should auto-open on dashboard load, and similar UI hints. A dedicated settings panel inside the drawer lets you: * View the sanitised memory entries Cybe stores about you. * Update a single preference (e.g. disable auto-open). * **Permanently delete** any memory entry. The deletion is immediate and irreversible — it does not "soft-delete" or queue for backup expiry. This matches our public stance on AI usage and privacy: see [LLM usage privacy](/latest/plateform-overview/security-privacy/llm-usage-privacy) for the full picture. *** ## Quota, errors, and feedback The chat streams answers token by token over SSE. If anything goes wrong — service unavailable, plan quota exceeded, downstream rate limit, malformed prompt — a red banner appears below the chat header with a clear, dismissible error code. You see exactly why the answer stopped. Every Cybe response carries a thumbs-up / thumbs-down. Thumbs-down opens a tag picker (`wrong verdict`, `missing context`, `inaccurate`, `ambiguous`, `incomplete`, `off-topic`) plus an optional correction field. The feedback feeds back into Cybe's evaluation harness and is also visible to your account admin, so the team can act on patterns. *** ## Where it slots in the platform The hands-on guide: opening the drawer, picking a scope, approving actions, managing memory. Same toolset, exposed to Claude Code, Cursor, VS Code Copilot Chat, Windsurf and any MCP-compatible agent. The project-specific code consultation engine. Use it to chat about *how* to fix; use Cybe Chat to act on *what* is exposed. What Cybe Chat does, and does not, send to a model. Memory retention and deletion guarantees. # Cybe Security Champion Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/cybe-security-champion Your AI-powered security expert that provides instant, expert-level guidance directly within your development workflow. Empower every developer with an **AI Security Champion** that provides instant, expert-level security guidance directly within your development workflow. Cybe Security Champion Interface *** ## What is Cybe Security Champion? Traditional Security Champion programs struggle with scalability and availability. Cybe Security Champion revolutionizes this approach by providing each developer with **24/7 access to senior-level security expertise**. Through our advanced chat interface and deep codebase understanding, developers can instantly get answers about vulnerabilities, security best practices, and remediation strategies specific to their project. *** ## Your AI-Powered Security Expert ### Interactive Security Consultation Engage in natural language conversations about any security concern. The AI understands your specific codebase context through our knowledge graph, providing tailored advice rather than generic recommendations. ### Proactive Security Education Doesn't just fix problems—it educates. Each interaction includes explanations of security principles, helping developers understand why vulnerabilities occur and how to prevent them in future code. ### Project-Specific Insights By analyzing your entire project through our proprietary parsing system, provides insights specific to your application's architecture, dependencies, and security posture. ### Real-Time Vulnerability Exploration Developers can explore detected vulnerabilities interactively, asking questions about severity, exploitation scenarios, and remediation options with detailed explanations and code examples from your actual project. ### 24/7 Availability Unlike human Security Champions with limited availability, Cybe is always accessible. Get instant security guidance at any time, whether during late-night coding sessions or urgent production issues. *** ## Understanding Security Champions In traditional organizations, a **Security Champion** is a designated expert—typically a senior developer with security expertise—who serves as the bridge between development teams and security departments. However, this model faces challenges: * **Limited Availability**: One person covering multiple teams means waiting times * **Knowledge Bottlenecks**: Development slows when the Security Champion is unavailable * **Scaling Issues**: Growing organizations struggle to maintain recommended ratios * **Inconsistent Coverage**: Time zones and working hours create gaps **Cybe Security Champion** solves these challenges by providing every developer with their own dedicated security expert, available instantly, 24/7, with comprehensive knowledge of your entire codebase. *** ## Why Cybe Security Champion? * **Scalable Expertise**: Provide every developer with senior-level security knowledge * **Contextual Relevance**: Every interaction is specific to your codebase and technology stack * **Measurable Impact**: Track security posture improvement through reduced vulnerabilities * **Seamless Integration**: Works within existing development workflows Learn how to configure and use Cybe Security Champion in the [detailed guide](/latest/agent-ai-integration/cybe-security-champion-detail). # CybeRisk Score Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/cyber-risk-score Risk-based prioritization at the project level: a single CVSS-weighted score that ranks every project by how much real risk it carries ## Overview [Priority Scoring](/latest/plateform-overview/key-features/priority-scoring) tells you *which finding to fix first inside a project*. The **CybeRisk Score** answers the level above it, *which project carries the most risk right now*, so security teams can prioritize **across an entire portfolio**, not just within a single repository. It is a single number computed by summing a CVSS-weighted point contribution over every **active** vulnerability on a project's reference branch. Higher-severity findings contribute disproportionately more points, so the score reflects both the **volume** and the **severity** of open risk. One risk number per project, aggregated across all six scanners Critical findings contribute up to 20× more points than Low ones Not capped at 100. A large, risky project can score in the hundreds Per-scan-type contributions and the top 5 risk contributors *** ## The formula The CybeRisk Score is the **rounded sum** of each active vulnerability's point contribution: ``` CybeRiskScore = round( Σ pointsFromVuln(v) ) for every active vulnerability v ``` Each vulnerability is mapped to points by linearly interpolating its effective CVSS inside its severity band: | CVSS band | Points formula | Range | | -------------------------- | ---------------------------- | ---------- | | **Critical** `[9.0, 10.0]` | `15 + (cvss − 9) × 5` | 15 → 20 | | **High** `[7.0, 9.0)` | `5 + (cvss − 7) × (5 / 1.9)` | 5 → \~10.3 | | **Medium** `[4.0, 7.0)` | `2 + (cvss − 4) × (2 / 2.9)` | 2 → \~3.4 | | **Low** `[0.1, 4.0)` | `1` (constant) | 1 | The scale is **deliberately unbounded**. Unlike a normalized 0–100 score, a sum lets a project with 50 critical findings clearly outrank one with 5, so the number grows with the real backlog of risk. ### Which CVSS is used The effective CVSS is resolved in priority order, falling back to a severity midpoint when no vector exists at all: The project-adjusted [CVSS 4.0 environmental score](/latest/plateform-overview/key-features/cvss-4-scoring) is preferred. Used when no environmental score is available. For findings with no CVSS at all (typically SAST, IaC and Secrets), the midpoint of the severity band is used: **Critical = 17.5**, **High = 7.5**, **Medium = 3**, **Low = 1**. *** ## What counts toward the score Only **active** vulnerabilities on the project's **reference branch** are included: * `to_verify` * `proposed_not_exploitable` * `confirmed` Resolved, ignored and confirmed-not-exploitable findings are excluded, so the score always reflects the *current* open risk. When a project has no reference branch configured, the score falls back to the `main` (then `master`) branch. An explicit "all branches" selection is treated the same way, so the score stays branch-scoped and comparable. *** ## Risk levels The numeric score maps to a categorical level used for filtering, dashboards and portfolio views: | CybeRisk Score | Level | | -------------- | ------------ | | ≥ 80 | **Critical** | | ≥ 50 | **High** | | ≥ 20 | **Medium** | | \< 20 | **Low** | **`low` is the floor.** Even a project with a score of 0 or no vulnerabilities reads as *Low*, there is no `none` level. This keeps every project on the same comparable scale. *** ## Where it appears * **Project overview**: the headline risk indicator with its breakdown and top contributors. * **Organization overview**: projects are ranked and filterable by CybeRisk level (`critical`, `high`, `medium`, `low`) to surface the riskiest projects in a portfolio. * **Project listings**: each project carries both `cyberRiskScore` (for sorting) and `cyberRiskLevel` (for grouping/filtering). The CybeRisk Score replaces the legacy bounded `riskScore` / `riskLevel` (0–100) project metric. The thresholds for the levels are unchanged, but the score itself is now an unbounded sum so it scales with the true backlog of risk. *** ## CybeRisk Score vs Priority Score These two scores work at different altitudes and complement each other: | | **Priority Score** | **CybeRisk Score** | | ------------ | ------------------------------------------ | ---------------------------------------------- | | **Scope** | One vulnerability | One project (reference branch) | | **Question** | What do I fix first *here*? | Which project is *riskiest*? | | **Scale** | 0–100 (normalized) | Unbounded sum of points | | **Signals** | CVSS 4.0 · EPSS · Exploitability · Context | CVSS-weighted point sum across active findings | | **Use** | In-project triage, Top Vulnerabilities | Portfolio prioritization, executive reporting | *** **Related:** [Priority Scoring](/latest/plateform-overview/key-features/priority-scoring) · [CVSS 4.0 Scoring](/latest/plateform-overview/key-features/cvss-4-scoring) · [Top Vulnerabilities](/latest/managing-vulnerabilities/top-vulnerabilities) · [Exploitable Path](/latest/plateform-overview/key-features/exploitable-path) # Exploitable Path Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/exploitable-path Identify whether vulnerable dependencies are actually used in your code with SCA reachability analysis ## Overview The **Exploitable Path** feature (also known as **Reachability Analysis**) determines whether vulnerable SCA dependencies are actually imported and used in your codebase. Instead of treating every dependency vulnerability equally, CybeDefend pinpoints the ones that matter — the packages your code actually calls — so you can focus remediation where it counts. Automatically identifies whether each dependency is used, unused, or potentially used in your code Boosts priority for used packages and lowers it for unused ones, so critical risks surface first Optionally auto-ignores vulnerabilities in dependencies your code never imports Shows exactly where in your code each dependency is imported, with file paths and line numbers *** ## How It Works During an SCA scan, CybeDefend analyzes your source code to detect import statements and matches them against detected dependencies. Each package receives a **reachability status**: | Status | Meaning | Impact | | -------------------- | ----------------------------------------------------------------- | ---------------------------------------------------------- | | **Used** | The package is directly imported in your code | Priority is **promoted** one level (e.g., normal → urgent) | | **Unused** | No import of this package was found in your code | Priority is set to **very low**; optionally auto-ignored | | **Potentially Used** | The package may be used indirectly (e.g., via a framework plugin) | No automatic priority change | For **transitive dependencies** (indirect dependencies pulled in by your direct dependencies), CybeDefend traces the dependency chain and propagates import locations from ancestor packages when available. *** ## Import Location Tracking When a package is marked as **Used**, CybeDefend records the exact locations where it is imported in your code. For each import, you can see: * **File path** — the relative path to the source file (e.g., `src/utils/helpers.ts`) * **Line number** — the exact line where the import occurs * **Code snippet** — the actual import statement content This allows developers to quickly navigate to the relevant code and assess the actual exposure to the vulnerability. *** ## Priority Adjustment When reachability priority adjustment is enabled, CybeDefend automatically modifies vulnerability priorities based on package usage: | Original Priority | Used Package | Unused Package | | ----------------- | --------------- | -------------- | | Very Low | Low | Very Low | | Low | Normal | Very Low | | Normal | Urgent | Very Low | | Urgent | Critical Urgent | Very Low | | Critical Urgent | Critical Urgent | Very Low | This means a **Normal** severity vulnerability in a package your code actually imports gets promoted to **Urgent**, while the same vulnerability in an unused dependency drops to **Very Low** — dramatically reducing noise in your vulnerability backlog. *** ## Configuration Exploitable Path analysis is controlled by two per-project settings, both **enabled by default**: ### Reachability Priority Adjustment When enabled, vulnerability priorities are automatically adjusted based on whether the affected package is used or unused in your code (see the priority table above). ### Reachability Auto-Ignore When enabled, vulnerabilities associated with **unused** packages are automatically set to **Ignored** status. This significantly reduces noise by hiding vulnerabilities that cannot be exploited since the dependency is never called. Open your project and go to the **Settings** section. Locate the **Reachability Priority Adjustment** and **Reachability Auto-Ignore** toggles. Enable or disable each setting independently based on your team's workflow. Disabling reachability auto-ignore will stop automatically ignoring vulnerabilities in unused packages for **future scans**. Previously ignored vulnerabilities will not be automatically restored. *** ## Supported Ecosystems Exploitable path analysis is available for all package ecosystems supported by CybeDefend's SCA scanner, including: * **npm** (JavaScript/TypeScript) * **pip / Poetry** (Python) * **Maven / Gradle** (Java, Kotlin, Scala) * **Go modules** * **NuGet** (.NET) * **Composer** (PHP) * **Cargo** (Rust) * **CocoaPods / Swift PM** (iOS) * **Pub** (Dart/Flutter) * **Hex** (Elixir/Erlang) * **Clojars** (Clojure) * **Conan** (C/C++) The accuracy of reachability detection varies by ecosystem. Ecosystems with explicit import statements (e.g., JavaScript `import`, Python `import`) provide the most precise results. *** ## Best Practices The default configuration (priority adjustment + auto-ignore) provides the best signal-to-noise ratio. Only disable these settings if your compliance requirements mandate reviewing all dependency vulnerabilities regardless of usage. Packages marked as **Potentially Used** may still represent real risk. Review these manually, especially for critical and high severity vulnerabilities. Use the [Policy Management](/latest/plateform-overview/key-features/policy-management) feature to create rules that account for reachability. For example, block builds only when a **used** package has a critical vulnerability. When triaging a vulnerability, review the import locations to understand how the package is used. A package imported only in test files may carry less risk than one used in production code paths. *** **Related:** [License Compliance](/latest/plateform-overview/key-features/license-compliance) · [Managing Vulnerabilities](/latest/managing-vulnerabilities/project-vulnerability-list) · [Policy Management](/latest/plateform-overview/key-features/policy-management) # License Compliance Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/license-compliance Identify, categorize, and manage open-source license risks across your SCA dependencies ## Overview The **License Compliance** feature gives you full visibility into the open-source licenses used by your project dependencies. CybeDefend automatically detects licenses during SCA scans, categorizes them by risk level, and lets you customize classifications at the organization level. Licenses are extracted from package metadata during every SCA scan Each license is classified as Permissive, Weak Copyleft, Strong Copyleft, or Unknown Full support for complex SPDX expressions with OR, AND, and WITH operators Customize license risk categories to match your organization's legal requirements *** ## License Categories CybeDefend classifies every detected license into one of four categories, each with an associated risk level: | Category | Risk | Description | | ------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | **Permissive** | None | Minimal restrictions on use, modification, and redistribution. Examples: MIT, Apache-2.0, BSD-2-Clause, ISC | | **Weak Copyleft** | Medium | Requires derivative works of the library itself to remain open-source, but allows proprietary linking. Examples: LGPL-2.1, MPL-2.0, EPL-2.0 | | **Strong Copyleft** | High | Requires any software that links to or includes the library to be released under the same license. Examples: GPL-3.0, AGPL-3.0, SSPL-1.0 | | **Unknown** | Unknown | License could not be identified or is not in the known SPDX database | CybeDefend ships with a built-in classification for **100+ SPDX licenses**. You can override any of these at the organization level to match your specific compliance requirements. *** ## SPDX Expression Support Many packages declare their license using complex SPDX expressions. CybeDefend parses these expressions and evaluates the effective risk: ### Operators | Operator | Meaning | Risk Evaluation | | -------- | ------------------------------ | ----------------------------------------------------- | | `OR` | User may choose either license | Picks the **least restrictive** option | | `AND` | Both licenses apply | Picks the **most restrictive** option | | `WITH` | License with exception | Evaluates the base license with the exception applied | ### Examples ``` MIT OR GPL-3.0-only → Effective risk: None (MIT is the least restrictive choice) MIT AND GPL-3.0-only → Effective risk: High (GPL-3.0 is the most restrictive, both apply) GPL-2.0-only WITH Classpath-exception-2.0 → Evaluated as GPL-2.0 with the Classpath exception ``` When a package uses an `OR` expression, CybeDefend assumes you will choose the most permissive option, resulting in a lower effective risk. *** ## License Summary Dashboard The license summary provides aggregated statistics for all SCA packages in a project: * **Total packages** scanned and how many have detected licenses * **Breakdown by category**: count of Permissive, Weak Copyleft, Strong Copyleft, and Unknown packages * **Ignored packages**: packages you have explicitly excluded from license analysis * **Per-license detail**: each individual SPDX license with its category, risk level, and package count You can filter results by **branch** and **package type** (npm, pip, maven, etc.) to focus on specific ecosystems. *** ## Managing Licenses ### Viewing Packages by License Click on any license in the summary to see all packages using that license. For each package, you can see: * Package name and version * Ecosystem (npm, pip, maven, go, etc.) * Whether it is a transitive or direct dependency * Whether it is a dev dependency * Current ignore status ### Assigning a License Manually When a package has no detected license (categorized as **Unknown**), you can manually assign an SPDX license ID: Go to the license summary and click on the **Unknown** category to see unidentified packages. Find the package you want to update. Use the license assignment dropdown to select the correct SPDX identifier (e.g., `MIT`, `Apache-2.0`). ### Ignoring a Package If a package is irrelevant to your license compliance analysis (e.g., internal tooling, test-only dependencies), you can toggle the **ignore** flag. Ignored packages are excluded from the license summary counts but remain visible in the detail view. *** ## Organization-Level Configuration ### Customizing License Classifications Each organization can override the default risk classification for any SPDX license: Navigate to **Settings → Licenses** in your organization. Use the search bar and category filters to find the license you want to modify. Select a new category (Permissive, Weak Copyleft, Strong Copyleft, or Unknown) for the license. Your overrides are saved and applied immediately to all projects in the organization. Changing a license classification affects **all projects** in the organization. Coordinate with your legal and security teams before modifying classifications. ### Adding Custom Licenses If your project uses a license that is not in CybeDefend's built-in database, you can add it as a custom entry with your chosen classification. ### Resetting Overrides You can reset all organization overrides to return to CybeDefend's default classifications. This action removes all custom classifications and cannot be undone. *** ## Supported Ecosystems License detection is available for the following package ecosystems: * **npm / Yarn / pnpm / Bun / Deno** (JavaScript/TypeScript) * **pip / Poetry / Pipenv** (Python) * **Maven / Gradle** (Java, Kotlin, Scala) * **Go modules** * **NuGet** (.NET) * **Composer** (PHP) * **Cargo** (Rust) * **CocoaPods / Swift PM** (iOS) * **Pub** (Dart/Flutter) * **Hex** (Elixir/Erlang) * **RubyGems** (Ruby) * **Conan** (C/C++) * **Clojars** (Clojure) * **GitHub Actions** *** ## Best Practices Packages with unknown licenses represent the highest uncertainty. Prioritize identifying and manually assigning licenses to these packages. Work with your legal team to determine which license categories are acceptable for your use case. Override CybeDefend's defaults if your organization has stricter or more lenient requirements. Different ecosystems may have different license norms. Use the package type filter to analyze npm, pip, maven, and other ecosystems independently. Mark internal or first-party packages as ignored to keep your license summary focused on third-party dependencies. Use the [Policy Management](/latest/plateform-overview/key-features/policy-management) feature to create automated rules that block builds containing packages with unacceptable licenses. *** **Related:** [API Reference - SCA Licenses](/latest/api-reference/introduction) · [Managing Vulnerabilities](/latest/managing-vulnerabilities/project-vulnerability-list) · [Policy Management](/latest/plateform-overview/key-features/policy-management) # Cybe MCP Server Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/mcp-server-integration The flagship CybeDefend feature. Connect your AI coding agent (Claude Code, Cursor, Copilot, Windsurf and others) to your CybeDefend tenant in one click. 18 typed tools over the Model Context Protocol, OAuth-discovered, browser-only sign-in. No API key, no local proxy. **Cybe MCP is the flagship feature of CybeDefend.** A single MCP server that any modern AI coding assistant can connect to in one click and use as its security backend: fetching findings, driving the status lifecycle, and pulling project-specific business-logic context before generating code. *** ## What Cybe MCP gives your agent | Surface | What the agent can do | | ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Read every finding** | List + drill into SAST, SCA, IaC, CI/CD, Secrets and Container findings, with file paths, line numbers, snippets, package trees and remediation hints. | | **Drive the lifecycle** | Move a finding through one of four statuses (`to_verify`, `confirmed`, `resolved`, `ignored`). Set priority, attach a comment. Each action lands in the audit trail. | | **Find similar issues** | One call returns the cluster of look-alike findings, so the agent can act on a class of false-positives or fix a pattern in one batch. | | **Pull business-logic context** | Before writing a payment endpoint, an auth flow or an export job, the agent calls `get_business_logic_context` and Security Champion returns the tenant-specific rules mined from your repo. The agent inlines them into its system prompt and writes secure code from the first line. | **18 typed tools, all wired to your CybeDefend Gateway**, all gated by your existing Permify scopes. A user's per-project permissions are authoritative; the MCP enforces nothing of its own. *** ## Why it matters Most AI-in-AppSec tooling on the market today is a bolt-on: a panel that surfaces findings inside a single IDE. CybeDefend's MCP server flips the model. Instead of pushing data into one IDE, we publish a typed protocol that every modern AI coding assistant already speaks (Claude Code, Cursor, VS Code Copilot Chat, Windsurf, Continue, Cline, Zed, Claude Desktop). The agent the developer chose stays in charge; CybeDefend becomes its security backend. That single decision unlocks the rest of the platform: * **Inline fixes.** The agent applies the remediation in the same loop where it's writing code. No copy-paste, no second tool window. * **Triage from chat.** Tell the agent "mark every SQLi in `/api/users` as resolved, with a comment pointing to the parameterised query helper". One prompt, two tool calls (`get_similar_vulnerabilities` + `update_vulnerability`), audit trail intact. * **Secure-by-default generation.** Business-logic context flows from your codebase to the agent before it generates the next line. The agent doesn't have to guess your tenant scope, refund cap, idempotency convention or audit pattern. *** ## Getting connected CybeDefend ships **two regional MCP endpoints**, isolated per region: `https://mcp-eu.cybedefend.com/mcp` Backed by the EU CybeDefend region (Scaleway, Paris). GDPR / NIS2 / DORA-aligned. `https://mcp-us.cybedefend.com/mcp` Backed by the US CybeDefend region (Google Cloud). Controls aligned with SOC 2, Type II audit in progress. You point your AI assistant at the URL of the region your CybeDefend tenant lives in, and the assistant handles the rest. Authentication is **OAuth 2.1 with Dynamic Client Registration** (RFC 7591). The MCP client opens a browser tab, you sign in to CybeDefend the same way you sign in to the dashboard, the assistant receives a Bearer JWT, and you're connected. **No API key to manage. No PAT to rotate. No local proxy to run.** Register the MCP plus the hook layer for Claude Code, Cursor, Codex, Windsurf and Copilot in a single `npx` install. Add the MCP URL to any client by hand — the full how-to in **Agent & AI Integration → Cybe MCP**. *** ## What the agent loop looks like A single user prompt ("Add an endpoint to update user profile") produces this exchange under the hood, end-to-end through Cybe MCP: ```text theme={null} $ user: "Add an endpoint to update user profile" ↳ claude.thinking… ↳ cybe.mcp · context.fetch · 156 files indexed ↳ cybe.mcp · graph.walk · auth.mw → users.repo ↳ cybe.mcp · rules.inject · tenant-scope, zod, audit, pii ↳ claude · PATCH /users/:id (src/api/users.ts:42) ↳ claude · requireOwner middleware enforced ↳ claude · zod schema applied (input + output) ↳ claude · audit.log(actor, "users.update") ↳ cybe.mcp · scan.run · checking diff ↳ cybe.mcp · SQLi caught at users.ts:48 ↳ cybe.mcp · fix.apply · parameterised query ↳ cybe.mcp · scan.rerun · diff is clean ✓ 0 vulns · 0 violations · 4 rules met · ship · no human review needed ``` The MCP layer is everything between the user prompt and the green check. *** ## Privacy, isolation and audit trail * **Region pinning.** EU MCP traffic stays on EU infrastructure (Scaleway, Paris). US MCP traffic stays on Google Cloud (US). The two regions are independent CybeDefend tenants. They do not share storage, identity or audit trail. * **No data crosses to a third-party LLM.** CybeDefend operates its own AI inference layer using open-weight Mistral models self-hosted on Scaleway. We do **not** call Anthropic, OpenAI or Google AI APIs. When *you* connect Claude Code or Cursor to our MCP, that agent runs on the agent vendor's infrastructure under your contract with that vendor; CybeDefend's role is only to answer the agent's tool calls. * **No code is stored at the MCP layer.** mcp-service is a thin transport in front of the CybeDefend Gateway. Every tool call is a REST request, the Gateway answers under your existing Permify scope, the response streams back to the agent. Nothing persists at rest in the MCP server. * **Every action is auditable.** Read-only tool calls (`list_…`, `get_…`) and write tool calls (`update_vulnerability`) are logged to your CybeDefend audit trail with the user identity that signed the OAuth handshake and the timestamp of the call. *** ## Where it slots in the platform Concrete setup snippets for Claude Code, Claude Desktop, Cursor, VS Code Copilot Chat, Windsurf, Continue, Zed and any other MCP client. The same toolset, surfaced inside the CybeDefend dashboard with cross-project posture and human-in-the-loop write actions. The agent behind `get_business_logic_context`. Crawls your repo, builds the knowledge graph, returns project-specific rules. The reachability + business-context engine that explains *why* a finding is exploitable. Same data the MCP serves to the agent. EU + US isolated regions, the same model that backs the two regional MCP endpoints. # Policy Management Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/policy-management Define security policies as code and enforce compliance across your organization ## Overview The **Policy Management** feature provides a **Policy as Code** approach to security governance. Define your security requirements in YAML or JSON, and CybeDefend will automatically evaluate every scan against your policies. Organization → Team → Project hierarchy ensures policies cascade appropriately Version-controlled YAML/JSON policies that integrate with your GitOps workflow Non-blocking BullMQ-based worker for fast policy evaluation Full audit trail and compliance history for governance reporting *** ## Key Features ### Policy Hierarchy Policies are applied in a hierarchical manner, ensuring organizational standards cannot be bypassed: ``` Organization Policy (highest priority) ↓ Team Policy ↓ Project Policy (lowest priority) ``` A policy at a higher level **cannot be disabled** by a policy at a lower level. Lower-level policies can only **add stricter rules**. ### Automatic Vulnerability Filtering During policy evaluation, certain vulnerabilities are automatically ignored to focus on active security risks: | Status | Description | | --------------------------- | ---------------------------------------------------------- | | `resolved` / `fixed` | Already fixed in the source code | | `ignored` / `accepted_risk` | Risks that have been formally accepted by the organization | *** ## Policy Configuration Policies are defined in YAML format with complete metadata. Here's a full example: ```yaml theme={null} version: '1.0' name: 'Production Security Policy' description: 'Strict security policy for production deployments' scope: PROJECT # ORGANIZATION | TEAM | PROJECT priority: 10 # 1-100 (lower = higher priority) enabled: true # For PROJECT scope - specify target projects projectIds: - 550e8400-e29b-41d4-a716-446655440001 rules: - name: 'Block critical vulnerabilities' type: severity operator: eq value: CRITICAL action: block - name: 'Warn on high vulnerabilities' type: severity operator: eq value: HIGH action: warn - name: 'Block high CVSS scores' type: cvss_score operator: gt value: 9.0 action: block # Optional exclusions (max 30) exclusions: - pattern: 'test/**' reason: 'Test files are not deployed to production' - pattern: '**/vendor/**' reason: 'Third-party code - tracked separately' expirationDate: '2026-06-30T00:00:00Z' ``` Policies require **1-15 rules** and support a **maximum of 30 exclusions**. *** ## Rule Types | Type | Description | Valid Values | | ------------------------ | ------------------------------- | --------------------------------------------------- | | `severity` | Vulnerability severity level | `critical`, `high`, `medium`, `low`, `info` | | `cvss_score` | CVSS score (0-10) | Numeric value (e.g., `7.5`, `9.0`) | | `cwe_check` | CWE identifier | String (e.g., `CWE-89`, `CWE-79`) | | `owasp_category` | OWASP Top 10 category | String (e.g., `A01:2021`, `A03:2021`) | | `scanner_type` | Type of scanner | `sast`, `secret`, `sca`, `container`, `iac`, `cicd` | | `vulnerability_age_days` | Days since detection | Numeric value | | `is_new_vulnerability` | Whether vulnerability is new | Boolean (`true`/`false`) | | `branch` | Git branch name (supports glob) | String (e.g., `main`, `feature/*`) | | `composite_and` | Combine rules with AND logic | Array of sub-rules | | `composite_or` | Combine rules with OR logic | Array of sub-rules | *** ## Operators | Operator | Description | Example | | -------- | --------------------- | --------------------------------- | | `eq` | Equals (exact match) | `severity eq critical` | | `neq` | Not equals | `severity neq info` | | `gt` | Greater than | `cvss_score gt 7.0` | | `lt` | Less than | `vulnerability_age_days lt 30` | | `gte` | Greater than or equal | `cvss_score gte 9.0` | | `lte` | Less than or equal | `vulnerability_age_days lte 7` | | `in` | In list | `severity in [critical, high]` | | `not_in` | Not in list | `cwe_check not_in [CWE-1, CWE-2]` | *** ## Actions | Action | Description | CI/CD Exit Code | | ------- | --------------------------------------------- | --------------- | | `block` | Blocks the pipeline, creates violation record | `1` | | `warn` | Creates violation record, doesn't block | `0` | *** ## Composite Rules Use composite rules to combine multiple conditions: ### AND Logic (All conditions must match) ```yaml theme={null} - name: 'Block Critical on Main Branch' type: composite_and action: block criteria: - type: severity operator: eq value: CRITICAL - type: branch operator: eq value: main ``` ### OR Logic (Any condition can match) ```yaml theme={null} - name: 'Block dangerous patterns' type: composite_or action: block criteria: - type: cvss_score operator: gt value: 9.0 - type: cwe_check operator: in value: ['CWE-89', 'CWE-78', 'CWE-94'] ``` *** ## Exclusions Exclusions allow you to skip policy evaluation for specific files or patterns: ```yaml theme={null} exclusions: - pattern: 'test/**' reason: 'Test files are not deployed' # Required - pattern: '**/node_modules/**' reason: 'Dependencies tracked via SCA' expirationDate: '2026-12-31T00:00:00Z' # Optional expiration ``` **Pattern matching uses glob patterns:** * `**` matches any number of directories * `*` matches any characters except `/` * `?` matches a single character Always set expiration dates on exclusions to prevent permanent security gaps. *** ## Policy Examples ### Branch-Based Policy (Production Protection) ```yaml theme={null} version: '1.0' name: 'Production Branch Policy' description: 'Strict policy for production branches' scope: PROJECT priority: 5 enabled: true projectIds: - 550e8400-e29b-41d4-a716-446655440001 rules: # Block ALL high/critical on main and release branches - name: 'Block critical on production branches' type: composite_and action: block criteria: - type: branch operator: in value: ['main', 'master', 'release-*', 'release/*'] - type: severity operator: in value: [CRITICAL, HIGH] # Only warn on feature branches - name: 'Warn on feature branches' type: composite_and action: warn criteria: - type: branch operator: in value: ['feature/*', 'feat/*', 'develop'] - type: severity operator: eq value: CRITICAL # Block secrets on any branch - name: 'Always block exposed secrets' type: composite_and action: block criteria: - type: scanner_type operator: eq value: SECRET - type: severity operator: in value: [CRITICAL, HIGH] ``` ### Multi-Scanner Organization Policy ```yaml theme={null} version: '1.0' name: 'Organization Security Policy' description: 'Enterprise-wide policy for all scanners' scope: ORGANIZATION priority: 1 enabled: true rules: # SAST Rules - name: 'SAST - Block critical vulnerabilities' type: composite_and action: block criteria: - type: scanner_type operator: eq value: sast - type: severity operator: eq value: CRITICAL # Secret Detection - name: 'Secrets - Block exposed secrets' type: composite_and action: block criteria: - type: scanner_type operator: eq value: secret - type: severity operator: in value: ['CRITICAL', 'HIGH'] # Container Scanning - name: 'Container - Block high CVSS' type: composite_and action: block criteria: - type: scanner_type operator: eq value: container - type: cvss_score operator: gt value: 8.0 # OWASP Categories - name: 'OWASP A01 - Broken Access Control' type: owasp_category operator: eq value: 'A01:2021' action: block exclusions: - pattern: 'test/**' reason: 'Test files' - pattern: 'docs/**' reason: 'Documentation' ``` *** ## CI/CD Integration ### GitHub Actions Use the official CybeDefend GitHub Action with policy evaluation enabled: ```yaml theme={null} name: CybeDefend Security Scan with Policy Enforcement on: push: branches: - main pull_request: branches: - main jobs: scan: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Run CybeDefend Security Scan uses: CybeDefend/cybedefend-action@v1 with: token: ${{ secrets.CYBEDEFEND_PAT }} project_id: ${{ secrets.CYBEDEFEND_PROJECT_ID }} branch: ${{ github.head_ref || github.ref_name }} # Policy evaluation options policy_check: true policy_timeout: 300 show_policy_vulns: true show_all_policy_vulns: false ``` #### Policy Evaluation Options | Option | Default | Description | | ----------------------- | ------- | ------------------------------------------- | | `policy_check` | `true` | Enable/disable policy evaluation after scan | | `policy_timeout` | `300` | Timeout in seconds for policy evaluation | | `show_policy_vulns` | `true` | Show affected vulnerabilities in output | | `show_all_policy_vulns` | `false` | Show all vulnerabilities (no limit) | ### GitLab CI Use the CybeDefend CLI directly with policy evaluation: ```yaml theme={null} stages: - security cybedefend-scan: stage: security image: ghcr.io/cybedefend/cybedefend-cli:v1.0.9 variables: CYBEDEFEND_PAT: $CYBEDEFEND_PAT CYBEDEFEND_PROJECT_ID: $CYBEDEFEND_PROJECT_ID script: # Run scan with policy evaluation (enabled by default) - cybedefend scan --dir . --branch $CI_COMMIT_REF_NAME --ci rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_COMMIT_BRANCH == "main" ``` #### CLI Policy Flags | Flag | Default | Description | | ------------------------- | ------- | -------------------------------------- | | `--policy-check` | `true` | Enable/disable policy evaluation | | `--policy-timeout` | `300` | Timeout in seconds for evaluation | | `--show-policy-vulns` | `true` | Show affected vulnerabilities | | `--show-all-policy-vulns` | `false` | Show all vulnerabilities without limit | #### Example Output ``` ✓ Scan completed successfully ℹ Checking policy evaluation status... ✓ Policy evaluation completed ℹ Policy violations found: 2 BLOCK, 1 WARN ⛔ BLOCK Actions: ✗ No Critical Vulnerabilities (BLOCK) Affected: 3 vulnerabilities → [CRITICAL] SQL Injection - src/api/users.ts (L45-48) https://us.cybedefend.com/project/xxx/sast/issue/yyy → [CRITICAL] Path Traversal - src/utils/file.ts (L12) https://us.cybedefend.com/project/xxx/sast/issue/zzz ⚠️ WARN Actions: ⚠ Dependency Check (WARN) Affected: 1 vulnerability → [HIGH] Prototype Pollution - lodash@4.17.15 https://us.cybedefend.com/project/xxx/sca/issue/aaa ✓ Acknowledged Violations (not blocking): ⚠ No High Vulnerabilities (BLOCK) ✓ Acknowledged: Risk accepted for legacy code ``` If any policy has a **BLOCK** action with violations, the CLI exits with code `1`, failing the pipeline. **WARN** actions are informational only and don't affect the exit code. *** ## Managing Violations When a policy violation occurs, you have two options to resolve it: Change the vulnerability status from "open" to "ignored" with a justification. The vulnerability will be excluded from future policy evaluations. Resolve the security issue directly in your source code and re-run the scan. The vulnerability will be marked as "resolved" and excluded from policy evaluations. Both approaches create an audit trail. Changing status to "ignored" requires a comment explaining the risk acceptance decision. *** ## Best Practices When rolling out policies, start with `action: warn` to understand the impact before switching to `action: block`. Always set expiration dates on exclusions to prevent permanent security gaps: ```yaml theme={null} exclusions: - pattern: 'src/legacy/**' reason: 'Technical debt - scheduled for Q2 refactor' expirationDate: '2026-06-30T00:00:00Z' ``` * **Organization level**: Global security requirements (e.g., no exposed secrets) * **Team level**: Team-specific standards (e.g., frontend vs backend rules) * **Project level**: Project-specific exclusions only Store policy YAML files in your repository: ``` repo/ ├── .cybedefend/ │ ├── policies/ │ │ ├── sast-policy.yaml │ │ ├── sca-policy.yaml │ │ └── secret-policy.yaml │ └── README.md ``` *** **Related:** [API Reference - Policy Management](/latest/api-reference/introduction) · [Managing Vulnerabilities](/latest/managing-vulnerabilities/project-vulnerability-list) · [CI/CD Integrations](/latest/code-scanning/ci-cd-integrations/github-action-setup) # Priority Scoring Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/priority-scoring Composite priority that blends CVSS 4.0, EPSS, exploitability and business context into a single 0–100 score ## Overview Severity alone does not tell you what to fix first. CybeDefend computes a **Priority Score** for every detection — a weighted blend of four orthogonal signals — and exposes both the final score and the **per-signal contributions** so triage decisions are fully transparent. CVSS 4.0 environmental score · EPSS percentile · Exploitability · Business context A single user-facing number (`priorityScore`) sortable across all scanners Mapped into Critical Urgent · Urgent · Normal · Low · Very Low buckets Each detection exposes the exact contribution of every signal *** ## The formula The internal composite score is a weighted sum of four normalized signals, each in `[0, 1]`: ``` compositeScore = w1·CVSS4_norm + w2·EPSS_percentile + w3·Exploitability + w4·Context ``` The user-facing **`priorityScore`** is `compositeScore × 100` (rounded to one decimal, bounded to `[0, 100]`). ### Default weights | Weight | Signal | Default | | ------ | ---------------------------------------------------- | -------- | | `w1` | CVSS 4.0 (environmental score / 10) | **0.35** | | `w2` | EPSS percentile (probability of exploit in the wild) | **0.25** | | `w3` | Exploitability (verdict-driven) | **0.25** | | `w4` | Context (business criticality + data classification) | **0.15** | Weights are configured at the platform level (`PRIORITY_WEIGHT_*` env vars) and must always sum to `1.0`. When EPSS is unknown for a detection, `w2` is dropped and `w1 / w3 / w4` are renormalized so the score remains comparable. *** ## Signals in detail ### 1. CVSS 4.0 (environmental) The CVSS 4.0 **environmental** score is preferred; the base score is used as a fallback, and finally a severity-default if no vector is available. The score is divided by 10 to land in `[0, 1]`. See [CVSS 4.0 Scoring](/latest/plateform-overview/key-features/cvss-4-scoring) for how that score is built. ### 2. EPSS percentile EPSS (Exploit Prediction Scoring System) percentile estimates the probability that a vulnerability will be exploited in the next 30 days, relative to all other CVEs. CybeDefend ingests EPSS for SCA and Container findings where a CVE identifier is available. ### 3. Exploitability A qualitative verdict mapped to a numeric score: | Verdict | Score | Meaning | | -------------------- | ----- | --------------------------------------------------- | | `not_exploitable` | 0.05 | Demonstrated false positive / unreachable code path | | `theoretical` | 0.35 | Default before deeper analysis | | `proven` | 0.75 | Confirmed exploitable in this codebase | | `actively_exploited` | 0.95 | Known to be exploited in the wild | For SCA detections, when **Exploitable Path** marks a dependency as **unused**, the exploitability contribution is forced to `0` — even before the verdict pipeline runs. The verdict can come from three sources, persisted in `exploitabilitySource`: * **`static`** — heuristics on file path (test / vendor / example code is demoted) and reachability. * **`agent`** — Cybe Analysis LLM verdict with rationale. * **`manual`** — overridden by a user. ### 4. Context The Context signal averages two project-level inputs: | Business Criticality | Modifier | Data Classification | Modifier | | -------------------- | ------------- | ------------------- | ------------- | | Mission Critical | 1.0 | Regulated | 1.0 | | High | 0.7 | Confidential | 0.7 | | Medium | 0.4 | Internal | 0.4 | | Low | 0.2 | Public | 0.2 | | Unspecified | 0.5 (neutral) | Unspecified | 0.5 (neutral) | `Context = (BusinessCriticality + DataClassification) / 2` *** ## Priority levels The composite score is mapped to a discrete priority level used by filters, dashboards, and policy rules: | Composite Score | Priority | | --------------- | ------------------- | | ≥ 0.80 | **Critical Urgent** | | ≥ 0.60 | **Urgent** | | ≥ 0.40 | **Normal** | | ≥ 0.20 | **Low** | | \< 0.20 | **Very Low** | Thresholds are configurable platform-wide (`PRIORITY_THRESHOLD_*` env vars). *** ## Manual override A user with the right permission can pin a priority manually on a detection. When set: * The composite score is **no longer recalculated** automatically. * The detection is flagged with `priorityManualOverride: true` and `isManualOverride: true` in the decomposition response. * Subsequent scans, Security Context changes, or EPSS refreshes will not touch the priority until the override is cleared. *** ## Inspect the calculation Every detection exposes a **priority decomposition** endpoint that returns the exact composition of its score: ```http theme={null} GET /project/{projectId}/results/{type}/{vulnerabilityId}/priority-decomposition ``` Response (abbreviated): ```json theme={null} { "decomposition": { "priority": "urgent", "compositeScore": 0.674, "cvss4Contribution": 0.287, "epssContribution": 0.142, "exploitContribution": 0.188, "contextContribution": 0.057, "w1": 0.35, "w2": 0.25, "w3": 0.25, "w4": 0.15, "isManualOverride": false } } ``` Use the decomposition to explain to a developer **why** a vulnerability landed at a given priority — particularly useful when the Security Context or exploitability verdict moves a finding up or down. *** ## How it impacts your workflow * **Sorting** — the Vulnerability List can be sorted by Priority Score across all scanners. * **Filtering** — filter by priority level (Critical Urgent, Urgent, Normal, Low, Very Low). * **Top Vulnerabilities widget** — see the [Top Vulnerabilities](/latest/managing-vulnerabilities/top-vulnerabilities) page. * **Policies** — Policy Management can gate merges/deploys on priority-level rules. * **Reports** — emailed reports group findings by priority instead of raw severity. *** **Related:** [CVSS 4.0 Scoring](/latest/plateform-overview/key-features/cvss-4-scoring) · [Exploitable Path](/latest/plateform-overview/key-features/exploitable-path) · [Policy Management](/latest/plateform-overview/key-features/policy-management) · [Top Vulnerabilities](/latest/managing-vulnerabilities/top-vulnerabilities) # Advanced Access Control with ReBAC Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/rebac-management Learn how CybeDefend leverages Role-Based and Relationship-Based Access Control to provide granular security within your organization. CybeDefend uses a **dual approach** to access control: 1. **RBAC** (Role-Based Access Control) assigns predefined roles, such as Admin or Viewer, to users within specific teams or projects. 2. **ReBAC** (Relationship-Based Access Control) extends this model by considering relationships—like membership in multiple organizations or teams, each with unique roles. RBAC & ReBAC Management ReBAC goes beyond basic role checks by examining the user’s relationship with an entity, allowing more flexible and fine-grained access rules. *** ## What is ReBAC? **Relationship-Based Access Control (ReBAC)** defines permissions based on the **relationship** between a user and an entity (e.g., “Alice is an Admin in Team1,” or “Bob is a Viewer in OrgA”). This approach is ideal for complex organizations that require nuanced distinctions between user roles and multiple groups or teams. ### Key Advantages of ReBAC * **Granular Permissions**: Distinguish between different teams, projects, or business units with dynamic relationships. * **Scalable Model**: As new users, teams, or roles are added, ReBAC easily adapts without significant refactoring. * **Flexible Hierarchies**: Handle nested relationships (e.g., sub-teams) without needing to define every possible role combination in advance. *** ## Open-Source ReBAC: react-rebac CybeDefend has also developed an **open-source** library called [**react-rebac**](https://github.com/CybeDefend/react-rebac) to simplify **relationship-based access control** in **React** applications. This library: * **Manages** user relationships with multiple entities (e.g., organizations, teams). * **Conditionally Renders** content based on user roles or relationships. * **Supports** single-entity mode and multi-entity mode (checking if the user has access to *any* of several entities). *** **Related:** [Assigning Roles](/latest/get-started/account-setup/assigning-roles) · [Managing Access](/latest/get-started/account-setup/managing-access-org-teams) · [react-rebac on GitHub](https://github.com/CybeDefend/react-rebac) # Sovereign Data Storage Source: https://docs.cybedefend.com/latest/plateform-overview/key-features/sovereign-data-storage Choose where your data is stored with sovereign cloud options in France and Europe for GDPR compliance, or opt for global cloud providers. CybeDefend offers **sovereign data storage options** that allow organizations to maintain **full control** over their data location and compliance requirements. You can choose between: * **European Cloud**: hosted on **SecNumCloud-qualified infrastructure (Scaleway)**, compliant with GDPR and European data protection law. Data is stored exclusively in Europe. * **US Cloud**: hosted on **Google Cloud**, for organizations requiring low latency in North America. Data is stored in the United States. SecNumCloud is a qualification awarded by the French ANSSI to a **hosting provider**, for a specific set of its services. It qualifies Scaleway, the infrastructure CybeDefend runs on in the EU region. CybeDefend's own certification status is on our [Security page](https://cybedefend.com/en/legal/security). Select US Cloud ## Storage Options ### European Cloud (SecNumCloud-qualified infrastructure) * **Location**: Data stored exclusively in Europe * **Compliance**: GDPR. Hosted on Scaleway infrastructure qualified SecNumCloud by ANSSI * **Sovereignty**: Data never leaves European territory * **Transparency**: Complete control and visibility over data location ### US Cloud * **Location**: Data stored in the United States * **Compliance**: Meets US regulatory standards * **Performance**: Optimized for low latency in North America ## How It Works 1. **Organization Setup**: Choose your preferred data storage region (Europe or US) during organization creation or in your settings. 2. **Data Localization**: All scan results, vulnerability data, and project information are stored exclusively in your selected region. 3. **Compliance Assurance**: Your choice ensures compliance with GDPR (Europe) or US standards. 4. **Transparency**: Full visibility into where your data is stored and managed. ## Benefits for Organizations * **Regulatory Compliance**: Meet GDPR and SecNumCloud requirements in Europe, or US standards in North America. * **Data Sovereignty**: Maintain complete control over data location—your data never leaves your chosen region. * **Transparent Governance**: Full visibility into where your data is stored and processed. * **Flexible Choice**: Switch between regions as your business or compliance needs change. *** **Related:** [Create Account & Select Region](/latest/get-started/account-setup/create-account-organization) · [LLM Usage & Privacy](/latest/plateform-overview/security-privacy/llm-usage-privacy) # AI Usage & Entitlements Source: https://docs.cybedefend.com/latest/plateform-overview/plan-&-pricing/ai-usage-tracking Monitor your Cybe AI features usage and track available quotas. Track your organization's consumption of Cybe AI features in real-time. AI Usage & Entitlements Dashboard *** ## How Credits Work ### Organization-Level Pooling Credits are shared across your entire organization: * **No per-user limits** — credits pool at organization level * **Flexible distribution** — one developer can use more than another * **Total matters** — only total organization consumption counts **Example** — 2 seats × 60 credits = 120 total credits: * Developer A: 80 credits used * Developer B: 20 credits used * **Total**: 100/120 credits (20 remaining) *** ## Reset & Expiration * **Quotas reset** on your billing cycle date * **Unused credits expire** at each reset * **Add-ons expire** at the end of monthly billing periods *** ## Need More Credits? Purchase add-on packs at [Manage Billing](/latest/plateform-overview/plan-&-pricing/manage-billing-subscription) when approaching quota limits. # Pricing Model Source: https://docs.cybedefend.com/latest/plateform-overview/plan-&-pricing/free-plan Understand CybeDefend's flexible pricing model with organization-wide credits and on-demand add-ons. CybeDefend offers a **flexible, usage-based pricing model** tailored to your organization's needs. Our subscriptions provide a package of **Cybe AI agent requests** and platform features, with the ability to add more credits as needed. *** ## How Our Pricing Works ### Organization-Wide Credit Pool CybeDefend's pricing is designed around **organization-level credit allocation**, not individual users: * **Credits are shared across your entire organization** * **No per-user tracking** — one developer can use more credits than another without penalty * **Flexible usage** — credits are pooled for all team members to draw from as needed This means if one developer uses 1,000 Cybe AI requests and another uses 100, it doesn't matter—both draw from the same organizational credit pool. ### Add-On Credits When your organization needs more Cybe AI requests: * **Purchase additional credit packages** on-demand * **No subscription changes required** — simply add credits as needed * **Credits remain at the organization level** — shared by all members Add-ons provide flexibility to scale your AI-powered analysis capabilities without upgrading your entire subscription. *** **Related:** [Create Account](/latest/get-started/account-setup/create-account-organization) · [Manage Billing](/latest/plateform-overview/plan-&-pricing/manage-billing-subscription) · [AI Usage Tracking](/latest/plateform-overview/plan-&-pricing/ai-usage-tracking) # Manage Billing & Subscription Source: https://docs.cybedefend.com/latest/plateform-overview/plan-&-pricing/manage-billing-subscription Configure your subscription, manage seats, add credits, and update billing information. The **Billing & Subscription** page allows you to manage your CybeDefend plan, adjust the number of seats, purchase add-on credit packs, and maintain accurate billing information for invoicing. *** ## Subscription Details Monitor and adjust your current subscription plan to match your organization's needs. Subscription Details ### Key Information * **Plan Type**: View your current subscription plan (Trial, Pro, Enterprise, etc.) * **Seats**: Number of active users in your organization * **Trial Period**: If applicable, see when your trial ends * **Billing Cycle**: View current period end and next reset date ### Monthly Usage Limits Your subscription includes per-seat limits for Cybe AI features: * **Cybe Security Champion** — AI-powered vulnerability prioritization (per seat) * **Cybe AutoFix** — Automated vulnerability remediation suggestions (per seat) * **Cybe Analysis** — Deep code analysis and insights (per seat) * **Project Limit** — Unlimited projects across your organization Click **Edit** to adjust the number of seats in your organization. Your subscription will be prorated automatically. Usage limits are **per seat**, but credits are pooled at the organization level. If one developer exceeds their allocation while another uses less, the organization's total remains balanced. *** ## Billing Information Maintain accurate billing details to ensure proper invoicing and VAT compliance. Billing Information ### General Information * **Customer Type**: Individual or Company * **First Name & Last Name**: Primary billing contact * **Country**: Required for tax and VAT calculations ### Billing Address * **Address Line 1 & 2**: Complete street address * **City & Postal Code**: Location details * **Region/State**: If applicable Ensure your billing information is accurate and up-to-date. This information appears on all invoices and is used for VAT/tax calculations. Click **Edit** in the top-right corner to update your billing information at any time. *** ## Manage Add-ons Purchase additional credit packs to extend your Cybe AI capabilities beyond your base subscription limits. Manage Add-ons ### Available Add-on Packs CybeDefend offers three types of credit packs: 1. **Cybe Security Champion Pack**\ Extra Cybe Security Champion conversations\ Pack size: 25 total for organization 2. **Cybe AutoFix Pack**\ Extra Cybe AutoFix operations\ Pack size: 25 total for organization 3. **Cybe Analysis Pack**\ Extra Cybe Analysis operations\ Pack size: 25 total for organization ### How to Purchase Add-ons 1. Click **Add** on the desired credit pack 2. Select the number of packs you need 3. Choose your billing cycle (Monthly or Yearly) 4. Review pricing and confirm Add-on Purchase Modal ### Add-on Pricing Add-ons are available with flexible billing options: * **Monthly billing**: Pay per month for ongoing credit access * **Yearly billing**: Save with annual pre-payment (typically includes discount) All add-on credits are pooled at the **organization level**. Any team member can use credits from any pack, regardless of who initiated the purchase. Add-ons are prorated based on when you purchase them during your billing cycle. Unused credits from monthly packs expire at the end of each billing period. # LLM Usage & Privacy Source: https://docs.cybedefend.com/latest/plateform-overview/security-privacy/llm-usage-privacy How CybeDefend uses sovereign LLMs with strict privacy guarantees. CybeDefend leverages advanced Large Language Models (LLMs) to power our AI agents while maintaining the highest standards of data privacy and security. *** ## Our LLM Policy ### Sovereign LLM Infrastructure All LLMs used by CybeDefend are deployed on **sovereign cloud infrastructure** within your chosen region (EU or US). Your code and vulnerability data never leave your selected geographical boundary. ### No Training or Fine-Tuning **CybeDefend has a strict zero-training policy**: Your code, vulnerabilities, and interactions with our AI agents are **never used** for training, fine-tuning, or improving our models. This policy ensures: * **Complete confidentiality**: Your proprietary code remains private * **No data leakage**: Your security findings never contribute to model training * **Compliance**: GDPR compliant today. SOC 2 Type II and ISO 27001 audits in progress, see the [Security page](https://cybedefend.com/en/legal/security) *** ## Data Processing When you use CybeDefend AI features (Cybe Analysis, Cybe AutoFix, Cybe Security Champion): 1. **Your code is parsed** into our proprietary knowledge graph 2. **Queries are sent** to sovereign LLMs within your chosen region 3. **Responses are generated** using your specific codebase context 4. **All data remains** within your regional boundary LLM inference happens in real-time and is not persisted beyond the immediate request/response cycle. ### What the knowledge graph actually holds The graph is what lets the agent apply your own business rules on its next generation. It stores **file paths and a short description of what each file does**. **It does not contain your source code.** You can delete it at any time from the project settings, and disabling the AI features stops it being built. Source code itself is destroyed with its container at the end of the scan, see [Never Stores Your Code](/latest/plateform-overview/security-privacy/never-stores-your-code). *** ## Regional LLM Deployment Inference runs on open-weight models that CybeDefend hosts itself, inside the region you selected. Nothing crosses the regional boundary and no third-party AI API is involved. | Region | Where inference runs | Operated by | | ----------------- | --------------------------- | ------------------------------------------ | | **Europe** | Scaleway, France | CybeDefend, self-hosted open-weight models | | **United States** | Google Cloud, United States | CybeDefend, self-hosted open-weight models | Certifications you may see listed for Scaleway or Google Cloud belong to **those providers** and describe the infrastructure we run on. CybeDefend's own certification status is on our [Security page](https://cybedefend.com/en/legal/security): GDPR compliant today, SOC 2 Type II and ISO 27001 audits in progress. *** ## Your Control You can enable or disable AI features at the project level: * **Cybe Analysis**: Can be toggled in project settings * **Cybe AutoFix**: Requires explicit activation and Git integration * **Cybe Security Champion**: Requires Cybe Analysis to be enabled When AI features are disabled, no code is sent to LLMs. *** **Related:** [Cybe Analysis Configuration](/latest/agent-ai-integration/cybe-analysis-detail) · [Data Storage & Privacy](/latest/plateform-overview/security-privacy/never-stores-your-code) · [Cloud Region Selection](/latest/get-started/account-setup/create-account-organization) # Never Stores Your Code Source: https://docs.cybedefend.com/latest/plateform-overview/security-privacy/never-stores-your-code What CybeDefend receives, what it destroys at the end of the scan, and what it keeps. In short: to scan your repository, CybeDefend has to receive it. We clone it into an isolated container, run the security checks, then destroy the container together with its copy of the code. **We do not keep your source code after the scan.** What we keep is the result: findings, their location, and repository metadata. **Scanning platform and VibeDefend are two different things.** The platform receives your repository when you ask it to scan. **VibeDefend**, the layer that plugs into your AI coding agent, runs on the developer's machine: edits happen locally and only governance metadata comes back. This page describes the platform. ## Temporary Container Approach When you connect your repository to CybeDefend, we create a **fresh container** to clone and analyze your code. This container is isolated and used only for your specific scan. Once the scan is done: * The **container is terminated**. * Any **temporary copies of your code** are destroyed immediately. ## The Process at a Glance CybeDefend securely clones your repository into an isolated container, performs a vulnerability analysis, extracts only security findings, and completely wipes the container and code once the scan is complete. Secure Container Scanning ## What we keep, precisely | What | Kept after the scan? | | ----------------------------------------------------------------- | ------------------------------------------------------------ | | Your source code | **No.** Destroyed with the container at the end of the scan. | | Findings, severity, file and line of each finding | Yes. That is the product. | | Repository metadata (names, branches, identifiers) | Yes. | | Business-logic knowledge graph, **if you enable the AI features** | Yes. See below. | ### The business-logic knowledge graph If you enable the AI features that learn your repository's own conventions, we build and keep a knowledge graph of your codebase. This is what lets the agent apply your business rules the next time it writes code. The graph holds **file paths and a short description of what each file does**. **It does not contain your source code.** * You can **delete it at any time** from the project settings. * **Disabling the AI features** stops it being built in the first place, and no code is sent to the models. ### Where the analysis runs Everything above happens inside the region you selected at signup: Scaleway for the EU region, Google Cloud for the US region. AI inference runs on open-weight models we host ourselves, in that same region. No code and no prompt is sent to any third-party AI API, and nothing crosses the regional boundary. See [LLM Usage & Privacy](/latest/plateform-overview/security-privacy/llm-usage-privacy). # Create Security Champion conversation Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ai-agent/create-security-champion-conversation post /project/{projectId}/security-champion/conversation Creates a new Security Champion AI conversation for a specific vulnerability. Returns a conversation ID to use with the streaming endpoint # Delete conversation Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ai-agent/delete-conversation post /project/{projectId}/security-champion/{conversationId}/delete Permanently deletes a Security Champion conversation and all associated messages # Get conversation messages Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ai-agent/get-conversation-messages post /project/{projectId}/security-champion/{conversationId}/messages Retrieves paginated messages from a specific Security Champion conversation # List user conversations Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ai-agent/list-user-conversations post /project/{projectId}/security-champion/conversations/list Retrieves Security Champion conversations for the authenticated user with optional filters and pagination # Start AutoFix workflow Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ai-agent/start-autofix-workflow post /project/{projectId}/autofix Initiates an AI-powered AutoFix workflow to automatically generate a fix for a vulnerability and create a Pull Request or Merge Request # Start Batch AutoFix workflow Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ai-agent/start-batch-autofix-workflow post /project/{projectId}/autofix/batch Initiates an AI-powered AutoFix workflow to automatically generate fixes for multiple vulnerabilities and create a single Pull Request or Merge Request # Stop conversation generation Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ai-agent/stop-conversation-generation post /project/{projectId}/security-champion/{conversationId}/stop Stops the ongoing AI response generation for a specific conversation # Stream Security Champion messages Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ai-agent/stream-security-champion-messages get /project/{projectId}/security-champion/{conversationId}/stream Server-Sent Events (SSE) endpoint for streaming AI responses. Send a message and receive real-time token stream. Use heartbeat mode (no message) to maintain connection # Get all container registry credentials for an organization Source: https://docs.cybedefend.com/latest/api-reference/endpoint/container-registry-credentials/get-all-container-registry-credentials-for-an-organization get /integrations/container-registry/organization/{organizationId}/credentials Returns all container registry credentials for an organization, grouped by provider. **Supported providers:** - **GitHub Container Registry (ghcr.io)** - Uses GitHub App installation (no stored credentials, returns availability status) - **GitLab Container Registry** - Personal/group deploy tokens - **DockerHub** - Personal access tokens - **Azure Container Registry (ACR)** - Service principal credentials - **Google Container Registry (GCR)** - Service account JSON keys - **Amazon ECR** - IAM access keys - **Quay.io** - Robot account credentials - **Harbor** - Robot account credentials - **JFrog Artifactory** - API keys or access tokens This endpoint consolidates all registry credentials into a single response for easier frontend integration. # Get GitHub repositories Source: https://docs.cybedefend.com/latest/api-reference/endpoint/github-integration/get-github-repositories get /organization/{organizationId}/github/repositories Retrieves all accessible GitHub repositories for an organization. Returns repositories from all GitHub installations associated with the organization. # Get GitHub repository branches Source: https://docs.cybedefend.com/latest/api-reference/endpoint/github-integration/get-github-repository-branches get /organization/{organizationId}/github/repositories/{repositoryId}/branches Retrieves all branches for a specific GitHub repository in an organization. Use this to populate branch selection when linking a repository. # Link GitHub repository to project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/github-integration/link-github-repository-to-project post /organization/{organizationId}/project/{projectId}/github/link Creates a link between a GitHub repository and a CybeDefend project for automated scanning. Once linked, the project will receive webhook events from the repository for automated security scans. # Start GitHub repository scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/github-integration/start-github-repository-scan post /project/{projectId}/github/start-scan Triggers an asynchronous security scan on the latest commit of a linked GitHub repository. The scan runs in the background and results can be retrieved via the analysis reporting endpoints. # Unlink GitHub repository from project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/github-integration/unlink-github-repository-from-project delete /organization/{organizationId}/project/{projectId}/github/unlink Removes the link between a GitHub repository and a CybeDefend project. This will stop webhook events and automated scans for this repository. # Get GitLab repositories Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gitlab-integration/get-gitlab-repositories get /integrations/gitlab/organization/{organizationId}/repositories Retrieves all synchronized GitLab repositories for an organization. Returns repositories that the authenticated GitLab user has access to. # Get GitLab repository branches Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gitlab-integration/get-gitlab-repository-branches get /integrations/gitlab/organization/{organizationId}/repositories/{repositoryId}/branches Retrieves all branches for a specific GitLab repository. Use this to populate branch selection when linking a repository. # Link GitLab repository to project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gitlab-integration/link-gitlab-repository-to-project post /integrations/gitlab/organization/{organizationId}/project/{projectId}/link Creates a link between a GitLab repository and a CybeDefend project. Once linked, the project will receive webhook events from the repository for automated security scans. # Start GitLab repository scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gitlab-integration/start-gitlab-repository-scan post /integrations/gitlab/project/{projectId}/start-scan Triggers an asynchronous security scan on the latest commit of a linked GitLab repository. The scan runs in the background and results can be retrieved via the analysis reporting endpoints. # Unlink GitLab repository from project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gitlab-integration/unlink-gitlab-repository-from-project delete /integrations/gitlab/organization/{organizationId}/project/{projectId}/unlink Removes the link between a GitLab repository and a CybeDefend project. This will stop webhook events and automated scans for this repository. # Get integration overview for organization Source: https://docs.cybedefend.com/latest/api-reference/endpoint/integrations/get-integration-overview-for-organization get /organization/{organizationId}/integrations/overview Returns combined status of all integrations including GitHub installation, GitLab connection, and container registry credentials count for the organization. This endpoint consolidates multiple API calls into a single request for better performance. # Create a new security policy Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/create-a-new-security-policy post /organization/{organizationId}/policies # Delete a security policy Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/delete-a-security-policy delete /organization/{organizationId}/policies/{policyId} # Enable or disable a security policy Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/enable-or-disable-a-security-policy put /organization/{organizationId}/policies/{policyId}/toggle Toggle the enabled state of a security policy. For organization-level policies, only one can be active at a time. # Export a policy as YAML file Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/export-a-policy-as-yaml-file get /organization/{organizationId}/policies/{policyId}/yaml # Get a security policy by ID Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/get-a-security-policy-by-id get /organization/{organizationId}/policies/{policyId} # Get compliance history for a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/get-compliance-history-for-a-project get /projects/{projectId}/compliance-history Returns a paginated list of past policy evaluations for the project. # Get compliance result for a scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/get-compliance-result-for-a-scan get /projects/{projectId}/scans/{scanId}/compliance Returns the compliance result from the most recent policy evaluation for this scan. # Get effective policies for a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/get-effective-policies-for-a-project get /projects/{projectId}/effective-policies Returns the list of policies that apply to this project (from organization, team, and project scopes). # Get organization-wide compliance overview for CISO dashboard Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/get-organization-wide-compliance-overview-for-ciso-dashboard get /organization/{organizationId}/compliance-overview Returns a comprehensive overview of all projects within the organization with their compliance status, violation statistics, breakdown by rule type, and trend data for the last 30 days. # Get policy violations for a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/get-policy-violations-for-a-project get /projects/{projectId}/violations # Get policy violations for a scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/get-policy-violations-for-a-scan get /projects/{projectId}/scans/{scanId}/violations # Get the evaluation status for a scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/get-the-evaluation-status-for-a-scan get /projects/{projectId}/scans/{scanId}/evaluation-status Check if a policy evaluation has been triggered for this scan, and if so, what its current status is. Used by the CLI to poll for completion before checking compliance results. # Get violation statistics for a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/get-violation-statistics-for-a-project get /projects/{projectId}/violation-stats # List security policies Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/list-security-policies get /organization/{organizationId}/policies # Update a security policy Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/update-a-security-policy put /organization/{organizationId}/policies/{policyId} # Validate a policy YAML configuration without saving Source: https://docs.cybedefend.com/latest/api-reference/endpoint/policy/validate-a-policy-yaml-configuration-without-saving post /organization/{organizationId}/policies/validate # Analyze SCA vulnerabilities for autofix candidates Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/analyze-sca-vulnerabilities-for-autofix-candidates post /project/{projectId}/results/sca/autofix Analyzes SCA vulnerabilities using DeepFix to find fix candidates. For transitive dependencies, determines which version of the direct dependency will resolve the vulnerable package to a safe version. Returns the dependency path showing the import chain and recommended fixes. # Batch update multiple vulnerabilities Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/batch-update-multiple-vulnerabilities patch /project/{projectId}/results/batch Update status, priority, and/or comment for multiple vulnerabilities at once. Maximum 100 vulnerabilities per request. # Delete a scanned container image from a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/delete-a-scanned-container-image-from-a-project delete /project/{projectId}/results/container/images/{imageId} # Generate a security report for a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/generate-a-security-report-for-a-project get /project/{projectId}/owasp-report/{format} Generate either an SBOM (Software Bill of Materials) report or OWASP Top 10 report in JSON, HTML, or PDF format # Generate aggregated security report for a Team Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/generate-aggregated-security-report-for-a-team get /team/{teamId}/report/{reportType}/{format} Generates a consolidated OWASP Top 10 or CWE Top 25 report for all projects in a team # Generate aggregated security report for an Organization Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/generate-aggregated-security-report-for-an-organization get /organization/{organizationId}/report/{reportType}/{format} Generates a consolidated OWASP Top 10 or CWE Top 25 report for all projects in an organization # Generate CWE Top 25 2024 report for a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/generate-cwe-top-25-2024-report-for-a-project get /project/{projectId}/cwe-report/{format} # Generate report for a manual selection of projects Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/generate-report-for-a-manual-selection-of-projects post /organization/{organizationId}/project/report/batch/{reportType}/{format} Generates a consolidated OWASP Top 10 or CWE Top 25 report for a custom list of projects # Get a container vulnerability by ID Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-a-container-vulnerability-by-id get /project/{projectId}/results/container/{vulnerabilityId} Retrieves detailed information about a specific container vulnerability # Get a vulnerability of a project for CICD Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-a-vulnerability-of-a-project-for-cicd get /project/{projectId}/results/cicd/{vulnerabilityId} # Get a vulnerability of a project for IaC Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-a-vulnerability-of-a-project-for-iac get /project/{projectId}/results/iac/{vulnerabilityId} # Get a vulnerability of a project for SAST Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-a-vulnerability-of-a-project-for-sast get /project/{projectId}/results/sast/{vulnerabilityId} # Get a vulnerability of a project for SCA Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-a-vulnerability-of-a-project-for-sca get /project/{projectId}/results/sca/{vulnerabilityId} # Get a vulnerability of a project for Secret Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-a-vulnerability-of-a-project-for-secret get /project/{projectId}/results/secret/{vulnerabilityId} # Get aggregated overview statistics for an organization Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-aggregated-overview-statistics-for-an-organization get /organization/{organizationId}/results/overview Returns comprehensive vulnerability statistics aggregated across all projects in the organization. Supports filtering by projects, teams, severity, status, analysis types, date ranges, languages, branches, and more. Includes pagination for summaries and period-over-period comparison. # Get all CICD vulnerabilities of a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-all-cicd-vulnerabilities-of-a-project get /project/{projectId}/results/cicd # Get all container images of a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-all-container-images-of-a-project get /project/{projectId}/results/container/images Retrieves all scanned container images associated with a project # Get all container packages of a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-all-container-packages-of-a-project get /project/{projectId}/results/container/packages Retrieves all packages detected in container images for a project # Get all container vulnerabilities of a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-all-container-vulnerabilities-of-a-project get /project/{projectId}/results/container Retrieves paginated container vulnerabilities with filtering options # Get all IaC vulnerabilities of a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-all-iac-vulnerabilities-of-a-project get /project/{projectId}/results/iac # Get all SCA packages of a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-all-sca-packages-of-a-project get /project/{projectId}/results/sca/packages # Get all SCA vulnerabilities of a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-all-sca-vulnerabilities-of-a-project get /project/{projectId}/results/sca # Get all Secret vulnerabilities of a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-all-secret-vulnerabilities-of-a-project get /project/{projectId}/results/secret # Get all vulnerabilities of a project for SAST Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-all-vulnerabilities-of-a-project-for-sast get /project/{projectId}/results/sast # Get branches from vulnerability detections Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-branches-from-vulnerability-detections get /project/{projectId}/branches Retrieves distinct branch names found in SAST, SCA, and IAC vulnerability detections. Use this endpoint for projects that are not linked to GitHub or GitLab integrations. # Get CICD vulnerabilities grouped by rule ID Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-cicd-vulnerabilities-grouped-by-rule-id get /project/{projectId}/results/cicd/grouped Returns CICD vulnerabilities consolidated by rule with occurrence counts and severity breakdown. # Get container images grouped by repository Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-container-images-grouped-by-repository get /project/{projectId}/results/container/images/grouped Retrieves container images grouped by repository name, showing all tags within each image. Useful for viewing images with multiple tags (e.g., v1.0.0, latest) as a single entity. # Get IAC vulnerabilities grouped by rule ID Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-iac-vulnerabilities-grouped-by-rule-id get /project/{projectId}/results/iac/grouped Returns IAC vulnerabilities consolidated by rule with occurrence counts and severity breakdown. # Get overview of a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-overview-of-a-project get /project/{projectId}/results/overview # Get SAST vulnerabilities grouped by rule ID Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-sast-vulnerabilities-grouped-by-rule-id get /project/{projectId}/results/sast/grouped Returns SAST vulnerabilities consolidated by rule with occurrence counts and severity breakdown. Useful for showing unique vulnerability types with their occurrences. # Get SBOM report for a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-sbom-report-for-a-project get /project/{projectId}/sbom # Get SCA AutoFix job results Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-sca-autofix-job-results get /project/{projectId}/results/sca/autofix/{jobId} Get the full results of a completed SCA AutoFix job. Returns all analysis results including fix candidates and PR information. # Get SCA AutoFix job status Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-sca-autofix-job-status get /project/{projectId}/results/sca/autofix/{jobId}/status Poll this endpoint to check the status of an SCA AutoFix job. Returns progress information and status (queued, processing, completed, failed). # Get SCA vulnerabilities grouped by CVE + package name Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-sca-vulnerabilities-grouped-by-cve-+-package-name get /project/{projectId}/results/sca/grouped Returns SCA vulnerabilities consolidated by CVE and package with occurrence counts, severity breakdown, and CVSS scores. # Get Secret vulnerabilities grouped by rule ID Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-secret-vulnerabilities-grouped-by-rule-id get /project/{projectId}/results/secret/grouped Returns Secret vulnerabilities consolidated by rule with occurrence counts and severity breakdown. # Get vulnerability by ID with similar occurrences Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-vulnerability-by-id-with-similar-occurrences get /project/{projectId}/results/{vulnerabilityId}/similar Returns a vulnerability and all similar occurrences (same rule for SAST/IAC/CICD/Secret, same CVE for SCA). # Update a vulnerability of a project Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/update-a-vulnerability-of-a-project patch /project/{projectId}/results/{vulnerabilityId} # Assign License to Package Source: https://docs.cybedefend.com/latest/api-reference/endpoint/sca-licenses/assign-package-license PUT /project/{projectId}/sca/packages/{packageId}/license Manually assign an SPDX license ID to a specific SCA package ## Path Parameters The UUID of the project The UUID of the SCA package ## Authorization Requires `change_vulnerability_state` permission on the project. ## Request Body The SPDX license identifier to assign (e.g., `MIT`, `Apache-2.0`, `GPL-3.0-only`) ```json theme={null} { "spdxId": "MIT" } ``` ## Response Whether the request succeeded Confirmation message ```json theme={null} { "success": true, "message": "License assigned successfully" } ``` Assigning a license to a package that was previously categorized as **Unknown** will remove the Unknown placeholder and update the package's license list. This is particularly useful for internal packages or packages whose license metadata is missing from the registry. # Get License Classifications Source: https://docs.cybedefend.com/latest/api-reference/endpoint/sca-licenses/get-license-classifications GET /organization/{organizationId}/licenses/classifications Get all license classifications for an organization, including defaults and overrides ## Path Parameters The UUID of the organization ## Authorization Requires `read` permission on the organization. ## Response Whether the request succeeded SPDX license identifier Human-readable license name CybeDefend's default category: `PERMISSIVE`, `WEAK_COPYLEFT`, `STRONG_COPYLEFT`, or `UNKNOWN` Currently active category (may differ from default if overridden) Whether this license has been overridden at the organization level ```json theme={null} { "success": true, "data": { "licenses": [ { "spdxId": "MIT", "name": "MIT License", "defaultCategory": "PERMISSIVE", "currentCategory": "PERMISSIVE", "isOverridden": false }, { "spdxId": "BUSL-1.1", "name": "Business Source License 1.1", "defaultCategory": "WEAK_COPYLEFT", "currentCategory": "STRONG_COPYLEFT", "isOverridden": true } ] } } ``` # Get License Summary Source: https://docs.cybedefend.com/latest/api-reference/endpoint/sca-licenses/get-license-summary GET /project/{projectId}/results/sca/licenses/summary Get aggregated license statistics for all SCA packages in a project ## Path Parameters The UUID of the project ## Query Parameters Filter by Git branch name The UUID of the organization (required for permission resolution) Filter by package ecosystem (e.g., `npm`, `pip`, `maven`, `go`). Can be specified multiple times. ## Authorization Requires `read_scan_result` permission on the project. ## Response Whether the request succeeded The project UUID Total number of SCA packages Number of packages with at least one detected license Number of packages with no detected license Number of packages classified as Permissive Number of packages classified as Weak Copyleft Number of packages classified as Strong Copyleft Number of packages with unknown or unresolved licenses Number of packages marked as ignored for license analysis SPDX license identifier (e.g., `MIT`, `Apache-2.0`) Human-readable license name License category: `PERMISSIVE`, `WEAK_COPYLEFT`, `STRONG_COPYLEFT`, or `UNKNOWN` Risk level: `NONE`, `MEDIUM`, `HIGH`, or `UNKNOWN` Human-readable description of the risk implications Number of packages using this license ```json theme={null} { "success": true, "data": { "projectId": "550e8400-e29b-41d4-a716-446655440001", "totalPackages": 142, "packagesWithLicenses": 135, "packagesWithoutLicenses": 7, "permissiveCount": 120, "weakCopyleftCount": 8, "strongCopyleftCount": 3, "unknownCount": 7, "ignoredCount": 4, "licenses": [ { "spdxId": "MIT", "name": "MIT License", "category": "PERMISSIVE", "risk": "NONE", "riskDescription": "Minimal restrictions on use, modification, and redistribution", "count": 85 }, { "spdxId": "Apache-2.0", "name": "Apache License 2.0", "category": "PERMISSIVE", "risk": "NONE", "riskDescription": "Minimal restrictions on use, modification, and redistribution", "count": 25 }, { "spdxId": "GPL-3.0-only", "name": "GNU General Public License v3.0 only", "category": "STRONG_COPYLEFT", "risk": "HIGH", "riskDescription": "Requires derivative works to be released under the same license", "count": 3 } ] } } ``` # Get Packages by License Source: https://docs.cybedefend.com/latest/api-reference/endpoint/sca-licenses/get-packages-by-license GET /project/{projectId}/results/sca/licenses/{spdxId}/packages Get all packages in a project that use a specific SPDX license ## Path Parameters The UUID of the project The SPDX license identifier (e.g., `MIT`, `Apache-2.0`, `GPL-3.0-only`). Use `UNKNOWN` to retrieve packages with no detected license. ## Query Parameters Filter by Git branch name The UUID of the organization (required for permission resolution) Filter by package ecosystem (e.g., `npm`, `pip`, `maven`, `go`). Can be specified multiple times. ## Authorization Requires `read_scan_result` permission on the project. ## Response Whether the request succeeded SPDX license identifier Human-readable license name License category: `PERMISSIVE`, `WEAK_COPYLEFT`, `STRONG_COPYLEFT`, or `UNKNOWN` Risk level: `NONE`, `MEDIUM`, `HIGH`, or `UNKNOWN` Human-readable description of the risk implications Total number of packages using this license Package UUID Package name (e.g., `lodash`, `express`) Package version Package ecosystem (npm, pip, maven, etc.) All SPDX license IDs associated with this package Whether this is a transitive (indirect) dependency Whether this is a dev-only dependency Whether this package is ignored in license analysis ```json theme={null} { "success": true, "data": { "spdxId": "MIT", "name": "MIT License", "category": "PERMISSIVE", "risk": "NONE", "riskDescription": "Minimal restrictions on use, modification, and redistribution", "totalCount": 85, "packages": [ { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "packageName": "lodash", "packageVersion": "4.17.21", "ecosystem": "npm", "licenses": ["MIT"], "isTransitive": false, "isDev": false, "isLicenseIgnored": false }, { "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", "packageName": "express", "packageVersion": "4.18.2", "ecosystem": "npm", "licenses": ["MIT"], "isTransitive": false, "isDev": false, "isLicenseIgnored": false } ] } } ``` # Reset License Classifications Source: https://docs.cybedefend.com/latest/api-reference/endpoint/sca-licenses/reset-license-classifications DELETE /organization/{organizationId}/licenses/classifications Reset all license classification overrides for an organization back to defaults ## Path Parameters The UUID of the organization ## Authorization Requires `manage` permission on the organization. ## Response Whether the request succeeded Confirmation message ```json theme={null} { "success": true, "message": "All license classification overrides have been reset" } ``` This action removes **all** organization-level license classification overrides and reverts to CybeDefend's default classifications. This cannot be undone. # Toggle Package License Ignore Source: https://docs.cybedefend.com/latest/api-reference/endpoint/sca-licenses/toggle-package-license-ignore PUT /project/{projectId}/sca/packages/{packageId}/license-ignore Toggle the ignore status for a package in license analysis ## Path Parameters The UUID of the project The UUID of the SCA package ## Authorization Requires `change_vulnerability_state` permission on the project. ## Request Body Set to `true` to ignore the package in license analysis, or `false` to include it again. ```json theme={null} { "ignored": true } ``` ## Response Whether the request succeeded Confirmation message ```json theme={null} { "success": true, "message": "Package license ignore status updated" } ``` Ignored packages are excluded from the license summary counts but remain visible in the package detail view. Use this for internal packages or test dependencies that are not relevant to your license compliance. # Update License Classifications Source: https://docs.cybedefend.com/latest/api-reference/endpoint/sca-licenses/update-license-classifications PUT /organization/{organizationId}/licenses/classifications Update license classification overrides for an organization ## Path Parameters The UUID of the organization ## Authorization Requires `manage` permission on the organization. ## Request Body Array of license classification overrides to apply. The SPDX license identifier to override (e.g., `MIT`, `BUSL-1.1`) The new category: `PERMISSIVE`, `WEAK_COPYLEFT`, `STRONG_COPYLEFT`, or `UNKNOWN` ```json theme={null} { "overrides": [ { "spdxId": "BUSL-1.1", "category": "STRONG_COPYLEFT" }, { "spdxId": "Artistic-2.0", "category": "PERMISSIVE" } ] } ``` ## Response Whether the request succeeded Confirmation message ```json theme={null} { "success": true, "message": "License classifications updated" } ``` Overrides apply to **all projects** in the organization. Changing a license from Permissive to Strong Copyleft may surface new compliance issues across all projects. # Get a scan by ID Source: https://docs.cybedefend.com/latest/api-reference/endpoint/scan/get-a-scan-by-id get /project/{projectId}/scan/{scanId} Retrieves detailed information about a specific scan including status, progress, and configuration. # Start a public container scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/scan/start-a-public-container-scan post /project/{projectId}/scan/container/start Initiates a container image vulnerability scan for a public Docker image. # Start a scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/scan/start-a-scan post /project/{projectId}/scan/start Initiates a security scan for a project. Returns a signed URL to upload the source code. The scan will analyze the code for SAST, IaC, and SCA vulnerabilities based on project configuration. # Add a member to a team Source: https://docs.cybedefend.com/latest/api-reference/endpoint/team/add-a-member-to-a-team post /team/{teamId}/member # Create a new team Source: https://docs.cybedefend.com/latest/api-reference/endpoint/team/create-a-new-team post /organization/{organizationId}/team # Delete a team Source: https://docs.cybedefend.com/latest/api-reference/endpoint/team/delete-a-team delete /team/{teamId} # Get a member of a team Source: https://docs.cybedefend.com/latest/api-reference/endpoint/team/get-a-member-of-a-team get /team/{teamId}/member/{userId} # Get all members of a team Source: https://docs.cybedefend.com/latest/api-reference/endpoint/team/get-all-members-of-a-team get /team/{teamId}/members # Get all teams of an organization Source: https://docs.cybedefend.com/latest/api-reference/endpoint/team/get-all-teams-of-an-organization get /organization/{organizationId}/teams # Get team by ID Source: https://docs.cybedefend.com/latest/api-reference/endpoint/team/get-team-by-id get /organization/{organizationId}/team/{teamId} # Remove a member from a team Source: https://docs.cybedefend.com/latest/api-reference/endpoint/team/remove-a-member-from-a-team delete /team/{teamId}/member # Update a member role in a team Source: https://docs.cybedefend.com/latest/api-reference/endpoint/team/update-a-member-role-in-a-team put /team/{teamId}/member/role # Update a team Source: https://docs.cybedefend.com/latest/api-reference/endpoint/team/update-a-team put /team/{teamId} # Create a personal access token Source: https://docs.cybedefend.com/latest/api-reference/endpoint/user/create-a-personal-access-token post /user/personal-access-tokens # Delete a personal access token Source: https://docs.cybedefend.com/latest/api-reference/endpoint/user/delete-a-personal-access-token post /user/personal-access-tokens/delete # Get user profile Source: https://docs.cybedefend.com/latest/api-reference/endpoint/user/get-user-profile get /user/profile Retrieves the profile information of the currently authenticated user including notification settings and onboarding status. # List personal access tokens Source: https://docs.cybedefend.com/latest/api-reference/endpoint/user/list-personal-access-tokens get /user/personal-access-tokens # Rename a personal access token Source: https://docs.cybedefend.com/latest/api-reference/endpoint/user/rename-a-personal-access-token patch /user/personal-access-tokens/name # Update user profile Source: https://docs.cybedefend.com/latest/api-reference/endpoint/user/update-user-profile patch /user/profile Updates the profile information of the currently authenticated user. Allows modification of notification preferences and onboarding completion status. # Get app IDs for native clients Source: https://docs.cybedefend.com/latest/api-reference/endpoint/version/get-app-ids-for-native-clients get /client-apps Returns the public application IDs for native clients (CLI, VS Code Extension, IntelliJ IDEA Extension). No authentication required. # Delete ACR credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/acr-container-registry/delete-acr-credentials delete /integrations/acr/container-registry/organization/{organizationId}/credentials/{credentialId} Permanently deletes stored Azure Container Registry credentials from the organization # Get ACR credential details Source: https://docs.cybedefend.com/latest/api-reference/endpoint/acr-container-registry/get-acr-credential-details get /integrations/acr/container-registry/project/{projectId}/credentials/{credentialId} Returns detailed information about a specific Azure Container Registry credential (sanitized, no secrets exposed) # List ACR credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/acr-container-registry/list-acr-credentials get /integrations/acr/container-registry/project/{projectId}/credentials Returns all Azure Container Registry credentials available for the project (sanitized, no secrets exposed) # List ACR image tags Source: https://docs.cybedefend.com/latest/api-reference/endpoint/acr-container-registry/list-acr-image-tags get /integrations/acr/container-registry/project/{projectId}/images/{repositoryId}/tags Lists all available tags for a specific Docker image (repository) in Azure Container Registry # List ACR images Source: https://docs.cybedefend.com/latest/api-reference/endpoint/acr-container-registry/list-acr-images get /integrations/acr/container-registry/project/{projectId}/images Lists all Docker images (repositories) available in the Azure Container Registry using the specified credentials # Start ACR container scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/acr-container-registry/start-acr-container-scan post /integrations/acr/container-registry/project/{projectId}/scan Initiates a vulnerability scan for a Docker image stored in Azure Container Registry. The scan runs asynchronously and results can be retrieved via the scan results endpoint. # Store ACR Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/acr-container-registry/store-acr-container-registry-credentials post /integrations/acr/container-registry/organization/{organizationId}/credentials Stores Azure Container Registry Service Principal credentials at organization level. The credentials will be encrypted and stored securely. # Bulk-apply a container-registry credential to projects Source: https://docs.cybedefend.com/latest/api-reference/endpoint/container-registry-credentials/bulk-apply-a-container-registry-credential-to-projects post /integrations/container-registry/organization/{organizationId}/bulk-apply Creates (or rotates) one credential of the given registry type and links it to a set of projects in a single call. Unknown or foreign-organization projects are skipped and reported in the response. # List projects linked to a container-registry credential Source: https://docs.cybedefend.com/latest/api-reference/endpoint/container-registry-credentials/list-projects-linked-to-a-container-registry-credential get /integrations/container-registry/organization/{organizationId}/credentials/{registryType}/{credentialId}/projects Returns the full set of project ids currently linked to an organization-level container-registry credential, for the given registry type. # Set projects linked to a container-registry credential Source: https://docs.cybedefend.com/latest/api-reference/endpoint/container-registry-credentials/set-projects-linked-to-a-container-registry-credential put /integrations/container-registry/organization/{organizationId}/credentials/{registryType}/{credentialId}/projects Replaces the full set of projects linked to an organization-level container-registry credential. An empty array unlinks the credential from every project. # Delete DockerHub credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/dockerhub-container-registry/delete-dockerhub-credentials delete /integrations/dockerhub/container-registry/organization/{organizationId}/credentials/{credentialId} Permanently deletes stored DockerHub credentials from the organization # Get DockerHub credential details Source: https://docs.cybedefend.com/latest/api-reference/endpoint/dockerhub-container-registry/get-dockerhub-credential-details get /integrations/dockerhub/container-registry/project/{projectId}/credentials/{credentialId} Returns detailed information about a specific DockerHub credential (sanitized, no secrets exposed) # List DockerHub credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/dockerhub-container-registry/list-dockerhub-credentials get /integrations/dockerhub/container-registry/project/{projectId}/credentials Returns all DockerHub credentials available for the project (sanitized, no secrets exposed) # List DockerHub image tags Source: https://docs.cybedefend.com/latest/api-reference/endpoint/dockerhub-container-registry/list-dockerhub-image-tags get /integrations/dockerhub/container-registry/project/{projectId}/images/{repositoryName}/tags Lists all available tags for a specific Docker image (repository) in DockerHub # List DockerHub images Source: https://docs.cybedefend.com/latest/api-reference/endpoint/dockerhub-container-registry/list-dockerhub-images get /integrations/dockerhub/container-registry/project/{projectId}/images Lists all Docker images (repositories) available in the DockerHub namespace using the specified credentials # Start DockerHub container scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/dockerhub-container-registry/start-dockerhub-container-scan post /integrations/dockerhub/container-registry/project/{projectId}/scan Initiates a vulnerability scan for a Docker image stored in DockerHub. The scan runs asynchronously and results can be retrieved via the scan results endpoint. # Store DockerHub Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/dockerhub-container-registry/store-dockerhub-container-registry-credentials post /integrations/dockerhub/container-registry/organization/{organizationId}/credentials Stores DockerHub Personal Access Token credentials at organization level. The credentials will be encrypted and stored securely. # Delete ECR credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ecr-container-registry/delete-ecr-credentials delete /integrations/ecr/container-registry/organization/{organizationId}/credentials/{credentialId} Permanently deletes stored AWS Elastic Container Registry credentials from the organization # Get ECR credential details Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ecr-container-registry/get-ecr-credential-details get /integrations/ecr/container-registry/project/{projectId}/credentials/{credentialId} Returns detailed information about a specific AWS Elastic Container Registry credential (sanitized, no secrets exposed) # List ECR credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ecr-container-registry/list-ecr-credentials get /integrations/ecr/container-registry/project/{projectId}/credentials Returns all AWS Elastic Container Registry credentials available for the project (sanitized, no secrets exposed) # List ECR image tags Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ecr-container-registry/list-ecr-image-tags get /integrations/ecr/container-registry/project/{projectId}/images/{repositoryId}/tags Lists all available tags for a specific Docker image (repository) in AWS Elastic Container Registry # List ECR images Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ecr-container-registry/list-ecr-images get /integrations/ecr/container-registry/project/{projectId}/images Lists all Docker images (repositories) available in the AWS Elastic Container Registry using the specified credentials # List organization ECR credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ecr-container-registry/list-organization-ecr-credentials get /integrations/ecr/container-registry/organization/{organizationId}/credentials Returns all AWS Elastic Container Registry credentials stored at organization level (sanitized, no secrets exposed) with the count of linked projects. # List projects linked to an ECR credential Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ecr-container-registry/list-projects-linked-to-an-ecr-credential get /integrations/ecr/container-registry/organization/{organizationId}/credentials/{credentialId}/projects Returns the full set of project ids currently linked to an organization-level ECR credential. # Prepare an IAM-role-based ECR integration Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ecr-container-registry/prepare-an-iam-role-based-ecr-integration post /integrations/ecr/container-registry/organization/{organizationId}/credentials/prepare-iam-role Generates a unique external ID and returns the trust + permission policies the customer attaches to a role in their own AWS account. Use the returned external ID and the created role ARN with the store credentials endpoint (credentialType=iam_role). # Set projects linked to an ECR credential Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ecr-container-registry/set-projects-linked-to-an-ecr-credential put /integrations/ecr/container-registry/organization/{organizationId}/credentials/{credentialId}/projects Replaces the full set of projects linked to an organization-level ECR credential. An empty array unlinks the credential from every project. # Start ECR container scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ecr-container-registry/start-ecr-container-scan post /integrations/ecr/container-registry/project/{projectId}/scan Initiates a vulnerability scan for a Docker image stored in AWS Elastic Container Registry. The scan runs asynchronously and results can be retrieved via the scan results endpoint. # Store ECR Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/ecr-container-registry/store-ecr-container-registry-credentials post /integrations/ecr/container-registry/organization/{organizationId}/credentials Stores AWS Elastic Container Registry credentials at organization level. The credentials will be encrypted and stored securely. # Delete GCR Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gcr-container-registry/delete-gcr-container-registry-credentials delete /integrations/gcr/container-registry/organization/{organizationId}/credentials/{credentialId} Permanently deletes stored Google Container Registry or Artifact Registry credentials from the organization. This action cannot be undone. # Get GCR Container Registry credential details Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gcr-container-registry/get-gcr-container-registry-credential-details get /integrations/gcr/container-registry/project/{projectId}/credentials/{credentialId} Returns detailed information about a specific Google Container Registry or Artifact Registry credential. Sensitive data like service account keys are sanitized and not included in the response. # List container images from GCR/Artifact Registry Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gcr-container-registry/list-container-images-from-gcrartifact-registry get /integrations/gcr/container-registry/project/{projectId}/images Retrieves a paginated list of all container images stored in Google Container Registry (GCR) or Artifact Registry. Uses the specified credential for authentication. # List stored GCR Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gcr-container-registry/list-stored-gcr-container-registry-credentials get /integrations/gcr/container-registry/project/{projectId}/credentials Returns all Google Container Registry and Artifact Registry credentials associated with the project. Credentials are sanitized and do not include sensitive secrets like service account keys. # List tags for a container image Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gcr-container-registry/list-tags-for-a-container-image get /integrations/gcr/container-registry/project/{projectId}/images/{repositoryId}/tags Retrieves all available tags for a specific container image in Google Container Registry (GCR) or Artifact Registry. Includes digest information and image metadata for each tag. # Start GCR container vulnerability scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gcr-container-registry/start-gcr-container-vulnerability-scan post /integrations/gcr/container-registry/project/{projectId}/scan Initiates a vulnerability scan for a container image stored in Google Container Registry (GCR) or Artifact Registry. The scan runs asynchronously and results can be retrieved using the returned scan ID. # Store GCR Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gcr-container-registry/store-gcr-container-registry-credentials post /integrations/gcr/container-registry/organization/{organizationId}/credentials Stores GCP service account key credentials for Google Container Registry (GCR) or Artifact Registry at the organization level. These credentials will be used to authenticate and pull container images for vulnerability scanning. # Delete stored PAT for ghcr.io Source: https://docs.cybedefend.com/latest/api-reference/endpoint/github-container-registry/delete-stored-pat-for-ghcrio delete /integrations/github-container-registry/organization/{organizationId}/pat Removes the stored Personal Access Token. After deletion, scanning private/internal packages will no longer be possible. # Get GitHub Container Registry token Source: https://docs.cybedefend.com/latest/api-reference/endpoint/github-container-registry/get-github-container-registry-token get /integrations/github-container-registry/organization/{organizationId}/token Generates a temporary GitHub App installation token for ghcr.io access. Use this token with docker login: `docker login ghcr.io -u x-access-token -p `. Token expires after approximately 1 hour. # Get PAT status for ghcr.io Source: https://docs.cybedefend.com/latest/api-reference/endpoint/github-container-registry/get-pat-status-for-ghcrio get /integrations/github-container-registry/organization/{organizationId}/pat/status Checks if a Personal Access Token is stored and validates it. Returns information about the token without exposing the actual token value. # List Docker images from GitHub Container Registry Source: https://docs.cybedefend.com/latest/api-reference/endpoint/github-container-registry/list-docker-images-from-github-container-registry get /integrations/github-container-registry/organization/{organizationId}/images Lists all Docker images available in ghcr.io for the GitHub account associated with the organization. # List image tags from GitHub Container Registry Source: https://docs.cybedefend.com/latest/api-reference/endpoint/github-container-registry/list-image-tags-from-github-container-registry get /integrations/github-container-registry/organization/{organizationId}/images/{packageName}/tags Lists all available tags/versions for a Docker image hosted on ghcr.io. # Start GitHub Container Registry scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/github-container-registry/start-github-container-registry-scan post /integrations/github-container-registry/project/{projectId}/scan Initiates a vulnerability scan for a container image hosted on ghcr.io. Uses the GitHub App installation token or configured PAT for authentication. The image is validated to ensure it belongs to the organization before scanning. # Store a Personal Access Token (PAT) for ghcr.io Source: https://docs.cybedefend.com/latest/api-reference/endpoint/github-container-registry/store-a-personal-access-token-pat-for-ghcrio post /integrations/github-container-registry/organization/{organizationId}/pat Stores a GitHub Personal Access Token with read:packages scope. This is REQUIRED for scanning private or internal container images, as GitHub App tokens cannot pull these packages from ghcr.io. The token is encrypted before storage. # Delete GitLab Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gitlab-container-registry/delete-gitlab-container-registry-credentials delete /integrations/gitlab/container-registry/organization/{organizationId}/credentials/{credentialId} Permanently deletes stored GitLab Container Registry (registry.gitlab.com) credentials from the organization. This action cannot be undone. # Get GitLab Container Registry credential details Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gitlab-container-registry/get-gitlab-container-registry-credential-details get /integrations/gitlab/container-registry/project/{projectId}/credentials/{credentialId} Returns detailed information about a specific GitLab Container Registry (registry.gitlab.com) credential. Credentials are sanitized and do not include secrets. # List Docker image tags from GitLab Container Registry Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gitlab-container-registry/list-docker-image-tags-from-gitlab-container-registry get /integrations/gitlab/container-registry/project/{projectId}/images/{repositoryId}/tags Lists all available tags for a specific Docker image in GitLab Container Registry (registry.gitlab.com). Useful for selecting which image version to scan. # List Docker images from GitLab Container Registry Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gitlab-container-registry/list-docker-images-from-gitlab-container-registry get /integrations/gitlab/container-registry/project/{projectId}/images Lists all Docker images available in the GitLab Container Registry (registry.gitlab.com) using the specified credentials. Results are paginated. # List GitLab Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gitlab-container-registry/list-gitlab-container-registry-credentials get /integrations/gitlab/container-registry/project/{projectId}/credentials Returns all GitLab Container Registry (registry.gitlab.com) credentials available for the project. Credentials are sanitized and do not include secrets. # Start GitLab Container Registry scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gitlab-container-registry/start-gitlab-container-registry-scan post /integrations/gitlab/container-registry/project/{projectId}/scan Initiates a security scan for a container image from GitLab Container Registry (registry.gitlab.com). The scan runs asynchronously and results can be retrieved via the scan status endpoint. # Store GitLab Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/gitlab-container-registry/store-gitlab-container-registry-credentials post /integrations/gitlab/container-registry/organization/{organizationId}/credentials Stores deploy token credentials for GitLab Container Registry (registry.gitlab.com) at organization level. These credentials are used to authenticate and pull container images for security scanning. # Delete Harbor credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/harbor-container-registry/delete-harbor-credentials delete /integrations/harbor/container-registry/organization/{organizationId}/credentials/{credentialId} Deletes stored Harbor self-hosted container registry credentials from the organization # Get Harbor credential details Source: https://docs.cybedefend.com/latest/api-reference/endpoint/harbor-container-registry/get-harbor-credential-details get /integrations/harbor/container-registry/project/{projectId}/credentials/{credentialId} Returns Harbor self-hosted registry credential details (sanitized, no secrets exposed) # List Docker images from Harbor Source: https://docs.cybedefend.com/latest/api-reference/endpoint/harbor-container-registry/list-docker-images-from-harbor get /integrations/harbor/container-registry/project/{projectId}/credentials/{credentialId}/images Returns available Docker images/repositories from the Harbor self-hosted container registry # List Harbor image tags Source: https://docs.cybedefend.com/latest/api-reference/endpoint/harbor-container-registry/list-harbor-image-tags get /integrations/harbor/container-registry/project/{projectId}/credentials/{credentialId}/images/{repository}/tags Returns available tags for a Docker image in Harbor self-hosted registry # List Harbor projects Source: https://docs.cybedefend.com/latest/api-reference/endpoint/harbor-container-registry/list-harbor-projects get /integrations/harbor/container-registry/project/{projectId}/credentials/{credentialId}/projects Returns Harbor self-hosted registry projects accessible with the stored credentials. Projects in Harbor are organizational units that contain repositories. # List stored Harbor credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/harbor-container-registry/list-stored-harbor-credentials get /integrations/harbor/container-registry/project/{projectId}/credentials Returns all Harbor self-hosted container registry credentials associated with the project (sanitized, no secrets exposed) # Start Harbor container scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/harbor-container-registry/start-harbor-container-scan post /integrations/harbor/container-registry/project/{projectId}/scan Initiates a security vulnerability scan for a container image from Harbor self-hosted registry. The scan runs asynchronously and results can be retrieved via the scan status endpoint. # Store Harbor Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/harbor-container-registry/store-harbor-container-registry-credentials post /integrations/harbor/container-registry/organization/{organizationId}/credentials Stores robot account or user credentials for Harbor self-hosted registry at organization level. Supports authentication via robot accounts or standard user credentials. # Delete JFrog Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/jfrog-container-registry/delete-jfrog-container-registry-credentials delete /integrations/jfrog/container-registry/organization/{organizationId}/credentials/{credentialId} Deletes stored JFrog Artifactory Docker registry credentials from the organization # Get JFrog credential details Source: https://docs.cybedefend.com/latest/api-reference/endpoint/jfrog-container-registry/get-jfrog-credential-details get /integrations/jfrog/container-registry/project/{projectId}/credentials/{credentialId} Returns JFrog Artifactory Docker registry credential details (sanitized, no secrets exposed) # List Docker images in JFrog Artifactory repository Source: https://docs.cybedefend.com/latest/api-reference/endpoint/jfrog-container-registry/list-docker-images-in-jfrog-artifactory-repository get /integrations/jfrog/container-registry/project/{projectId}/credentials/{credentialId}/images Returns Docker container images stored in a JFrog Artifactory repository for vulnerability scanning # List JFrog Artifactory Docker repositories Source: https://docs.cybedefend.com/latest/api-reference/endpoint/jfrog-container-registry/list-jfrog-artifactory-docker-repositories get /integrations/jfrog/container-registry/project/{projectId}/credentials/{credentialId}/repositories Returns JFrog Artifactory Docker repositories accessible with the stored credentials for container scanning # List JFrog Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/jfrog-container-registry/list-jfrog-container-registry-credentials get /integrations/jfrog/container-registry/project/{projectId}/credentials Returns all JFrog Artifactory Docker registry credentials for the project (sanitized, no secrets exposed) # List tags for a Docker image in JFrog Artifactory Source: https://docs.cybedefend.com/latest/api-reference/endpoint/jfrog-container-registry/list-tags-for-a-docker-image-in-jfrog-artifactory get /integrations/jfrog/container-registry/project/{projectId}/credentials/{credentialId}/images/{imageName}/tags Returns available tags for a Docker container image stored in JFrog Artifactory for vulnerability scanning # Start JFrog Artifactory container image scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/jfrog-container-registry/start-jfrog-artifactory-container-image-scan post /integrations/jfrog/container-registry/project/{projectId}/scan Starts a vulnerability scan for a Docker container image stored in JFrog Artifactory. Returns scan ID to track progress. # Store JFrog Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/jfrog-container-registry/store-jfrog-container-registry-credentials post /integrations/jfrog/container-registry/organization/{organizationId}/credentials Stores JFrog Artifactory Docker registry credentials at organization level for container image scanning # Delete Quay Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/quay-container-registry/delete-quay-container-registry-credentials delete /integrations/quay/container-registry/organization/{organizationId}/credentials/{credentialId} Deletes stored Quay.io / Red Hat Quay container registry credentials from the organization # Get Quay Container Registry credential details Source: https://docs.cybedefend.com/latest/api-reference/endpoint/quay-container-registry/get-quay-container-registry-credential-details get /integrations/quay/container-registry/project/{projectId}/credentials/{credentialId} Returns Quay.io / Red Hat Quay credential details (sanitized, secrets are masked) # List container image tags from Quay registry Source: https://docs.cybedefend.com/latest/api-reference/endpoint/quay-container-registry/list-container-image-tags-from-quay-registry get /integrations/quay/container-registry/project/{projectId}/images/{repositoryId}/tags Lists all tags for a specific container image repository in Quay.io / Red Hat Quay registry # List container images from Quay registry Source: https://docs.cybedefend.com/latest/api-reference/endpoint/quay-container-registry/list-container-images-from-quay-registry get /integrations/quay/container-registry/project/{projectId}/images Lists all container images (repositories) accessible via the stored Quay.io / Red Hat Quay credentials # List Quay Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/quay-container-registry/list-quay-container-registry-credentials get /integrations/quay/container-registry/project/{projectId}/credentials Returns all Quay.io / Red Hat Quay container registry credentials available for the project (sanitized, secrets are masked) # Start Quay Container Registry scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/quay-container-registry/start-quay-container-registry-scan post /integrations/quay/container-registry/project/{projectId}/scan Initiates an asynchronous container image vulnerability scan using stored Quay.io / Red Hat Quay credentials. The scan runs in the background and results can be retrieved via the scan status endpoint. # Store Quay Container Registry credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/quay-container-registry/store-quay-container-registry-credentials post /integrations/quay/container-registry/organization/{organizationId}/credentials Stores Quay.io / Red Hat Quay robot account credentials at organization level for container image scanning # Get dockerhubsearchimages Source: https://docs.cybedefend.com/latest/api-reference/endpoint/results-&-vulnerabilities/get-dockerhubsearchimages get /dockerhub/search/images # Delete Scaleway Credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/scaleway-container-registry/delete-scaleway-credentials DELETE /integrations/scaleway/container-registry/organization/{organizationId}/credentials/{credentialId} Delete stored Scaleway Container Registry credentials ## Path Parameters The UUID of the organization The UUID of the credential to delete ## Authorization Requires `manage_integration` permission on the organization. ## Response Returns `204 No Content` on success. ``` HTTP/1.1 204 No Content ``` Deleting credentials is permanent and cannot be undone. Any future scans using this credential will fail until new credentials are stored. # Get Scaleway Credential Details Source: https://docs.cybedefend.com/latest/api-reference/endpoint/scaleway-container-registry/get-scaleway-credential-details GET /integrations/scaleway/container-registry/project/{projectId}/credentials/{credentialId} Get details of a specific Scaleway Container Registry credential ## Path Parameters The UUID of the project The UUID of the stored credential ## Authorization Requires `read` permission on the project. ## Response Whether the request succeeded Credential UUID Scaleway region Scaleway namespace UUID Namespace name Registry endpoint URL Credential description ISO 8601 creation timestamp ISO 8601 last update timestamp ```json theme={null} { "success": true, "data": { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "region": "fr-par", "namespaceId": "b2c3d4e5-f6a7-8901-bcde-f12345678901", "namespaceName": "production-registry", "registryEndpoint": "rg.fr-par.scw.cloud/production-registry", "description": "Production registry", "createdAt": "2026-03-17T10:30:00.000Z", "updatedAt": "2026-03-17T10:30:00.000Z" } } ``` Secret keys are never returned in API responses. Credentials are stored with AES-256-GCM encryption at rest. # List Scaleway Credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/scaleway-container-registry/list-scaleway-credentials GET /integrations/scaleway/container-registry/project/{projectId}/credentials List all Scaleway Container Registry credentials for a project ## Path Parameters The UUID of the project ## Authorization Requires `read` permission on the project. ## Response Whether the request succeeded Credential UUID Scaleway region Scaleway namespace UUID Namespace name Registry endpoint URL Credential description ISO 8601 creation timestamp ```json theme={null} { "success": true, "data": { "credentials": [ { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "region": "fr-par", "namespaceId": "b2c3d4e5-f6a7-8901-bcde-f12345678901", "namespaceName": "production-registry", "registryEndpoint": "rg.fr-par.scw.cloud/production-registry", "description": "Production registry", "createdAt": "2026-03-17T10:30:00.000Z" } ] } } ``` # List Scaleway Image Tags Source: https://docs.cybedefend.com/latest/api-reference/endpoint/scaleway-container-registry/list-scaleway-image-tags GET /integrations/scaleway/container-registry/project/{projectId}/credentials/{credentialId}/images/{imageId}/tags List tags for a specific Docker image in Scaleway Container Registry ## Path Parameters The UUID of the project The UUID of the stored credential The Scaleway image UUID ## Query Parameters Page number (1-based). Default: `1` Number of items per page. Default: `20` ## Authorization Requires `read` permission on the project. ## Response Whether the request succeeded The image name Scaleway tag UUID Tag name (e.g., `latest`, `v1.0.0`) Image digest (SHA256) Tag size in bytes Tag status ISO 8601 creation timestamp ISO 8601 last update timestamp Total number of tags Current page number Items per page ```json theme={null} { "success": true, "data": { "imageName": "my-api", "tags": [ { "tagId": "d4e5f6a7-b8c9-0123-def0-234567890123", "name": "v1.2.0", "digest": "sha256:abc123...", "size": 134217728, "status": "ready", "createdAt": "2026-03-15T09:00:00.000Z", "updatedAt": "2026-03-15T09:00:00.000Z" }, { "tagId": "e5f6a7b8-c9d0-1234-ef01-345678901234", "name": "latest", "digest": "sha256:abc123...", "size": 134217728, "status": "ready", "createdAt": "2026-03-15T09:00:00.000Z", "updatedAt": "2026-03-15T09:00:00.000Z" } ], "totalCount": 5, "page": 1, "pageSize": 20 } } ``` # List Scaleway Images Source: https://docs.cybedefend.com/latest/api-reference/endpoint/scaleway-container-registry/list-scaleway-images GET /integrations/scaleway/container-registry/project/{projectId}/credentials/{credentialId}/images List Docker images from a Scaleway Container Registry namespace ## Path Parameters The UUID of the project The UUID of the stored credential ## Query Parameters Scaleway namespace UUID to list images from. Defaults to the namespace associated with the credential. Page number (1-based). Default: `1` Number of items per page. Default: `20` ## Authorization Requires `read` permission on the project. ## Response Whether the request succeeded Scaleway image UUID Image name Namespace UUID the image belongs to Number of tags for this image Image size in bytes Image visibility (`public` or `private`) Image status ISO 8601 creation timestamp ISO 8601 last update timestamp Total number of images Current page number Items per page ```json theme={null} { "success": true, "data": { "images": [ { "imageId": "c3d4e5f6-a7b8-9012-cdef-123456789012", "name": "my-api", "namespaceId": "b2c3d4e5-f6a7-8901-bcde-f12345678901", "tagCount": 5, "size": 268435456, "visibility": "private", "status": "ready", "createdAt": "2026-02-10T14:00:00.000Z", "updatedAt": "2026-03-15T09:00:00.000Z" } ], "totalCount": 12, "page": 1, "pageSize": 20 } } ``` # List Scaleway Namespaces Source: https://docs.cybedefend.com/latest/api-reference/endpoint/scaleway-container-registry/list-scaleway-namespaces GET /integrations/scaleway/container-registry/project/{projectId}/credentials/{credentialId}/namespaces List container registry namespaces accessible with stored credentials ## Path Parameters The UUID of the project The UUID of the stored credential ## Query Parameters Page number (1-based). Default: `1` Number of items per page. Default: `20` ## Authorization Requires `read` permission on the project. ## Response Whether the request succeeded Scaleway namespace UUID Namespace name Scaleway region Registry endpoint URL Number of images in the namespace Total size in bytes Namespace status (e.g., `ready`, `deleting`) ISO 8601 creation timestamp ISO 8601 last update timestamp Total number of namespaces Current page number Items per page ```json theme={null} { "success": true, "data": { "namespaces": [ { "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", "name": "production-registry", "region": "fr-par", "endpoint": "rg.fr-par.scw.cloud/production-registry", "imageCount": 12, "size": 5368709120, "status": "ready", "createdAt": "2026-01-15T08:00:00.000Z", "updatedAt": "2026-03-17T10:30:00.000Z" } ], "totalCount": 1, "page": 1, "pageSize": 20 } } ``` # Start Scaleway Container Scan Source: https://docs.cybedefend.com/latest/api-reference/endpoint/scaleway-container-registry/start-scaleway-container-scan POST /integrations/scaleway/container-registry/project/{projectId}/scan Start a container vulnerability scan for an image in Scaleway Container Registry ## Path Parameters The UUID of the project ## Authorization Requires `start_scan` permission on the project. The `container_scanning` feature must be enabled for your plan. ## Request Body The UUID of the stored Scaleway credential to use for authentication Full image name with tag (e.g., `my-api:v1.2.0` or `my-api:latest`) Git branch name for tracking purposes Whether the scan is private. Default: `false` Filter results by severity levels (e.g., `["CRITICAL", "HIGH"]`). If omitted, all severities are returned. ```json theme={null} { "credentialId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "imageName": "my-api:v1.2.0", "branch": "main", "severities": ["CRITICAL", "HIGH", "MEDIUM"] } ``` ## Response Whether the scan was started successfully UUID of the created scan Status message Languages detected in the container image ```json theme={null} { "success": true, "data": { "scanId": "f6a7b8c9-d0e1-2345-f012-456789012345", "message": "Container scan started successfully", "detectedLanguages": ["javascript", "python"] } } ``` The scan runs asynchronously. Use the [Get Scan by ID](/latest/api-reference/endpoint/scan/get-a-scan-by-id) endpoint to check scan progress and retrieve results once completed. Before scanning, CybeDefend validates that the specified image exists in the namespace associated with the credential. If the image is not found, the request will fail with a `404 Not Found` error. # Store Scaleway Container Registry Credentials Source: https://docs.cybedefend.com/latest/api-reference/endpoint/scaleway-container-registry/store-scaleway-credentials POST /integrations/scaleway/container-registry/organization/{organizationId}/credentials Store Scaleway API credentials for container registry access ## Path Parameters The UUID of the organization ## Authorization Requires `manage_integration` permission on the organization. ## Request Body The UUID of the CybeDefend project to associate the credentials with Scaleway region where the container registry is hosted. One of: `fr-par`, `nl-ams`, `pl-waw` The name of the Scaleway Container Registry namespace Scaleway API secret key for authentication Optional description to identify this credential ```json theme={null} { "projectId": "550e8400-e29b-41d4-a716-446655440001", "region": "fr-par", "namespaceName": "my-production-registry", "secretKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "description": "Production registry credentials" } ``` ## Response Returns the stored credential details (secret key is **not** included in the response). Whether the request succeeded Credential UUID Scaleway region Resolved Scaleway namespace UUID Namespace name Registry endpoint URL (e.g., `rg.fr-par.scw.cloud/my-production-registry`) Credential description ISO 8601 creation timestamp ISO 8601 last update timestamp ```json theme={null} { "success": true, "data": { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "region": "fr-par", "namespaceId": "b2c3d4e5-f6a7-8901-bcde-f12345678901", "namespaceName": "my-production-registry", "registryEndpoint": "rg.fr-par.scw.cloud/my-production-registry", "description": "Production registry credentials", "createdAt": "2026-03-17T10:30:00.000Z", "updatedAt": "2026-03-17T10:30:00.000Z" } } ``` Credentials are validated against the Scaleway API before being stored. If the secret key is invalid or the namespace does not exist, the request will fail with a `400 Bad Request` error. # Resolve enterprise SSO connectors by email domain Source: https://docs.cybedefend.com/latest/api-reference/endpoint/sso/resolve-enterprise-sso-connectors-by-email-domain get /auth/sso/connectors Returns SSO connectors configured for the email domain. Used by the login page to bypass the SSO email screen.