An ethical hacking agent that performs security assessments including network scanning, web vulnerability analysis, SSL/TLS testing, phishing email detection, and CVE exploitation. Uses an LLM-driven planning-execution-analysis cycle.
Critical gaps across all dimensions. Tool names lack action verbs (nmap, nikto, testssl are bare commands, not verb_noun patterns). Descriptions are present but minimal (10-50 chars), below the 50-200 char LLM-optimized baseline. Input schemas exist but lack depth: parameters have types and basic descriptions, but no enums, ranges, or validation guidance. Output schemas are completely undocumented, LLMs cannot infer what these tools return. Error handling is absent from tool definitions. The exploit_tool is particularly dangerous: marked DESTRUCTIVE but has no confirmation pattern, no dry-run option, and executes arbitrary code via shell=True without sanitization. No tool declares permissions or security scopes. Composition is poor: exploit_tool conflates searching and executing, violating single-responsibility principle.
Busca y ejecuta exploits para un CVE específico.
Ejecuta un escaneo de vulnerabilidades web con Nikto.
Ejecuta un escaneo de red con Nmap.
Analiza el contenido de un correo electrónico en busca de phishing.
Ejecuta un análisis SSL/TLS en el objetivo y puerto especificados.
Tool names do not follow verb_noun convention. 'nmap', 'nikto', 'testssl', 'exploit_tool' are bare commands or nouns, not action verbs. LLMs cannot infer intent from names alone. Should be: scan_network, scan_web_vulnerabilities, analyze_ssl_tls, search_and_execute_exploit.
No output schemas documented. Tools return (stdout, stderr) tuples but LLMs cannot parse unstructured text. Must document: what fields are returned, what structure, what data types. Nmap returns raw text; phishing_analyzer returns analysis results, both need structured schemas.
exploit_tool marked DESTRUCTIVE but has no confirmation pattern, dry-run option, or permission gate. Executes arbitrary Python code via subprocess.run(shell=True) without input sanitization. CVE ID is passed directly to shell command, enabling command injection. Critical security vulnerability.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | <=2025-11-25 | v2 |
Descriptions are too short (10-50 chars, below 50-char minimum). 'Ejecuta un escaneo de red con Nmap' (34 chars) lacks context on when to use, what it returns, prerequisites. Must expand to 50-200 chars with WHAT, WHEN, and WHAT-IT-RETURNS guidance.
No error handling guidance in tool definitions. Tools return (None, error_message) on failure, but LLMs cannot determine if error is retryable, user-fixable, or fatal. Must categorize errors and provide recovery steps (e.g., 'Timeout, retry with longer timeout or smaller target range').