Auditoría de seguridad enterprise con análisis estático (AST), mapeo de fronteras de confianza, y detección de vulnerabilidades (SQLi, XSS, Prompt Injection, RCE). Integra marco metacognitivo de 7 fases, vector store local para patrones de vulnerabilidad, HITL para hallazgos críticos, y audit trails inmutables. Cumple NIST CSF 2.0, ISO 42001, ISO 27001, EU AI Act. Ejecución 100% local en WSL2 con soberanía de datos. Usar cuando se solicite revisión de seguridad, compliance, o análisis de código antes de deployment. No usar para formateo de código general.
FacundoSu19860 スター2026/03/29
職業
カテゴリ
セキュリティ
スキル内容
🎯 Propósito
Ejecutar auditorías de seguridad de grado enterprise sobre código fuente local, scripts de mods, configuraciones, y pipelines de IA. Combina análisis estático (AST), mapeo de fronteras de confianza (Trust Boundaries), y razonamiento metacognitivo estructurado para identificar vulnerabilidades antes de la ejecución, garantizando soberanía de datos y cumplimiento normativo.
📋 Cuándo Usar Esta Skill
✅ Casos de Uso Apropiados
Escenario
Prioridad
Justificación
Revisión de seguridad antes de deployment
🔴 Alta
Previene vulnerabilidades en producción
Análisis de scripts con eval, exec, o llamadas externas
🔴 Alta
Riesgo de RCE/inyección crítico
Validación de manejo de secretos/credenciales
🔴 Alta
Prevención de data leaks
Auditoría de compliance (NIST, ISO, GDPR)
関連 Skill
🔴 Alta
Requerimiento regulatorio
Análisis de integración con APIs externas
🟠 Media
Validación de trust boundaries
Revisión de código de mods (ESP/ESM scripts)
🟠 Media
Seguridad en ecosistema Skyrim
❌ Cuándo NO Usar
Formateo o refactorización de código sin requisitos de seguridad
Análisis de código de terceros sin acceso al fuente completo
Cuando se requiere ejecución dinámica sin sandbox
Problemas de performance no relacionados con seguridad
🏗️ Arquitectura de Auditoría
SKYCLAW PURPLE AUDITOR CYCLE v2.1 │
│ (7-Phase Metacognitive + AST Analysis)
┌──────────────────────────────────────────────────────────────────────┐
│ FASE 1: CONTEXTUAL ANALYSIS │
│ - Mapeo de trust boundaries │
│ - Identificación de activos críticos │
│ - Evaluación de riesgo inicial │
└──────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ FASE 2: DECOMPOSITION │
│ - División por módulos/componentes │
│ - Grafo de dependencias │
│ - Identificación de puntos de entrada/salida │
└──────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ FASE 3: RESOLUTION (AST + Vector Match) │
│ ┌────────────────────┐ ┌────────────────────┐ │
│ │ AST Guardian │ │ Vector Store │ │
│ │ - Parseo Python │ │ - Patrones CWE │ │
│ │ - Grafo de flujo │ │ - Data flow │ │
│ │ - Data flow │ │ - Historical hits │ │
│ └────────────────────┘ └────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ FASE 4: VERIFICATION (5 Layers) │
│ - Logical: Consistencia de hallazgos │
│ - Factual: Validación contra CVE/CWE database │
│ - Completeness: Cobertura de reglas OWASP │
│ - Bias: Falsos positivos/negativos │
│ - Security: PII/secret detection en hallazgos │
└──────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ FASE 5: SYNTHESIS │
│ - Agregación ponderada de hallazgos │
│ - Confidence scoring por vulnerabilidad │
│ - Priorización por riesgo (CVSS 4.0) │
└──────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ FASE 6: REFLECTION + HITL DECISION │
│ - ¿Confianza ≥ 0.85? → Accept │
│ - ¿Confianza 0.70-0.85? → Iterate │
│ - ¿Confianza < 0.70 o CRITICAL? → HITL Escalation │
└──────────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ FASE 7: DOCUMENTATION (SARIF + Audit Trail) │
│ - Export SARIF v2.1 para SIEM │
│ - Audit trail inmutable en SQLite (WAL mode) │
│ - Knowledge artifact para aprendizaje futuro │
└──────────────────────────────────────────────────────────────────────┘
🔧 Instrucciones de Ejecución
1. Inicialización de Auditoría
# Inicializar auditor con configuración de soberanía local
auditor = SkyclawPurpleAuditor(
execution_mode="local_wsl2",
sandbox_profile="gvisor_strict",
vector_store="qdrant_local",
enable_hitl=True,
compliance_frameworks=["NIST_CSF_2.0", "ISO_27001", "EU_AI_ACT"]
)
# Ejecutar auditoría
result = await auditor.audit(
target_path="/path/to/code",
audit_type="comprehensive", # o "quick", "compliance", "pre-deployment"
context={
"risk_level": "high",
"data_sensitivity": "pii",
"external_integrations": True
}
)
# Cuando se activa, pausa y espera aprobación humana
if hitl_triggered:
await auditor.human_approval_gateway.request_approval(
session_id=audit_session_id,
findings=critical_findings,
recommended_actions=["block_deployment", "require_remediation"],
timeout_minutes=60
)
Reglas de Seguridad (Trail of Bits First Principles)
Trust Boundary Mapping
# Identificar fronteras de confianza antes de análisis
trust_boundaries = {
"external_input": ["API endpoints", "user input", "file uploads", "env vars"],
"internal_trusted": ["core modules", "validated functions", "sandboxed code"],
"external_output": ["network calls", "file writes", "logs", "database"]
}
# Regla: Todo dato cruzando frontera debe ser validado/sanitizado
for boundary_crossing in identify_boundary_crossings(ast_graph):
if not has_validation(boundary_crossing):
flag_vulnerability("TRUST_BOUNDARY_VIOLATION")
Whys/Hows Analysis
# Para cada hallazgo crítico, aplicar 5 Whys
def root_cause_analysis(finding):
why_chain = []
current_why = finding.description
for i in range(5):
why = ask_why(current_why)
why_chain.append(why)
current_why = why
if is_root_cause(why):
break
return {
"finding": finding,
"why_chain": why_chain,
"root_cause": why_chain[-1],
"systemic_fix": recommend_systemic_fix(why_chain)
}
Formato de Salida de Hallazgos
ID
Severidad
Tipo
Vector de Ataque
CWE/NIST
Confidence
Ubicación
Parche Propuesto
VULN-001
🔴 CRITICAL
SQL Injection
User input → DB query
CWE-89 / NIST PR.DS-5
0.92
db.py:45
Usar parametrized queries
VULN-002
🟠 HIGH
Prompt Injection
External LLM input
CWE-94 / NIST PR.AC-4
0.85
llm_router.py:112
Implement input sanitization + HITL
VULN-003
🟡 MEDIUM
Secret Exposure
Hardcoded API key
CWE-798 / NIST PR.DS-7
0.95
config.py:8
Mover a secret manager
VULN-004
🟢 LOW
Missing Logging
Auth failure not logged
CWE-778 / NIST DE.CM-1
0.78
auth.py:67
Add structured logging
Métricas de Calidad de Auditoría
Métrica
Target
Medición
False Positive Rate
< 5%
Validación post-remediation
False Negative Rate
< 2%
Penetration testing validation
Confidence Calibration
Brier Score ≤ 0.10
Historical accuracy tracking
Audit Coverage
≥ 95%
Lines of code analyzed / total
HITL Activation Rate
< 15%
Para hallazgos high/critical
Time to Complete
< 5 min / 10K LOC
Performance benchmark
🔗 Integración con Sky-Claw Ecosystem
Metacognitive Framework Integration
# La auditoría usa el framework metacognitivo de 7 fases
from src.metacognitive_framework import MetacognitiveReasoningFramework
class SkyclawPurpleAuditor:
def __init__(self, config: AuditConfig):
self.config = config
self.metacognitive_framework = MetacognitiveReasoningFramework(
domain="security_audit",
execution_mode=config.execution_mode,
enable_hitl=config.enable_hitl
)
self.vector_store = config.vector_store
self.ast_guardian = ASTGuardian(sandbox=config.sandbox_profile)
async def audit(self, target_path: str, context: Dict) -> AuditResult:
# Ejecutar ciclo metacognitivo completo
result = await self.metacognitive_framework.execute(
problem=f"Auditar seguridad de {target_path}",
context={
**context,
"audit_type": "security",
"target_path": target_path,
"compliance_frameworks": self.config.compliance_frameworks
}
)
return AuditResult.from_metacognitive_result(result)
SQLite Audit Trail (WAL Mode)
# Registro silente en base de datos local
async def persist_audit_finding(self, finding: AuditFinding) -> None:
"""
Persiste hallazgo en SQLite con WAL mode para concurrencia.
Los registros son INMUTABLES una vez creados.
"""
async with self.db_manager.get_thread_local_connection() as conn:
await conn.execute("PRAGMA journal_mode=WAL;")
await conn.execute("PRAGMA foreign_keys=ON;")
async with conn.transaction(): # BEGIN IMMEDIATE / COMMIT
await conn.execute("""
INSERT INTO audit_findings (
session_id, finding_id, severity, cwe_id, nist_control,
confidence, file_path, line_number, status, created_at
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
""", (
self.session_id,
finding.id,
finding.severity.value,
finding.cwe_id,
finding.nist_control,
finding.confidence,
finding.file_path,
finding.line_number,
"open",
datetime.now(timezone.utc).isoformat()
))