Credential references can be resolved and sent to an arbitrary host via Test Connect (Galaxy env:, OpcUaClient secret:) #815

Closed
opened 2026-11-11 00:05:56 -05:00 by dohertj2 · 1 comment
Owner

Found by the independent review of #803. A Designer can point a driver/device endpoint at a host they control and set a credential field to any reference the admin node can resolve — e.g. Galaxy env:ConnectionStrings__ConfigDb / env:ServerHistorian__ApiKey, or OpcUaClient secret:<any store entry> — then click Test Connect; the admin node resolves the value and sends it to that host. No deploy is needed.

#803 closed this for Heidenhain by scoping references to secret:heidenhain/<name> / env:OTOPCUA_HEIDENHAIN_<NAME>, enforced in parser, save path, deploy gate, probe and again at resolve time (see docs/drivers/Heidenhain.md). Apply an equivalent per-driver namespace to every driver that resolves secret:/env: references (at least Galaxy and OpcUaClient; audit the rest), with a migration note for existing configs.

Found by the independent review of #803. A Designer can point a driver/device endpoint at a host they control and set a credential field to any reference the admin node can resolve — e.g. Galaxy `env:ConnectionStrings__ConfigDb` / `env:ServerHistorian__ApiKey`, or OpcUaClient `secret:<any store entry>` — then click Test Connect; the admin node resolves the value and sends it to that host. No deploy is needed. #803 closed this for Heidenhain by scoping references to `secret:heidenhain/<name>` / `env:OTOPCUA_HEIDENHAIN_<NAME>`, enforced in parser, save path, deploy gate, probe and again at resolve time (see docs/drivers/Heidenhain.md). Apply an equivalent per-driver namespace to every driver that resolves `secret:`/`env:` references (at least Galaxy and OpcUaClient; audit the rest), with a migration note for existing configs.
dohertj2 added the cross-drivertype:bugpriority:p2 labels 2026-11-11 00:05:56 -05:00
Author
Owner

Fixed on master (e9064dbd, live-gate fix 481985e2). Pushed to master in d1b6cad2. Galaxy/OpcUaClient credential references are confined to driver-type namespaces and refused at save, deploy (CredentialReferenceOutOfScope), Test Connect and browse; running drivers with legacy references keep working with a rate-limited WARN + credential-compat:<field> diagnostics (owner decision: warn-only). CredentialReferencePreflight lists findings on the /raw banner. The docker-dev gate found the preflight's ArtifactBlob.Length > 0 predicate untranslatable on SQL Server (threw every boot) — fixed to read the latest Sealed artifact, with a new [SqlServerFact] test shown to fail on the old predicate. Follow-ups: #834 (remove warn-only), #835, #836 (both fixed in this batch).

Fixed on master (`e9064dbd`, live-gate fix `481985e2`). Pushed to master in `d1b6cad2`. Galaxy/OpcUaClient credential references are confined to driver-type namespaces and refused at save, deploy (`CredentialReferenceOutOfScope`), Test Connect and browse; running drivers with legacy references keep working with a rate-limited WARN + `credential-compat:<field>` diagnostics (owner decision: warn-only). `CredentialReferencePreflight` lists findings on the /raw banner. The docker-dev gate found the preflight's `ArtifactBlob.Length > 0` predicate untranslatable on SQL Server (threw every boot) — fixed to read the latest Sealed artifact, with a new `[SqlServerFact]` test shown to fail on the old predicate. Follow-ups: #834 (remove warn-only), #835, #836 (both fixed in this batch).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/lmxopcua#815