Craton Shield

vs-s7comm-monitor

vs-s7comm-monitor

Siemens S7comm / S7comm-plus intrusion detection for Craton Shield (IEC 62443).

Overview

Monitors S7comm traffic for security anomalies in industrial control systems. Designed for industrial gateways and PLCs.

MSRV: 1.82 | Environment: #![no_std], zero heap allocation

Features

  • PDU-type allowlist -- restrict allowed PDU types (JobRequest, AckData, UserData)
  • Function code filtering -- per-rule bitmask of allowed S7comm function codes with wildcard support
  • Write protection -- block write operations (WriteVar, RequestDownload, DownloadBlock, DownloadEnded, PlcControl, PlcStop)
  • SZL filtering -- block UserData PDU type to prevent device capability enumeration
  • Rate limiting -- per-function-code token bucket with LRU eviction

Stack Budget

~500 bytes

Usage

use vs_s7comm_monitor::{S7commMonitor, S7commFrame, S7commPduType, S7commFunction};

let mut monitor = S7commMonitor::new_strict();

// Allow ReadVar, read-only, max 50 req/sec
monitor.add_rule(0x04, true, false, 50).unwrap();

let result = monitor.inspect(&frame);
if !result.allowed {
    // frame was blocked
}

License

Apache-2.0. See LICENSE.