Descripción
node-opcua es una implementación de OPC UA para TypeScript y Node.js. Desde la versión 2.42.0 hasta la 2.180.0, el control de acceso a nivel de espacio de nombres configurado mediante setDefaultRolePermissions no es respetado por la ruta de aplicación en tiempo de ejecución para los nodos sin RolePermissions explícitos por nodo. SessionContext.getApplicableRolePermissions lee un valor de metadatos DefaultRolePermissions ausente o nulo en lugar del campo configurado del espacio de nombres, y el resultado nulo se trata de forma permisiva. En consecuencia, un cliente de red anónimo puede escribir variables con acceso CurrentWrite o llamar a métodos vinculados cuando un operador configuró un valor predeterminado restrictivo para el espacio de nombres y confió en la herencia. Los servidores sin una política declarada, los nodos con permisos explícitos por nodo y los metadatos del espacio de nombres vinculados correctamente de forma programática quedan fuera del caso de omisión de autorización. Este problema está corregido en la versión 2.180.0.
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
- node-opcua Afectadas: >= 2.42.0, < 2.180.0
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/node-opcua/node-opcua/security/advisories/GHSA-xggf-m53x-j…
- Referencia en github.comgithub.com/node-opcua/node-opcua/pull/1580
- Referencia en github.comgithub.com/node-opcua/node-opcua/commit/0261e873900800983c622e01120f4…
- Referencia en github.comgithub.com/node-opcua/node-opcua/releases/tag/v2.180.0
Ver el texto original en inglés (CVE.org)
node-opcua: Namespace-Level RBAC Fail-Open - Anonymous Write/Call Bypass via Unbound `DefaultRolePermissions
node-opcua is an OPC UA implementation for TypeScript and Node.js. From 2.42.0 until 2.180.0, namespace-level access control configured through setDefaultRolePermissions is not honored by the runtime enforcement path for nodes without explicit per-node RolePermissions. SessionContext.getApplicableRolePermissions reads a missing or null DefaultRolePermissions metadata value instead of the configured namespace field, and the null result is treated permissively. An anonymous network client can consequently write variables with CurrentWrite access or call bound methods when an operator configured a restrictive namespace default and relied on inheritance. Servers with no declared policy, nodes with explicit per-node permissions, and correctly bound programmatic namespace metadata are outside the authorization-bypass case. This issue is fixed in version 2.180.0.