ACL: model-change and audit events reach Server-object (i=2253) items ungated #588
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found by the independent review of the #586 fix. Residual named in docs/security.md + CLAUDE.md.
With
Security:Acl:Enabled=true, events that go straight to the core Server object still reach every Server-object (i=2253) event item without an ACL decision:RaiseNodesAddedModelChange(~OtOpcUaNodeManager.cs:2462) andReportModelChangeOutsideLock(~2648) callServer.ReportEventwith the affected NodeIds, so a session with no grant learns the names (RawPaths) of nodes it cannot browse.ReportAuditEvent(~2055) would carry written values to any i=2253 session ifServer.Auditingwere enabled (requires an encrypted channel).A node manager has no hook on the core Server object's delivery, so this needs a different seam (e.g. filter affected-node lists per session, suppress model-change NodeIds the session cannot Browse, or route these through our own per-session delivery like #586 did for conditions).
Fixed: all four Server.ReportEvent sites go through ReportToServerObject; with ACL on, GeneralModelChange events are narrowed to nodes the session may Browse (dropped if none) and audit events also need Read on the source. ACL off unchanged. (merge
3803df04on master, pushed 2026-10-08)