# Plan Maestro de Remediacion

## R01 - Bloquear manifiestos Composer publicos

- Prioridad: P0.
- Por que existe: archivos de proyecto estan dentro de webroot `admin/`.
- Consecuencia: fingerprint exacto de dependencias y versiones.
- Correccion: regla Apache para denegar `composer.json`, `composer.lock`, `vendor/composer/*` publicamente, manteniendo lectura local por PHP/CLI.
- Archivos/directorios: `admin/composer.json`, `admin/composer.lock`, config Apache o `.htaccess` controlado.
- Validacion: HTTP 403/404 para ambos; app Vtiger sigue cargando.
- Rollback: retirar regla y restaurar archivo de config Apache/.htaccess desde backup.
- Dependencias: backup de configuracion web.
- Tiempo: 15-30 min.
- Riesgo ejecucion: bajo.

## R02 - Bloquear ZIP/TAR/GZ publicos

- Prioridad: P0.
- Por que existe: paquetes y artefactos estan servidos desde webroot.
- Consecuencia: exposicion de codigo, versiones, rutas y modulos instalables.
- Correccion: bloquear extensiones comprimidas en `/admin` o rutas `packages`, `cache`, `libraries/jquery/pdfjs/web`; despues evaluar limpieza.
- Archivos/directorios: `admin/packages/`, `admin/cache/*.zip`, `admin/libraries/jquery/pdfjs/web/web.tar*`.
- Validacion: HTTP 403/404 para muestras; CRM operativo.
- Rollback: revertir regla de bloqueo.
- Dependencias: confirmar que Vtiger no descarga esos ZIP via navegador en operacion normal.
- Tiempo: 1-2 h.
- Riesgo ejecucion: medio.

## R03 - Restringir `/admin/migrate/`

- Prioridad: P0.
- Por que existe: herramienta de migracion instalada en produccion.
- Consecuencia: setup visible y posible superficie de upgrade/migracion.
- Correccion: bloquear por Apache/IP/admin VPN; en fase posterior retirar fisicamente tras backup.
- Archivos/directorios: `admin/migrate/`, `admin/modules/Migration/`, `admin/pkg/bin/datamigration.*`.
- Validacion: `/admin/migrate/` devuelve 403; login CRM normal funciona.
- Rollback: retirar regla temporalmente.
- Dependencias: confirmar que no hay migracion activa.
- Tiempo: 30-60 min.
- Riesgo ejecucion: medio.

## R04 - KCFinder y uploads

- Prioridad: P1.
- Por que existe: KCFinder esta incluido y endpoints PHP responden 200; login habilita sesion con `test/upload`.
- Consecuencia: riesgo de upload/browse si sesion o config habilita escritura.
- Correccion: restringir `kcfinder/*.php`, mover uploadDir fuera de webroot o a ruta no ejecutable, validar extensiones y MIME.
- Archivos/directorios: `admin/kcfinder/`, `admin/test/upload/`, `modules/Users/actions/Login.php` para futura revision controlada.
- Validacion: anonimo 403; usuario autorizado conserva funcionalidad necesaria; PHP no ejecuta en uploads.
- Rollback: restaurar regla/config anterior.
- Dependencias: pruebas con flujos que usen CKEditor/file manager.
- Tiempo: 2-4 h.
- Riesgo ejecucion: medio.

## R05 - Cron solo CLI/restringido

- Prioridad: P1.
- Por que existe: `vtigercron.php` esta en webroot y responde HTTP.
- Consecuencia: posible abuso por sesion valida o configuracion debil.
- Correccion: bloquear HTTP externo y ejecutar cron por CLI local; opcional whitelist IP/token robusto.
- Archivos/directorios: `admin/vtigercron.php`, `admin/cron/`, crontab del servidor.
- Validacion: HTTP 403; cron CLI ejecuta en ventana controlada.
- Rollback: revertir regla HTTP.
- Dependencias: acceso a scheduler real del servidor.
- Tiempo: 1-2 h.
- Riesgo ejecucion: medio.

## R06 - Headers y cookies

- Prioridad: P1.
- Por que existe: headers no configurados globalmente y cookie PHP sin flags visibles.
- Consecuencia: mayor impacto de XSS, clickjacking, sniffing y robo de sesion.
- Correccion: `Secure`, `HttpOnly`, `SameSite`; headers CSP gradual, HSTS, XFO/SAMEORIGIN, XCTO/nosniff, Referrer-Policy.
- Archivos/directorios: Apache vhost/.htaccess/php.ini segun control de hosting.
- Validacion: `curl -I`; login/logout; recursos JS/CSS sin bloqueo CSP.
- Rollback: revertir headers en config.
- Dependencias: inventario de recursos externos antes de CSP estricta.
- Tiempo: 2-4 h.
- Riesgo ejecucion: medio.

## R07 - WSAPP y endpoints publicos

- Prioridad: P1.
- Por que existe: webservices custom con appkeys y sync bidireccional.
- Consecuencia: alteracion/sincronizacion no autorizada si claves se filtran.
- Correccion: revisar operaciones, expiracion/rotacion de appkeys, logs, rate limits, permisos por modulo.
- Archivos/directorios: `modules/WSAPP/`, `webservice.php`, tablas `vtiger_wsapp*`.
- Validacion: pruebas con cliente legitimo; intentos anonimos controlados; logs sin secretos.
- Rollback: restaurar keys/config desde backup.
- Dependencias: usuarios/clientes que dependan de sync.
- Tiempo: 1-2 dias.
- Riesgo ejecucion: alto.

## R08 - Legacy/deuda tecnica

- Prioridad: P2/P3.
- Por que existe: Vtiger incluye librerias historicas y duplicadas.
- Consecuencia: CVEs, incompatibilidades PHP, superficie JS amplia.
- Correccion: inventario CVE, upgrades por componente, pruebas funcionales por modulo.
- Archivos/directorios: `libraries/`, `vendor/`, `layouts/`, `modules/*`.
- Validacion: test regresion CRM y flujos comerciales.
- Rollback: restaurar release completo.
- Dependencias: ambiente staging.
- Tiempo: semanas por oleadas.
- Riesgo ejecucion: alto.
