Descripción
Signal K Server es una aplicación de servidor que se ejecuta en un concentrador central de una embarcación. Desde la versión 2.0.0 hasta la 2.34.0 de Signal K Server y desde la 1.0.0 hasta la 1.5.3 de @signalk/resources-provider, la ruta REST v2 GET /signalk/v2/api/resources/:resourceType/:resourceId acepta un resourceId inseguro que puede salir del directorio de recursos previsto. La ruta pasa el resourceId controlado por el atacante a través de src/api/resources/index.ts a FileStore.getResource() en packages/resources-provider-plugin/src/filestorage.ts sin una contención adecuada de rutas, lo que permite leer archivos JSON arbitrarios accesibles para el servidor. Las operaciones de recursos PUT y DELETE relacionadas pueden escribir o eliminar archivos fuera de la raíz de almacenamiento. Las implementaciones con allow_readonly habilitado permiten lecturas anónimas, mientras que las demás requieren un token de usuario de solo lectura. La lectura de security.json expone el secreto de firma JWT HS256 y los hashes de contraseñas, lo que permite a un atacante falsificar un token de administrador. Luego, el acceso administrativo a POST /skServer/providers permite crear un proveedor Execute que ejecuta comandos con los privilegios del proceso del servidor y mantiene su configuración tras los reinicios. Este problema está corregido en Signal K Server 2.34.0 y @signalk/resources-provider 1.5.3.
Qué hacer
Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.
Versiones afectadas
- signalk-server Afectadas: >= 2.0.0, < 2.34.0
- resources-provider Afectadas: >= 1.0.0, < 1.5.3
Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.
Referencias
- Referencia en github.comgithub.com/SignalK/signalk-server/security/advisories/GHSA-4xm8-rg9h-…
- Referencia en github.comgithub.com/SignalK/signalk-server/commit/83689f040d7e90280dddc643f44f…
- Referencia en github.comgithub.com/SignalK/signalk-server/releases/tag/v2.34.0
Ver el texto original en inglés (CVE.org)
Signal K Server: Unauthenticated path traversal in resources-provider v2 API leads to JWT secret disclosure, admin impersonation and remote code execution
Signal K Server is a server application that runs on a central hub in a boat. From 2.0.0 until 2.34.0 for Signal K Server and from 1.0.0 until 1.5.3 for @signalk/resources-provider, the v2 REST route GET /signalk/v2/api/resources/:resourceType/:resourceId accepts an unsafe resourceId that can escape the intended resource directory. The route passes the attacker-controlled resourceId through src/api/resources/index.ts to FileStore.getResource() in packages/resources-provider-plugin/src/filestorage.ts without adequate path containment, allowing arbitrary JSON files reachable by the server to be read. Related PUT and DELETE resource operations can write or delete files outside the storage root. Deployments with allow_readonly enabled permit anonymous reads, while other deployments require a readonly user token. Reading security.json exposes the HS256 JWT signing secret and password hashes, allowing an attacker to forge an administrator token. Administrative access to POST /skServer/providers can then create an Execute provider that runs commands with the server process privileges and persists its configuration across restarts. This issue is fixed in Signal K Server 2.34.0 and @signalk/resources-provider 1.5.3.