# Seguridad

## Estado actual

Health Score: 80/100.

## Controles detectados

- CSRF global por `libraries/csrf-magic/csrf-magic.php`.
- Sanitizacion de request por `Vtiger_Request::get()` y `vtlib_purify()`.
- ACL por roles, perfiles, sharing y `Users_Privileges_Model`.
- Algunos directorios protegidos por `.htaccess`: `cron`, `logs`, `storage`, `vendor`.

## Hardening aplicado - 2026-06-26

- Se agrego `admin/.htaccess` para hardening HTTP reversible.
- `admin/composer.json` y `admin/composer.lock` ahora responden HTTP 403.
- Archivos `*.zip`, `*.tar`, `*.tgz`, `*.gz`, `*.sql`, `*.bak`, `*.backup`, `*.old`, `*.dump` bajo `/admin` ahora responden HTTP 403.
- `/admin/migrate/`, `/admin/pkg/`, `/admin/packages/`, `/admin/test/` y `/admin/cache/` ahora responden HTTP 403.
- `admin/kcfinder/*.php` ahora responde HTTP 403 para acceso publico.
- `admin/vtigercron.php` ahora responde HTTP 403 por HTTP publico; ejecucion CLI no se modifica por `.htaccess`.
- Headers basicos agregados en `/admin`: `X-Content-Type-Options`, `X-Frame-Options`, `Referrer-Policy`, `Permissions-Policy`.

## Riesgos P0 vigentes

- Sin P0 publicos confirmados despues del hardening HTTP aplicado.

## Riesgos P1

- Cookies PHP aun no muestran flags visibles `Secure`, `HttpOnly`, `SameSite`.
- CSP estricta y HSTS no fueron aplicados para evitar ruptura de compatibilidad sin inventario completo.
- WSAPP requiere revision de appkeys, rotacion, permisos y logs.
- Directorios residuales siguen existiendo en webroot, pero quedaron protegidos por HTTP donde aplica.
- KCFinder quedo bloqueado por HTTP publico; validar con usuarios si existe dependencia funcional real antes de eliminarlo.

## Principio de remediacion

Primero bloquear exposicion HTTP. Despues validar operacion. Solo luego limpiar fisicamente artefactos.
