返回 Skill 列表
extension
分类: 开发与工程无需 API Key

fortify-scdast

ScanCentral DAST MCP工具指南。运行动态应用程序安全测试(DAST)扫描,列出和过滤扫描结果,发现扫描设置和策略,并使用Fortify ScanCentral DAST管理Web应用程序的安全扫描。触发条件包括任何提到'SC-DAST'、'ScanCentral DAST'、'DAST扫描'、'Web扫描'、'动态扫描'、'运行DAST扫描'、'列出扫描'等类似请求,表明与SC-DAST进行动态应用程序安全扫描的交互。

person作者: jakexiaohubgithub

Fortify ScanCentral DAST Skill

Fortify ScanCentral DAST (SC-DAST) integration via Model Context Protocol (MCP).

When to Use This Skill

  • Run dynamic application security testing (DAST) scans
  • List and monitor scan status
  • Pause/resume running scans
  • Discover available scan settings and policies
  • Manage scan sensors and sensor pools
  • View scan results in SSC using SSC skill

Available MCP Tools

Only key MCP tools for SC-DAST are listed here.

| Tool | Description | When to Use | |------|-------------|-------------| | fcli_sc_dast_scan_start | Start a new DAST scan | When user wants to run/start a DAST scan | | fcli_sc_dast_scan_list | List all scans | List scans, check scan status | | fcli_sc_dast_scan_get | Get details of a specific scan | Get scan details by ID | | fcli_sc_dast_scan_wait_for | Wait for scan condition | Monitor scan until condition met | | fcli_sc_dast_scan_pause | Pause a running scan | Temporarily stop a scan | | fcli_sc_dast_scan_resume | Resume a paused scan | Continue a paused scan | | fcli_sc_dast_scan_settings_list | List available scan settings | Discover scan configuration options | | fcli_sc_dast_scan_settings_get | Get scan settings details | Get specific settings by ID or CICD token | | fcli_sc_dast_scan_policy_list | List available scan policies | Discover scan policy options | | fcli_sc_dast_scan_policy_get | Get scan policy details | Get specific policy by name or ID | | fcli_sc_dast_sensor_list | List available sensors | View available scan sensors | | fcli_sc_dast_sensor_get | Get sensor details | View specific sensor information | | fcli_sc_dast_sensor_enable | Enable a sensor | Enable a disabled sensor | | fcli_sc_dast_mcp_job | Background job handler | Handle pagination and background tasks | | fcli_ssc_session_list | Check SSC session status | Verify authentication before operations |

Parameter Formats

| Parameter | Format | Example | |-----------|--------|---------| | --settings | CICD token or ID | "MY_SCAN_SETTINGS" or "12345" | | --name | Scan name | "MyApp Security Scan" | | --policy | Policy name or ID | "Standard" or "67890" | | --overwrite-scan-mode | Boolean flag | true (mutually exclusive with priority-scan-mode) | | --priority-scan-mode | Boolean flag | true (mutually exclusive with overwrite-scan-mode) | | --login-macro | Login macro ID | "98765" (optional) | | --server-queries | Key-value filtering | "status=Running" or "name~MyApp" | | --until | Wait condition | "status=Complete" or "status=Failed" | | --while | Wait condition (inverse) | "status=Running" | | scanIds | Scan identifier(s) | Single or multiple scan IDs from list/get operations | | query | Client-side filtering (SpEL) | "status == 'Complete' && scanVersion > 5" |

Authentication

SC-DAST uses SSC authentication (simplest authentication model - no additional tokens required).

Session Check: Always check SSC session status before SC-DAST operations:

Tool: fcli_ssc_session_list
Parameters: { "refresh-cache": true }

If session expired or missing:
Ask the user to run this command locally in their terminal:

fcli ssc session login --url <SSC_URL> -u <username> -p <password>

Default Session:
If the user doesn't specify a session name, inform them that the default session will be used.

Domain-Specific Guidance: Scan Workflow

SC-DAST scans follow a straightforward workflow:

Phase 1: Discovery

  • List available scan settings: scan_settings_list
  • List available scan policies: scan_policy_list
  • Get specific settings/policy details if needed

Phase 2: Start Scan

Start scan with required parameters:

  • --settings (CICD token or ID) - REQUIRED
  • --name (scan name) - REQUIRED
  • --policy (policy name or ID) - optional
  • --overwrite-scan-mode or --priority-scan-mode (boolean flags, mutually exclusive) - optional
  • --login-macro (login macro ID) - optional

Important: Ensure scan settings are configured to automatically publish results to SSC. This is typically configured in the scan settings by the administrator.

Phase 3: Monitor Progress

  • Use scan_wait_for with --until: "status=Complete" or --while: "status=Running"
  • Use scan_list with --server-queries: "status=Running" to check all running scans
  • Unique capability: Use scan_pause and scan_resume to control scan execution

Phase 4: View Results

  • Once scan completes, findings automatically appear in SSC (if configured)
  • View findings in SSC using SSC skill (fcli_ssc_issue_list, fcli_ssc_issue_count, etc.)

Filtering

SC-DAST supports both server-side and client-side filtering:

Server-Side Filtering (Preferred): Use --server-queries parameter with key-value pairs:

  • Single filter: "status=Running"
  • Contains match: "name~MyApp"
  • Multiple filters: "status=Complete,name~Security"

Client-Side Filtering: Use query parameter for complex filtering with SpEL (Spring Expression Language):

query: "status == 'Complete' && scanVersion > 5"

When to use each:

  • Server-side (--server-queries): Preferred for performance, especially with large datasets
  • Client-side (query): Use for complex expressions not supported by server-side filtering

Pagination

SC-DAST uses job_token-based pagination (same pattern as SSC):

When pagination.totalRecords is null:

  1. Call fcli_sc_dast_mcp_job:

    Parameters: {
      "operation": "wait",
      "job_token": "<job_token from previous response>"
    }
    
  2. After job completes, retry the original list call to get results.

Example Flow:

1. Call scan_list → Response has totalRecords: null, job_token: "abc123..."
2. Call mcp_job with operation: "wait", job_token: "abc123..."
3. Retry scan_list → Response now has full results with totalRecords populated

Error Recovery

| Error | Recovery | |-------|----------| | "Session expired" | Ask user to run fcli ssc session login locally | | "Scan settings not found" | Use scan_settings_list to discover available settings | | "Policy not found" | Use scan_policy_list to discover available policies | | "Scan cannot be completed" | Check scan status - may still be running or failed | | "No sensors available" | Use sensor_list to check available sensors | | "Import failed" | Ensure scan was completed and published first | | Pagination totalRecords: null | Use mcp_job with operation: "wait" and job_token |

Decision Tree: Choosing the Right Approach

| User Intent | Action | |-------------|--------| | "Run a DAST scan" | Discovery workflow: scan_settings_listscan_policy_listscan_startscan_wait_for → view results in SSC | | "List scans" / "Show my scans" | scan_list with optional --server-queries filtering | | "Check scan status" | scan_get with scan ID OR scan_list with --server-queries: "name~<scan-name>" | | "Pause a scan" | scan_pause with scan ID | | "Resume a scan" | scan_resume with scan ID | | "View scan results" | Use SSC skill: fcli_ssc_issue_list or fcli_ssc_issue_count | | "Find scan settings" | scan_settings_list optionally with server-queries | | "Check sensors" | sensor_list to view available sensors |

Best Practices

DO:

  • ✅ Always check SSC session status before SC-DAST operations
  • ✅ Use discovery workflow (list settings/policies) before starting scans
  • ✅ Use server-side filtering (--server-queries) for performance
  • ✅ Ensure scan settings are configured to auto-publish to SSC
  • ✅ Use scan_wait_for with appropriate timeouts for long-running scans (typically 30min-2hrs)
  • ✅ Leverage pause/resume capability for scan management
  • ✅ Use CICD token for scan settings in automation scenarios
  • ✅ Handle pagination with job_token pattern when totalRecords is null
  • ✅ View results in SSC using SSC skill after scan completes

DO NOT:

  • ❌ Start scans without verifying settings/policy existence
  • ❌ Use client-side filtering for large datasets (prefer --server-queries)
  • ❌ Poll scan status manually - use scan_wait_for instead
  • ❌ Forget to verify scan settings are configured to publish to SSC
  • ❌ Ignore pagination when totalRecords is null

References

Example Workflows

| Workflow | Use When User Says... | |----------|----------------------| | Run DAST Scan | "run scan", "start DAST scan", "web scan", "scan my application", "dynamic scan" | | List and Monitor Scans | "list scans", "monitor progress", "check status", "pause scan", "resume scan" | | Discover Scan Settings and Policies | "scan settings", "scan policy", "configuration", "CICD token", "available settings" |

External Resources