Skip to content

DNP3 Stateful Protection Catalog

DNP3 operations are conversational. A secure interpretation can require link addresses, application direction, function code, application sequence, object group/variation, point index, command attributes, response status, IIN indicators, timing, and prior events. L2Proxy converts these facts into canonical identities that customer policy can correlate without hard-coding the policy into the parser or StateStore.

Production The use cases below have executable YAML samples and automated load/behavior tests. Point assignments, asset mappings, identities, timing, severity, and final verdict remain customer-specific.

1. Select-Before-Operate validation

Industrial concern: An Operate should be accepted only after a matching Select was requested and positively confirmed for the same master, outstation, and complete control target set.

DNP3 Select-Before-Operate stateful sequence enforced by Raymon

Figure — DNP3 Select-Before-Operate sequence validation and enforcement.

Policy behavior:

Select request → pending
Matching successful Select response → selected
Matching Operate → atomic one-time consume → accept
Missing / expired / mismatched / replayed Operate → drop

The control fingerprint includes canonical CROB or Analog Output G41 targets. Multi-object ordering does not change the identity; incomplete parsing does not produce a usable hash.

Operational value:

  • blocks Operate without a validated Select;
  • detects mismatched point, opcode, timing, value, or target set;
  • prevents replay after one successful consumption;
  • gives concurrent Operates one atomic winner;
  • supports a clear Direct Operate policy.

Full policy: Complete DNP3 SBO Policy

2. Command-to-status verification

Industrial concern: A command was transmitted, but the expected indication did not arrive, arrived with the opposite state, or arrived after the permitted response window.

Policy behavior: Map a control point to its expected Binary Input feedback and retain an awaiting_status state. Matching feedback verifies the operation; opposite, missing, conflicting, or unsolicited feedback produces a distinct outcome.

Operational value:

  • highlights failed or ineffective control;
  • distinguishes uncommanded feedback from expected process response;
  • creates an auditable command/indication chain;
  • supports monitor-first deployment where network loss or local operation is possible.

View the complete policy.

3. Device restart recovery

Industrial concern: A restarted outstation may require time synchronization and an integrity scan before normal controls should resume.

Policy behavior:

operational → restarted → time_sync_required
            → integrity_scan_required → operational

Repeated restart, NeedTime, final-fragment completion, recovery timeout, and control during recovery are handled as explicit phases.

Operational value:

  • provides evidence of incomplete recovery;
  • can log or block controls during an unsafe recovery phase;
  • identifies restart outside an approved maintenance context;
  • prevents a single response fragment from being mistaken for a completed scan.

View the complete policy.

4. Maintenance-authorized control

Industrial concern: Sensitive operations should be tied to a known engineering user, L2Proxy Connect session, access domain, target device, operation, and time window.

Policy behavior: A designated authorization event creates a scoped, expiring permission. The intended operation atomically consumes it. A different user, session, device, or replay does not satisfy the transition.

Operational value:

  • connects network control to maintenance identity;
  • implements one-time authorization without a global permit flag;
  • records who, where, what, and when;
  • makes absence of identity metadata an explicit policy decision.

View the complete policy.

5. Active/standby master enforcement

Industrial concern: A standby master begins issuing controls, both masters appear active, or a former master resumes control after failover.

Policy behavior: Maintain the active master per outstation, require an explicit failover transition, and detect split-brain or control from the non-active source.

Operational value:

  • identifies unexpected control ownership;
  • supports controlled failover procedures;
  • reduces ambiguity during redundant SCADA operation;
  • retains an audit trail of ownership changes.

View the complete policy.

6. Session identity binding

Industrial concern: A multi-step control begins under one network or L2Proxy Connect identity and completes under another.

Policy behavior: Bind control context to session, user, hub, network endpoints, device, and operation. Detect drift before the final operation is permitted.

Operational value:

  • detects session substitution during a sensitive sequence;
  • ties protocol semantics to access identity;
  • separates device-address trust from operator/session trust.

View the complete policy.

7. Safety trip and reset workflow

Industrial concern: A reset is attempted without an observed trip, before acknowledgement, before the cause clears, or without the approved operator/maintenance context.

Policy behavior:

normal → tripped → acknowledged → cause_cleared → reset_allowed → normal

Operational value:

  • exposes skipped phases in a safety-related workflow;
  • supports monitored or enforced reset policy;
  • combines process indication, operator identity, and maintenance context;
  • creates a chronological reset evidence chain.

View the complete policy.

Warning

This network-visible policy complements but never replaces PLC logic, relay logic, safety instrumented functions, or approved operating procedures.

8. Unauthorized state change

Industrial concern: A binary indication changes without a corresponding command observed within the expected time window.

Policy behavior: A command opens a bounded expected-feedback window. Matching change consumes it; a change with no valid expectation is logged as an investigation candidate.

Operational value:

  • detects local operation, alternate control paths, missing command visibility, or possible compromise;
  • highlights command/feedback inconsistency;
  • supports medium-severity monitoring before any enforcement decision.

Limitations include packet loss, asymmetric visibility, startup mid-sequence, and legitimate local operation. View the complete policy.

9. Process interlock observation

Industrial concern: A pump start is requested without a fresh observation that the required valve is open.

Policy behavior: Retain the prerequisite indication with a TTL and atomically consume it for the protected operation. Missing, stale, or already consumed prerequisites take the violation branch.

Operational value:

  • expresses a customer process prerequisite at the network boundary;
  • detects stale assumptions and repeated commands;
  • can begin in monitor mode and move to enforcement after process validation.

View the complete policy.

10. File-transfer lifecycle

Industrial concern: A file transfer uses an unexpected filename, size, owner, handle, block number, final-block marker, or close sequence.

Policy behavior: Track open request/response, assigned handle, owner identity, exact block progression, last block, close request, and successful completion. Atomic counters detect duplicate, skipped, or out-of-order blocks.

Operational value:

  • provides a complete transfer audit trail;
  • detects session hijack and sequence violation;
  • restricts configuration files and size to customer-approved values;
  • associates the transfer with maintenance authorization.

View the complete policy.

11. Configuration change and restart verification

Industrial concern: Configuration changes should be followed by the expected restart and health verification; an unexplained restart should be distinguished from an approved change.

Policy behavior:

config_changed → restart_expected → health_check → verified

Operational value:

  • detects change without restart and restart without observed change;
  • links engineering activity to post-change health evidence;
  • supports maintenance-window auditing.

View the complete policy.

12. Rate, burst, and write-storm detection

Industrial concern: Excessive Operate, restart, or write activity can indicate automation failure, operator error, scanning, or malicious use.

Policy behavior: Use atomic per-device counters with bounded windows and a one-time threshold marker to prevent log storms.

Operational value:

  • counts industrial operations rather than raw bandwidth;
  • scopes thresholds by device and operation;
  • emits one meaningful crossing event instead of an alert for every packet.

View the complete policy.

13. Alarm lifecycle and chattering

Industrial concern: An alarm remains active without acknowledgement, clears without the expected lifecycle, or toggles repeatedly in a short interval.

Policy behavior: Track normal, active, acknowledged, and cleared phases while counting real state toggles in a bounded window. A threshold marker avoids repeated chattering alerts.

Operational value:

  • separates alarm occurrence from acknowledgement and clearance;
  • detects unstable instrumentation or process oscillation;
  • supports persistence and chattering analysis in a common audit trail.

View the complete policy.

Customer configuration worksheet

For each selected use case, define:

Input Customer decision
Assets and DNP3 addresses Masters, outstations, redundant roles, criticality
Object and point mapping CROB, BI, AI, AO, file, configuration, alarm points
Operation identity Opcode, timing, analog value, target set, function
Timing Correlation TTL, process response deadline, recovery deadline, counter window
Identity Network endpoints, L2Proxy Connect access domain/user/session, maintenance role
Normal exceptions Retry, failover, local operation, startup, emergency procedure
Decision mode Observe, alert, accept allow-list, or drop violation
Evidence Required metadata, severity, retention, and ticket fields
Acceptance tests Happy path, missing, mismatch, expiry, replay, duplicate, concurrency
  1. Select one high-value, well-understood operation.
  2. Confirm full bidirectional visibility and parser coverage.
  3. Apply the customer's point and identity mappings.
  4. Run the policy in log-only mode against representative traffic.
  5. Review false positives with operations and control engineering.
  6. Execute negative, timeout, replay, and concurrency fixtures.
  7. Approve and enable only the required drop branches.
  8. Monitor state capacity, timeouts, and decision events after rollout.