Security: per-remote-endpoint pre-auth API-key miss budget (widen IOpcUaUserAuthenticator seam) #751

Open
opened 2026-11-06 15:27:07 -05:00 by dohertj2 · 0 comments
Owner

Lane C (#733, commit e04156d8) added a pre-auth guard against API-key-id DoS: the KnownIdSet plus a MissBurst/MissRefillPerSecond token bucket. The budget is process-wide, not per remote endpoint, because the SDK impersonation callback behind the IOpcUaUserAuthenticator seam does not carry the client's address. One noisy client can therefore drain the miss budget for everyone while the id set is unavailable.

Work: widen the seam in the OpcUaServer project so it carries the remote endpoint, then account misses per endpoint. Keep the process-wide bucket as a backstop. docs/security.md calls this "a Wave 3 follow-up", but no Wave 3 lane owns it and no issue exists.

Source: docs/security.md:265-267 (section on the API-key store bounds). Related: #733, review 03 (pre-auth DoS finding).

Lane C (#733, commit `e04156d8`) added a pre-auth guard against API-key-id DoS: the `KnownIdSet` plus a `MissBurst`/`MissRefillPerSecond` token bucket. The budget is **process-wide, not per remote endpoint**, because the SDK impersonation callback behind the `IOpcUaUserAuthenticator` seam does not carry the client's address. One noisy client can therefore drain the miss budget for everyone while the id set is unavailable. Work: widen the seam in the OpcUaServer project so it carries the remote endpoint, then account misses per endpoint. Keep the process-wide bucket as a backstop. docs/security.md calls this "a Wave 3 follow-up", but no Wave 3 lane owns it and no issue exists. Source: docs/security.md:265-267 (section on the API-key store bounds). Related: #733, review 03 (pre-auth DoS finding).
dohertj2 added the priority:p3migratedtype:followup labels 2026-11-06 15:28:00 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dohertj2/lmxopcua#751