Skip to content

Seguridad, compatibilidad HA 2026.5, recuperación de PIN y limpieza (v1.1.44)#2

Open
Chrisalvir1 wants to merge 2 commits into
mainfrom
claude/friendly-fermat-pz9jn
Open

Seguridad, compatibilidad HA 2026.5, recuperación de PIN y limpieza (v1.1.44)#2
Chrisalvir1 wants to merge 2 commits into
mainfrom
claude/friendly-fermat-pz9jn

Conversation

@Chrisalvir1
Copy link
Copy Markdown
Owner

Resumen

Auditoría del proyecto con reparaciones de seguridad, compatibilidad con Home Assistant 2026.5, recuperación de PIN y limpieza del repositorio. Bump a v1.1.44.

🔴 Seguridad WebSocket (crítico)

  • require_admin en update_master_pin, upload_file, delete_file, restore_config y save_advanced_config.
  • Gestión de usuarios/PINs en save_ui restringida a administradores.
  • Validación de extensiones permitidas en subidas (WebSocket y vista HTTP); verificación de admin en ArgusUploadView. SVG excluido por riesgo de XSS.
  • Redacción de PIN maestro, PINs de usuario y PIN de invitado en el dashboard para usuarios no administradores.
  • Corrección de connection.context (inexistente) → connection.user, que rompía la gestión de usuarios.
  • Auditoría de cambios/reseteos del PIN maestro.

🟠 Compatibilidad HA 2026.5.4

  • Reemplazo de hass.components.persistent_notification (API eliminada) por persistent_notification.async_create(hass, ...) en las 3 llamadas.

🔑 Recuperación de PIN olvidado

  • La sesión de administrador de HA verifica la identidad: un admin puede restablecer el PIN sin conocer el anterior.
  • Botón "¿Olvidaste tu PIN?" + modo recuperación en el panel (7 idiomas); controles de PIN y respaldo visibles solo para admins.

💾 Respaldo / Restaurar / Restablecer

  • El restablecimiento de fábrica ahora borra también el PIN maestro (antes sobrevivía) y permite deshacerlo restaurando el PIN previo.

🟡 Bugs menores

  • Smart arming ignora estados de persona desconocidos (evita falsos avisos).
  • Comparación de expiración de PIN de usuario respeta la zona horaria.
  • Corrección del comentario ARM-LOCK (30 s).

🧹 Limpieza

  • Eliminados .DS_Store rastreados y svg_helper.js vacío; añadido .gitignore.

Verificación

  • python3 -m py_compile sobre todos los módulos: OK.
  • node --check sobre argus-panel.js y argus-card.js: OK.

https://claude.ai/code/session_01LCWLfXjPMQwmwNiuJ1Xj9t

claude added 2 commits May 29, 2026 15:59
…impieza

Seguridad WebSocket (crítico):
- require_admin en update_master_pin, upload_file, delete_file, restore_config
  y save_advanced_config; gestión de usuarios/PINs en save_ui solo para admin.
- Valida extensiones permitidas en subidas (WS y vista HTTP) y exige admin en
  ArgusUploadView; excluye SVG por riesgo de XSS.
- Redacta PIN maestro, PINs de usuario y PIN de invitado del dashboard para
  usuarios no administradores (copia profunda para no mutar el Store).
- Corrige connection.context inexistente -> connection.user (rompía usuarios).
- Audita los cambios/reseteos de PIN maestro.

Compatibilidad HA 2026.5.4:
- Reemplaza hass.components.persistent_notification (API eliminada) por
  persistent_notification.async_create(hass, ...) en las 3 llamadas.

Recuperación de PIN olvidado:
- La sesión de administrador de HA actúa como verificación de identidad: un
  admin puede restablecer el PIN sin conocer el anterior.
- Botón "¿Olvidaste tu PIN?" + modo recuperación en el panel; controles de PIN
  y de respaldo/restablecer visibles solo para admins. Textos en 7 idiomas.

Respaldo / Restaurar / Restablecer:
- El restablecimiento de fábrica ahora borra también el PIN maestro (antes
  sobrevivía pese al aviso) y permite deshacerlo restaurando el PIN previo.

Bugs menores:
- Smart arming ignora estados de persona desconocidos para evitar falsos avisos.
- Comparación de expiración de PIN de usuario respeta zona horaria (evita
  TypeError que descartaba el PIN como expirado).
- Corrige comentario ARM-LOCK (30 s, no 120 s).

Limpieza:
- Elimina .DS_Store rastreados y svg_helper.js vacío; añade .gitignore.

Bump a v1.1.44 (fuerza recarga del JS por cache-busting).
Seguridad (XSS en el panel):
- Añade helper _esc() y escapa todos los datos controlados por el usuario que
  se interpolan en innerHTML: nombre del hogar, nombres de usuario, detalles del
  log de auditoría, nombres de archivo subidos, friendly_name de sensores y
  etiquetas de HomeKit (bridge/home). Cierra vectores de DOM-XSS almacenado.

Estabilidad (carga de la integración):
- Añade async_migrate_entry: el config flow declara VERSION=2 y sin handler de
  migración las entradas creadas por versiones antiguas (v1) impedían cargar la
  integración. Ahora migra rellenando claves por defecto y subiendo la versión.

Corrección de servicios:
- services.yaml anunciaba `save_ui` y `panic` que no estaban registrados.
  Se registra `argus.panic` como servicio de entidad (dispara la alarma) y se
  elimina `save_ui` (se hace por WebSocket, no es un servicio).

Bump a v1.1.45 (cache-busting del JS).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants