Skip to main content

vulnerability-assessment

Finding and assessing security vulnerabilities

Informations de source

Dépôt
ffsshhttiikk/opencode-agents-skills
Dernière activité de la source
28 février 2026 à 22:55
Langue détectée de SKILL.md
anglais
Étoiles
3
Forks
2

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
vulnerability-assessment
description
Finding and assessing security vulnerabilities
license
MIT
compatibility
opencode
metadata
{"audience":"developers","category":"security"}
## What I do - Scan for vulnerabilities in systems and applications - Assess vulnerability severity and risk - Prioritize remediation efforts - Verify vulnerability fixes - Maintain vulnerability inventory - Provide remediation guidance ## When to use me When identifying security weaknesses in code, infrastructure, or applications. ## Vulnerability Assessment Process ### Discovery ```python from enum import Enum class VulnerabilityType(Enum): INJECTION = "injection" AUTHENTICATION = "authentication" SENSITIVE_DATA = "sensitive_data" XXE = "xxe" ACCESS_CONTROL = "access_control" MISCONFIGURATION = "misconfiguration" class VulnerabilityScanner: """Automated vulnerability discovery""" def __init__(self): self.findings = [] def scan_web_application(self, url: str) -> list: """Scan web application for vulnerabilities""" vulnerabilities = [] # Check for SQL injection if self._test_sql_injection(url): vulnerabilities.append(self._create_finding( "SQL Injection", VulnerabilityType.INJECTION, "high", "Unsanitized input in database query" )) # Check for XSS if self._test_xss(url): vulnerabilities.append(self._create_finding( "Cross-Site Scripting", VulnerabilityType.INJECTION, "medium", "Unescaped user output" )) # Check for CSRF if self._test_csrf(url): vulnerabilities.append(self._create_finding( "CSRF", VulnerabilityType.ACCESS_CONTROL, "medium", "Missing anti-CSRF token" )) return vulnerabilities def scan_code(self, code: str, language: str) -> list: """Static code analysis""" findings = [] # Check for hardcoded credentials if "password =" in code.lower(): findings.append(self._create_finding( "Hardcoded Credentials", VulnerabilityType.SENSITIVE_DATA, "critical", "Hardcoded password in source" )) # Check for SQL injection risk if "execute(" in code and "f'" in code: findings.append(self._create_finding( "Potential SQL Injection", VulnerabilityType.INJECTION, "high", "String formatting in SQL query" )) return findings def _create_finding(self, name: str, vuln_type: VulnerabilityType, severity: str, description: str) -> dict: return { "name": name, "type": vuln_type.value, "severity": severity, "description": description, "cwe": self._lookup_cwe(name), "cvss": self._calculate_cvss(severity) } ``` ### Assessment ```python class VulnerabilityAssessment: """Assess and prioritize vulnerabilities""" CVSS_SEVERITY = { 9.0: "critical", 7.0: "high", 4.0: "medium", 0.1: "low", 0.0: "info" } def __init__(self): self.vulnerabilities = [] def add_vulnerability(self, vuln: dict): """Add vulnerability to assessment""" vuln["cvss_score"] = self._calculate_cvss_score(vuln) vuln["risk_level"] = self._determine_risk_level(vuln["cvss_score"]) vuln["affected_assets"] = [] vuln["remediation_status"] = "open" self.vulnerabilities.append(vuln) def _calculate_cvss_score(self, vuln: dict) -> float: """Calculate CVSS 3.1 score""" # Simplified CVSS calculation base_score = 0 if vuln.get("severity") == "critical": base_score = 9.5 elif vuln.get("severity") == "high": base_score = 7.5 elif vuln.get("severity") == "medium": base_score = 5.0 else: base_score = 2.5 # Adjust for exploitability if vuln.get("exploitable"): base_score = min(base_score + 0.5, 10.0) return base_score def prioritize(self) -> list: """Sort vulnerabilities by priority""" return sorted( self.vulnerabilities, key=lambda v: (v["risk_level"], v["cvss_score"]), reverse=True ) def get_remediation_sla(self, risk_level: str) -> int: """Get remediation SLA in days""" return { "critical": 7, "high": 30, "medium": 90, "low": 180 }.get(risk_level, 180) ``` ### Remediation Tracking ```python class RemediationTracker: """Track vulnerability remediation""" def __init__(self): self.remediation_queue = [] def create_remediation_task(self, vulnerability: dict, assignee: str) -> dict: """Create remediation task""" task = { "id": f"REM-{len(self.remediation_queue) + 1}", "vulnerability": vulnerability, "assignee": assignee, "status": "in_progress", "created": datetime.now(), "due_date": datetime.now() + timedelta( days=vulnerability.get("sla_days", 30) ), "steps": self._generate_remediation_steps(vulnerability) } self.remediation_queue.append(task) return task def _generate_remediation_steps(self, vuln: dict) -> list: """Generate remediation steps based on vulnerability type""" templates = { "sql_injection": [ "Use parameterized queries", "Implement input validation", "Apply least privilege to database user" ], "xss": [ "Escape output based on context", "Use Content Security Policy", "Implement output encoding" ], "hardcoded_credentials": [ "Remove credentials from code", "Implement secrets management", "Rotate exposed credentials" ] } return templates.get(vuln.get("type"), ["Investigate and fix"]) def verify_remediation(self, task_id: str) -> bool: """Verify vulnerability is fixed""" task = next((t for t in self.remediation_queue if t["id"] == task_id), None) if not task: return False # Re-scan to verify fix # In practice, this would trigger a rescan task["status"] = "verified" task["verified_date"] = datetime.now() return True ``` ### OWASP Top 10 ```python class OWASPAssessment: """OWASP Top 10 vulnerability checks""" TOP_10 = [ "A01:2021-Broken Access Control", "A02:2021-Cryptographic Failures", "A03:2021-Injection", "A04:2021-Insecure Design", "A05:2021-Security Misconfiguration", "A06:2021-Vulnerable Components", "A07:2021-Authentication Failures", "A08:2021-Software Data Integrity Failures", "A09:2021-Security Logging Failures", "A10:2021-Server-Side Request Forgery" ] def check_access_control(self, app) -> dict: """Check for broken access control""" checks = [ { "check": "Directory traversal", "vulnerable": self._test_directory_traversal(app), "remediation": "Validate and sanitize file paths" }, { "check": "IDOR", "vulnerable": self._test_idor(app), "remediation": "Implement object-level authorization" }, { "check": "Privilege escalation", "vulnerable": self._test_privilege_escalation(app), "remediation": "Verify user permissions on each request" } ] return { "category": self.TOP_10[0], "findings": [c for c in checks if c["vulnerable"]], "overall_status": "pass" if not any(c["vulnerable"] for c in checks) else "fail" } ```
Voir sur GitHub