docs: documentacion de seguridad y requisitos en reglas operativas
Cambios en documentacion para completar fase 7 del issue 0019: - CLAUDE.md: nueva seccion Seguridad con resumen de protecciones - create_agent.md: requisito obligatorio de seccion anti-injection en system prompts + item en checklist de verificacion - create_tool.md: nueva seccion Seguridad con requisitos para tools que hacen I/O (deny-by-default, path traversal, SSRF, command injection, rate limiting) - docs/security.md: documentacion completa de las 5 capas de defensa (sanitizacion, prompt hardening, tool validation, rate limiting, filesystem isolation) con ejemplos de configuracion Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -110,6 +110,7 @@ Escribir el system prompt completo. Debe incluir:
|
||||
- **Capacidades**: qué puede hacer (incluir tools si `tool_use.enabled: true`)
|
||||
- **Estilo**: idioma, tono, formato de respuestas
|
||||
- **Restricciones**: qué NO debe hacer
|
||||
- **Seguridad** (obligatorio): copiar la seccion de `.claude/templates/security-prompt.md` al final del prompt. Esta seccion protege contra prompt injection.
|
||||
|
||||
Ejemplo de referencia: `agents/asistente-2/prompts/system.md`
|
||||
|
||||
@@ -152,6 +153,7 @@ Checklist a verificar antes de considerar el agente listo:
|
||||
- [ ] `cmd/launcher/main.go` tiene import + entry en rulesRegistry con el mismo ID
|
||||
- [ ] `.env` contiene: `MATRIX_TOKEN_<NORM>`, `MATRIX_PASSWORD_<NORM>`, `PICKLE_KEY_<NORM>`, `SSSS_RECOVERY_KEY_<NORM>`
|
||||
- [ ] `prompts/system.md` tiene contenido real (no el stub)
|
||||
- [ ] `prompts/system.md` incluye la seccion de seguridad anti-injection (de `.claude/templates/security-prompt.md`)
|
||||
- [ ] Si `tool_use.enabled: true`, el prompt menciona las tools disponibles
|
||||
|
||||
## Arranque y verificación
|
||||
|
||||
@@ -64,3 +64,15 @@ Asegurarse de que `llm.tool_use.enabled: true` y la sección relevante de `tools
|
||||
- **Usar `getString()`**: helper del package para extraer strings de args de forma segura.
|
||||
- **Param types válidos**: "string", "number", "integer", "boolean", "object", "array" (JSON Schema types).
|
||||
- **Descripción clara**: el LLM decide cuándo usar la tool basándose en el Description del Def.
|
||||
|
||||
## Seguridad — requisitos obligatorios
|
||||
|
||||
Toda tool que haga I/O externo debe implementar protecciones:
|
||||
|
||||
- **Deny-by-default**: si la tool tiene una allowlist (AllowedPaths, AllowedDomains, AllowedCommands, etc.), un allowlist vacio debe denegar todo, no permitir todo.
|
||||
- **Path traversal**: para tools que aceptan rutas de archivo, resolver symlinks con `filepath.EvalSymlinks` y validar que el path resuelto este dentro de los paths permitidos. Proteger contra `../` y prefix confusion.
|
||||
- **SSRF protection**: para tools que hacen HTTP, resolver la IP del dominio antes de conectar y bloquear IPs privadas (127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16).
|
||||
- **Command injection**: para tools que ejecutan comandos, validar sintaxis shell (no permitir pipes `|`, subshells `$()`, redirects `>`, chains `&&`/`||`/`;`) a menos que esten explicitamente permitidos.
|
||||
- **Rate limiting**: las tools estan sujetas a rate limiting por room via `security.tool_rate_limit` en el config. No se necesita implementar nada en la tool — el registry lo maneja automaticamente.
|
||||
|
||||
Referencia de implementaciones: `tools/file/`, `tools/ssh/`, `tools/http/`.
|
||||
|
||||
Reference in New Issue
Block a user