skills/devsecops/vuln-defectdojo/SKILL.md
Vulnerability management and findings aggregation using DefectDojo. Centralizes security findings from all SecOpsAgentKit scanners (Semgrep, Bandit, ZAP, Trivy, Grype, Gitleaks, Nuclei, Checkov, Horusec) into a unified platform with automatic deduplication, SLA tracking, risk-based prioritization, and compliance reporting. Use when: (1) Aggregating findings from multiple scanners across products and pipelines, (2) Tracking remediation status and SLA compliance against policy thresholds, (3) Deduplicating overlapping findings across security tools, (4) Generating vulnerability reports for compliance audits (SOC2, PCI-DSS, GDPR), (5) Managing security debt and vulnerability backlog across teams and applications.
npx skillsauth add agentsecops/secopsagentkit vuln-defectdojoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
DefectDojo aggregates findings from every SecOpsAgentKit scanner into one platform—deduplicating across tools, tracking SLA compliance, and producing compliance-ready reports. It transforms isolated scanner outputs into a managed vulnerability backlog with ownership and remediation history.
Key concepts:
Start DefectDojo locally:
git clone https://github.com/DefectDojo/django-DefectDojo.git
cd django-DefectDojo && docker compose up -d
# Access at http://localhost:8080 — change admin/admin password immediately
Import the first scan result:
pip install requests
./scripts/import_findings.py \
--host http://localhost:8080 \
--api-key <your-api-key> \
--engagement-id 1 \
--scan-type "Semgrep JSON Report" \
semgrep-results.json
Retrieve your API key: DefectDojo UI → User (top-right) → API v2 Key.
Create a Product (once per application) and an Engagement (once per sprint or pipeline):
# Create product
curl -s -X POST "$DD_HOST/api/v2/products/" \
-H "Authorization: Token $DD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "My App", "description": "Main application", "prod_type": 1}'
# Create engagement — use template for full options
curl -s -X POST "$DD_HOST/api/v2/engagements/" \
-H "Authorization: Token $DD_API_KEY" \
-H "Content-Type: application/json" \
-d @assets/defectdojo-engagement-template.json
See assets/defectdojo-engagement-template.json for a full CI/CD engagement template.
# Semgrep (SAST)
./scripts/import_findings.py --host $DD_HOST --api-key $DD_API_KEY \
--engagement-id $EID --scan-type "Semgrep JSON Report" semgrep.json
# Trivy (containers/filesystem)
./scripts/import_findings.py --host $DD_HOST --api-key $DD_API_KEY \
--engagement-id $EID --scan-type "Trivy Scan" trivy.json
# Gitleaks (secrets)
./scripts/import_findings.py --host $DD_HOST --api-key $DD_API_KEY \
--engagement-id $EID --scan-type "Gitleaks Scan" gitleaks.json
# Re-import after fixes — auto-closes resolved findings
./scripts/import_findings.py --reimport --host $DD_HOST --api-key $DD_API_KEY \
--engagement-id $EID --scan-type "Trivy Scan" trivy-new.json
For the complete mapping of every SecOpsAgentKit tool to its DefectDojo parser name and required output format, see references/tool-parser-map.md.
Add an import step after each scanner in any pipeline:
# GitHub Actions — add after each scanner step
- name: Import findings to DefectDojo
env:
DD_HOST: ${{ secrets.DD_HOST }}
DD_API_KEY: ${{ secrets.DD_API_KEY }}
DD_ENGAGEMENT_ID: ${{ secrets.DD_ENGAGEMENT_ID }}
run: |
pip install requests
./scripts/import_findings.py \
--host "$DD_HOST" \
--api-key "$DD_API_KEY" \
--engagement-id "$DD_ENGAGEMENT_ID" \
--scan-type "Semgrep JSON Report" \
semgrep-results.json
Progress:
[ ] 1. Run all applicable scanners; save JSON output for each
[ ] 2. Import each result file with correct --scan-type (see references/tool-parser-map.md)
[ ] 3. Review deduplicated findings in DefectDojo UI: Engagements → Tests → Findings
[ ] 4. Triage: set severity, assign owner, and set SLA due dates
[ ] 5. Risk-accept findings with business justification (required for SOC2/PCI-DSS evidence)
[ ] 6. Re-run scanners after fixes; --reimport to auto-close resolved findings
[ ] 7. Export compliance report: Reports → Generate Report
Work through each step systematically. Check off completed items.
After import in the DefectDojo UI:
pci-req-6.3)importer role. Use security lead role for triage operations. Rotate keys quarterly.docker-compose.override.https.yml).scripts/)references/)assets/)Create one persistent CI/CD engagement per branch. Re-import on every merge to keep a live deduplicated finding list with auto-closure of fixed issues.
Import all scanner outputs at end of sprint into a single time-boxed engagement. Review combined risk posture in one place; assign findings to the next sprint backlog.
Before an audit, filter findings by compliance tag (e.g., pci-dss), include risk acceptances and closure timestamps. Export as the vulnerability management evidence package.
403 Forbidden on importSolution: Verify the API key has importer role or higher. Regenerate at User → API v2 Key. Confirm --host does not include a trailing slash.
Solution: Use --reimport (not a second --import) for subsequent scans of the same tool against the same engagement. Re-import updates existing findings instead of creating new ones.
Solution: Parser names are case-sensitive. Check the exact value in references/tool-parser-map.md. Use curl "$DD_HOST/api/v2/importers/" -H "Authorization: Token $DD_API_KEY" to list all available parsers.
testing
Linux privilege escalation enumeration and attack surface analysis using LinPEAS (Linux Privilege Escalation Awesome Script). Automates post-exploitation discovery of escalation vectors, misconfigurations, and credential exposure on Linux targets. Use when: (1) Enumerating privilege escalation vectors after initial access on a Linux system, (2) Identifying SUID/SGID binaries, sudo misconfigurations, and capability abuses, (3) Hunting for credentials in config files, history, and logs, (4) Detecting container breakout opportunities and writable service files, (5) Mapping kernel exploits and CVE exposure for a target system, (6) Conducting authorized CTF, red team, or penetration test post-exploitation phases.
development
Operational Technology (OT) security assessment using a two-stage methodology: (1) Identification/Discovery of OT devices and protocols, and (2) Vulnerability Assessment using online sources and Metasploit. Use when: (1) Conducting authorized OT/ICS security assessments, (2) Identifying and enumerating OT protocols (Modbus, S7, IEC 104, DNP3, BACnet, EtherNet/IP), (3) Discovering industrial control devices and PLCs, (4) Assessing OT protocol vulnerabilities and security weaknesses, (5) Performing compliance scanning aligned with IEC 62443 standards, (6) Validating network segmentation and access controls in OT environments.
tools
Python-based threat modeling using pytm library for programmatic STRIDE analysis, data flow diagram generation, and automated security threat identification. Use when: (1) Creating threat models programmatically using Python code, (2) Generating data flow diagrams (DFDs) with automatic STRIDE threat identification, (3) Integrating threat modeling into CI/CD pipelines and shift-left security practices, (4) Analyzing system architecture for security threats across trust boundaries, (5) Producing threat reports with STRIDE categories and mitigation recommendations, (6) Maintaining threat models as code for version control and automation.
development
Software Bill of Materials (SBOM) generation using Syft for container images, filesystems, and archives. Detects packages across 28+ ecosystems with multi-format output support (CycloneDX, SPDX, syft-json). Enables vulnerability assessment, license compliance, and supply chain security. Use when: (1) Generating SBOMs for container images or applications, (2) Analyzing software dependencies and packages for vulnerability scanning, (3) Tracking license compliance across dependencies, (4) Integrating SBOM generation into CI/CD for supply chain security, (5) Creating signed SBOM attestations for software provenance.