Skill v1.0.1
currentAutomated scan100/100+4 new
name: vulnerability-scanning description: Scan systems and dependencies for CVEs and security vulnerabilities. category: security risk: offensive source: https://github.com/BagelHole/DevOps-Security-Agent-Skills source_repo: BagelHole/DevOps-Security-Agent-Skills source_type: community date_added: '2026-09-20' license: MIT license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE compatibility: Requires the relevant security tooling (scanners, vault CLIs) and an authorized scope for any active assessment. Docs-only; helper scripts and templates not bundled. metadata: author: devops-skills version: '1.0'
⚠️ AUTHORIZED USE ONLYThis skill is for educational purposes or authorized security assessments only.You must have explicit, written permission from the system owner before using this tool.Misuse of this tool is illegal and strictly prohibited.
Mandatory confirmation gateBefore running any command that probes, exploits, changes, persists on, extracts data from, or attempts credential access against a target:1. Ask the user to state the exact target URL, IP, account, or resource.2. Ask the user to confirm written authorization and the permitted scope.3. Show the exact command(s) and explain their expected effect.4. Wait for explicit confirmation in the current conversation.Without that confirmation, remain read-only and provide defensive guidance only. Prefer a sandbox, disposable VM, or controlled lab.
Vulnerability Scanning
Identify and prioritize security vulnerabilities across infrastructure and applications.
When to Use This Skill
Use this skill when:
- Performing security assessments
- Implementing vulnerability management programs
- Meeting compliance requirements
- Triaging and prioritizing remediation
- Scanning infrastructure for known CVEs
Prerequisites
- Access to scanning tools
- Network access to targets
- Appropriate authorization
Vulnerability Scanning Tools
| Tool | Type | Best For | |
|---|---|---|---|
| Nessus | Commercial | Enterprise scanning | |
| OpenVAS | Open Source | Free alternative | |
| Qualys | Cloud SaaS | Large scale | |
| Nexpose/InsightVM | Commercial | Asset management | |
| Nuclei | Open Source | Template-based |
OpenVAS Setup
Docker Deployment
The scanner container below is not a complete Greenbone management/web stack. Do not expect a web UI or universal admin/admin credentials from it. Use the current official Community Container deployment, restrict bindings, initialize credentials privately and verify all component/feed health before scans. The legacy OMP examples below illustrate intent only; use the installed GMP tooling and never pass real passwords in command arguments.
# Run OpenVAS containerdocker run -d --name openvas \-p 443:443 \-v openvas-data:/data \greenbone/openvas-scanner# Access web UI at https://localhost# Default credentials: admin/admin
Scanning Commands
# Create targetomp -u admin -w admin --xml='<create_target><name>Web Servers</name><hosts>192.168.1.0/24</hosts></create_target>'# Create taskomp -u admin -w admin --xml='<create_task><name>Weekly Scan</name><target id="target-uuid"/><config id="daba56c8-73ec-11df-a475-002264764cea"/></create_task>'# Start taskomp -u admin -w admin --xml='<start_task task_id="task-uuid"/>'# Get resultsomp -u admin -w admin --xml='<get_results task_id="task-uuid"/>'
Nessus
API Usage
import requestsimport timeclass NessusScanner:def __init__(self, url, access_key, secret_key):self.url = urlself.headers = {'X-ApiKeys': f'accessKey={access_key}; secretKey={secret_key}','Content-Type': 'application/json'}def create_scan(self, name, targets, template='basic'):"""Create a new scan."""templates = self.get('/editor/scan/templates')template_uuid = next(t['uuid'] for t in templates['templates']if t['name'] == template)payload = {'uuid': template_uuid,'settings': {'name': name,'text_targets': targets,'enabled': True}}return self.post('/scans', payload)def launch_scan(self, scan_id):"""Start a scan."""return self.post(f'/scans/{scan_id}/launch')def get_results(self, scan_id):"""Get scan results."""return self.get(f'/scans/{scan_id}')def export_report(self, scan_id, format='pdf'):"""Export scan report."""payload = {'format': format}response = self.post(f'/scans/{scan_id}/export', payload)file_id = response['file']# Wait for exportfor attempt in range(120):status = self.get(f'/scans/{scan_id}/export/{file_id}/status')if status['status'] == 'ready':breaktime.sleep(5)else:raise TimeoutError('Export not ready; retain file_id before retrying')return self.get(f'/scans/{scan_id}/export/{file_id}/download')def get(self, path):response = requests.get(f'{self.url}{path}', headers=self.headers, timeout=30)response.raise_for_status()return response.json()def post(self, path, data=None):response = requests.post(f'{self.url}{path}', json=data, headers=self.headers, timeout=30)response.raise_for_status()return response.json()# Usagescanner = NessusScanner('https://nessus:8834', 'access-key', 'secret-key')scan = scanner.create_scan('Weekly Infrastructure Scan', '10.0.0.0/24')scanner.launch_scan(scan['scan']['id'])
Nuclei
Installation
# Install nucleigo install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest# Or download binarywget https://github.com/projectdiscovery/nuclei/releases/latest/download/nuclei_linux_amd64.zipunzip nuclei_linux_amd64.zip
Basic Scanning
# Update templatesnuclei -update-templates# Scan single targetnuclei -u https://example.com# Scan multiple targetsnuclei -l targets.txt# Scan with specific templatesnuclei -u https://example.com -t cves/nuclei -u https://example.com -t vulnerabilities/# Scan with severity filternuclei -u https://example.com -s critical,high# Output formatsnuclei -u https://example.com -o results.txtnuclei -u https://example.com -json -o results.json
Custom Templates
# custom-check.yamlid: custom-admin-panelinfo:name: Admin Panel Detectionauthor: security-teamseverity: infotags: recon,panelrequests:- method: GETpath:- "{{BaseURL}}/admin"- "{{BaseURL}}/administrator"- "{{BaseURL}}/wp-admin"matchers-condition: ormatchers:- type: wordwords:- "admin"- "login"condition: and- type: statusstatus:- 200- 301- 302
The Nessus class is illustrative: configure a trusted certificate/CA (never disable verification), check terminal error states, and download report bytes separately rather than calling JSON decoding on a PDF. Keep API keys and report contents out of logs.
CVSS Scoring
Severity Levels
| Score | Rating | Response Time | |
|---|---|---|---|
| 9.0-10.0 | Critical | 24 hours | |
| 7.0-8.9 | High | 7 days | |
| 4.0-6.9 | Medium | 30 days | |
| 0.1-3.9 | Low | 90 days |
Prioritization Factors
prioritization_criteria:critical_factors:- Internet-facing systems- Systems with sensitive data- Active exploitation in the wild- Authentication bypasshigh_factors:- Remote code execution- Privilege escalation- Data exfiltration riskcontext_adjustments:- Compensating controls in place (-1)- No direct exposure (-1)- Critical business system (+1)- Compliance requirement (+1)
Vulnerability Management Process
Workflow
vulnerability_workflow:discovery:- Run scheduled scans- Import third-party findings- Correlate with asset inventoryanalysis:- Validate findings- Remove false positives- Assess business impact- Prioritize by risk scoreremediation:- Assign to owners- Track SLA compliance- Verify fixes- Document exceptionsreporting:- Executive summaries- Technical details- Trend analysis- Compliance metrics
Response-time targets are organizational examples, not universal CVSS requirements. Preserve the original CVSS vector/version and describe business priority separately instead of arithmetically modifying the score. Compliance criteria require the current applicable standard and qualified review.
Tracking Template
This ticket is fictional; replace CVE, product/version and remediation with a verified vendor advisory. Do not infer that the illustrated CVE identifies the described Struts issue.
## Vulnerability Ticket**ID:** VULN-2024-001**CVE:** CVE-2024-12345**CVSS:** 9.8 (Critical)**Affected System:** web-server-01### DescriptionRemote code execution vulnerability in Apache Struts.### ImpactAttacker can execute arbitrary code on the server.### Remediation1.Update Apache Struts to version 2.5.332.Apply WAF rule as temporary mitigation### Timeline-Discovered: 2024-01-15-SLA Due: 2024-01-16-Remediated: 2024-01-15### Evidence-Scan report: [link]-Screenshot: [link]
CI/CD Integration
GitHub Actions
name: Vulnerability Scanon:schedule:- cron: '0 2 * * *'push:branches: [main]jobs:scan:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- name: Run Nucleiuses: projectdiscovery/nuclei-action@mainwith:target: https://example.comtemplates: cves/output: nuclei-results.txt- name: Check for critical findingsrun: |if grep -q "critical" nuclei-results.txt; thenecho "Critical vulnerabilities found!"exit 1fi- name: Upload resultsuses: actions/upload-artifact@v4with:name: vulnerability-reportpath: nuclei-results.txt
Compliance Scanning
CIS Benchmark Scan
# Using OpenSCAPoscap xccdf eval \--profile xccdf_org.ssgproject.content_profile_cis \--results results.xml \--report report.html \/usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml
PCI DSS Scanning
pci_scan_requirements:quarterly:- External vulnerability scan (ASV)- Internal vulnerability scanafter_changes:- Significant infrastructure changes- New system deploymentspassing_criteria:- No vulnerabilities rated 4.0+ (CVSS)- False positives documented- Scan completed within 90 days
Common Issues
Issue: False Positives
Problem: Scanner reports non-existent vulnerabilities Solution: Validate manually, tune scanner, maintain exception list
Issue: Incomplete Coverage
Problem: Not all assets scanned Solution: Update asset inventory, verify credentials, check network access
Issue: Scan Impact
Problem: Scans affecting production systems Solution: Schedule during maintenance windows, use authenticated scans
Best Practices
- Maintain accurate asset inventory
- Schedule regular scan cadence
- Validate findings before remediation
- Track metrics (MTTR, aging)
- Integrate with ticketing systems
- Document exceptions properly
- Use risk-based prioritization
- Automate where possible
Related Skills
- sast-scanning (
sast-scanning) - Code analysis - container-scanning (
container-scanning) - Container security - cis-benchmarks (
cis-benchmarks) - Compliance benchmarks
Limitations
- Apply guidance only within authorized scope; test destructive steps in non-production first.
- Docs-only import: upstream scripts and templates not bundled.
Example
# Read-only first: inventory before any active step.which <tool> && <tool> --help | head -n 20
Adapted from BagelHole/DevOps-Security-Agent-Skills (MIT); frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance. Docs-only import: helper scripts and templates not bundled.