CA-O manipula configuración crítica de Windows. Las superficies relevantes son: (1) el canal IPC entre UI elevada (requireAdministrator, UAC siempre) y el servicio SYSTEM — la UI está elevada pero toda mutación sigue auditada via pipe tipado, (2) la ejecución de herramientas externas, (3) los archivos de estado en %ProgramData%.
- Named Pipe
CA-O.Privileged.v1con ACL restrictivaNamedPipeServerStreamAcl(SYSTEM Full, Administrators R/W, Interactive R/W — conectar ≠ autorizar). GetCallerIdentity()víaRunAsClient()+WindowsCallerInspector(SID real, nombre,SessionIddel token, elevación) —P1-8.- Validación
IpcRequestValidator(§10):ProtocolVersion==2,RequestId!=Empty,Nonce16..128 sin control chars,CreatedAtUtc±30s/ +1m futuro,Operationenum,Payloadpolimórfico exacto,OptimizationIdregex[a-z0-9-]{1,80}. - Ping / GetServiceStatus (§10): operaciones sin
OptimizationIdpara health check (ServiceVersion, ProtocolVersion, ProcessId, IsSystem, Status, Capabilities) — no usan optimización real como ping. - Protección replay
ReplayCachecon reloj inyectable +MaxAge 30s+ tamaño 64KB/256KB; timeout 15s por conexión. - Allowlist 17 operaciones:
Apply/Revert/Detect/Verify/CaptureSnapshot/Ping/GetServiceStatus/SetDns/SetTimerResolution/FixDriver/InstallDriver/RemovePhantomDevices/SearchDriverUpdates/InstallDriverUpdates/ExportDriver/SearchCatalogDrivers/DownloadCatalogDriver— no hay “ejecutar comando”.SetTimerResolutionvalida rango 5000..156250 y fija el valor conNtSetTimerResolutionen el proceso del servicio. - Auditoría:
requestedBy SID/Name → executedBy SYSTEM, op, accepted, code.
- Catálogo estático
ElevatedCommandCatalog: ejecutables permitidos (powercfg/netsh) con patrones de argumentos cerrados; probado contra inyección, encadenamiento y expansión de variables (tests\CA-O.Security.Tests\ElevatedCommandCatalogTests). bcdeditnunca pasa por el runner genérico; las operaciones boot-level viven como optimizaciones tipadas con confirmación Expert.
history.jsonly snapshots no contienen secretos ni entrada personal del usuario.- Los snapshots restauran ausencias (DELETE) — jamás valores por defecto inventados.
- Sin telemetría, analytics ni red hacia terceros salvo sondas de latencia explícitas del usuario (ping/DNS/Cloudflare speed endpoints para bufferbloat).
Tras RunAsClient() + WindowsIdentity.GetCurrent() el servicio inspecciona SID, IsInRole(Administrators), IsElevated y SessionId del token y aplica AdministratorsOnlyAuthorizer:
- Permitido: token elevado con grupo Administrators, o SID en la lista configurada.
- Denegado: usuario estándar (CAO-SEC-005), admin sin elevación / token filtrado (CAO-SEC-003), SID inválido (CAO-SEC-004).
- Auditoría con RequestedBy (SID llamante) vs ExecutedBy=SYSTEM.
Envelope versionado (IpcProtocol.Version = 2): RequestId GUID, nonce, CreatedAtUtc (expira en 30 s), operación enumerada, payload polimórfico por discriminador. Límites: 64 KB request / 256 KB respuesta. Anti-replay: RequestId+nonce de un solo uso. Errores estructurados CAO-XXX-nnn.
Toda ejecución privilegiada pasa por IPrivilegedCommandExecutor → CommandPolicy.Resolve: rutas absolutas %SystemRoot% (anti PATH-hijacking), tokens exactos sin metacaracteres (anti chaining/redirección/inyección), sin shell; OptimizeSystemDrive usa defrag.exe con argumentos fijos (C: /O). Desviación → CAO-SEC-010.
La cancelación solo se atiende antes de SNAPSHOT/APPLY; durante APPLY es atómica (token ignorado) y una cancelación en vuelo se marca CancellationDeferred tras completar apply→verify→commit.
VerificationStatus { Passed, Failed, Unknown, NotApplicable }. Unknown jamás es éxito: provoca rollback automático (CAO-VERIFY-002). Acciones irreversibles: NotApplicable + auditada como irreversible.
GameCompatibilityPolicy matriz SAFE/CAUTION/BLOCKED — disable-vbs/hvci/hypervisor-launchtype-off → BLOCKED CAO-GAME-001 si Vanguard/EAC/BattlEye detectado. OptimizationEngine.ApplyAsync valida antes de transacción en Core y Privileged (no solo UI). Expert no bypassa bloqueos críticos.
app.manifest + CA-O.InstallerGui + CA-O.Setup ambos requireAdministrator — UAC siempre. CA-O.Setup.exe 135 MB self-contained single-file instala en C:\Program Files\CA-O, registra CAO.Privileged (failure 86400) y crea atajos Escritorio/Inicio. CA-O-Setup-GUI-x64.zip 88 MB con el instalador GUI. Log %TEMP%\CA-O-Setup*.log.
- CodeQL + NuGet audit en CI (
.github/workflows/ci.yml), Dependabot semanal. - Release
v2.1.34firma Authenticode con timestamp cuando existe certificado (CAO_SIGN_THUMBPRINT) y generaSHA256SUMS.txt+ SBOM CycloneDX 1.7bom.json67 packages (artifacts/sbom/bom.json). El auto-updater no exige firma (sin certificado disponible): verifica el SHA-256 del ZIP contra el sidecar.sha256del release; la firma solo se comprueba de forma informativa.
Reportar de forma privada al mantenedor del repositorio. Por favor incluir repro mínimo y versión afectada.