Defensas activas.
El runtime V++ aplica capas de seguridad verificables al servir cualquier sitio. Cada capa está implementada en V++ puro o en primitivas propias del intérprete. Este documento es público y auditable. A · todas las defensas activas
1. Modelo de amenazas considerado
| Vector | Mitigación | Estado |
|---|---|---|
| Inyección de código vía body HTTP | red_analizar_peticion parsea texto crudo, no evalúa | activa |
Inyección de comandos via archivo_* | Modo VPP_SAFE=1 desactiva todas las primitivas FS | activa |
| Escape de path traversal | archivo_leer(DIR + nombre) con DIR constante; nombres no provienen del usuario | activa |
| XSS reflejado | No se incrusta entrada del usuario en HTML sin escapar | activa |
| CSRF en /login | Cookie SameSite=Lax + sin permitir GET con efectos | activa |
| Robo de cookie de sesión | HttpOnly impide acceso JS; SameSite=Lax impide envío cross-site | activa |
| Brute force al login | Token único compartido + form sin enumeración de cuentas | activa |
| Crash del proceso → caída del sitio | KeepAlive en LaunchAgent + try/except por petición | activa |
| Información en respuesta de error | red_responder_http 500 no expone stack al cliente público | activa |
| Sniffing en tránsito | Tunnel Cloudflare → TLS 1.3 obligatorio | activa |
| Cabeceras de seguridad faltantes | Inyectadas por red_responder_http | activa |
2. Defensas implementadas en V++
2.1 Sesión y autenticación
- Login con email + password verificados contra constantes del programa servidor.
- Cookie de sesión con atributos
HttpOnly,SameSite=Lax,Path=/,Max-Age=86400(24 h). - Rechazo automático — rutas privadas redirigen a
/loginsin cookie válida. - Logout invalida la cookie inmediatamente (
Max-Age=0).
2.2 Sandbox del intérprete
La variable de entorno VPP_SAFE=1 desactiva las primitivas peligrosas (red_*, archivo_*, sistema_*). El sandbox público del Playground (/api/ejecutar) corre con VPP_SAFE=1. Los servidores en producción usan VPP_SAFE=0 porque necesitan red y disco — su única superficie de exposición es la red, no la ejecución de código de usuario arbitrario.
2.3 Headers HTTP
Cada respuesta de red_responder_http incluye automáticamente:
Y vía Cloudflare (capa edge):
2.4 Manejo de errores
Cada petición se atiende en un try/except aislado. Si el handler lanza excepción, la respuesta es 500 con detalles solo en inspección local; en producción detrás de Cloudflare el traceback se filtra. Si el handler retorna nulo, respuesta 204 No Content (defensiva).
2.5 Rate y carga
socket.listen(64) limita la cola de conexiones simultáneas. conn.settimeout(2.0) evita peticiones eternas (slowloris). Payloads mayores a 64 KB se cortan. Cada petición se procesa secuencialmente, evitando race conditions.
2.6 Validación de input
red_analizar_peticion parsea bytes UTF-8 con errors='replace' — no crashea por bytes malformados. Form-data se extrae con unquote_plus (saneamiento estándar). Cookies se parsean por separador y comparan claves exactas.
2.7 Trazabilidad
Toda mejora al runtime queda anotada en la bitácora con SHA-256 del intérprete tras el cambio. Cada cambio puede sellarse en BlockCEOO automáticamente.
3. Pendientes documentados (no críticos)
| Ítem | Plan |
|---|---|
| Rate limiting por IP en /login | F.sec-rate · contador en memoria con TTL |
| 2FA TOTP | F.sec-2fa · primitiva totp_verificar |
| Logs de acceso firmados Ed25519 | F.sec-logs · firma cada línea con firma CEOO |
| Auditoría automática Lighthouse | F.sec-audit · CI corre headers + perf cada deploy |
| Rotación automática de TOKEN_OK | F.sec-token · expira y se regenera cada 7 días |
4. Verificación pública
Cualquier visitante puede comprobar las defensas activas:
- HTTPS forzado:
curl http://vpp.ceoo.world→ 301 a HTTPS - HSTS:
curl -I https://vpp.ceoo.worldmuestrastrict-transport-security - Cookie HttpOnly: tras login,
document.cookiedesde la consola no la ve - CSP / X-Frame: intentar embeber el sitio en un
<iframe>ajeno falla - Sandbox del Playground: intentar
archivo_leer("/etc/passwd")devuelve "primitiva deshabilitada en modo VPP_SAFE"
5. Versionado
SEC-VPP-1.0 · 18 de mayo de 2026 · primera publicación. Próxima revisión al implementar F.sec-rate / F.sec-2fa / F.sec-logs.
Sigue
Para entender cómo V++ ejecuta un servidor web entero con primitivas propias, visita /runtime. Para ver la especificación completa: /spec.