IEC 62443 DRRM Runtime Resource Monitor for Industrial Control Systems
VoidProbe is a real-time monitoring and security assessment tool designed to evaluate Linux-based embedded systems against the IEC 62443-4-2 Denial of Service Resistance and Resilience to Resource Management (DRRM) requirements.
By deploying architecture-specific, zero-footprint agents, VoidProbe tracks system health during active security testing (penetration testing or fuzzing) to identify resource exhaustion, process crashes, and communication robustness failures.
- Auto-Detection: On first run, VoidProbe detects the target's architecture (
uname -m) and deploys the matching binary. - Pre-built agents: Support for
AMD64,ARM64,ARMv7,ARMv6,MIPS,MIPSle, andRISC-V.
- Disk-Backed Store: Telemetry is persisted to an embedded
bboltdatabase on the tool side. No longer limited by RAM. - Session Restore: Use the
-restoreflag to resume a previous monitoring session, preserving all historical data and baselines. - Live Export: Press F4 in the TUI to generate a full HTML report at any time without stopping the test.
- Self-Deletion: The agent binary deletes itself from the target disk (
/tmp) immediately upon execution. - Local Buffering: If the connection to the tool is lost, the agent buffers telemetry locally and re-syncs upon reconnection.
- Auto-Cleanup: Wipes its temporary database on graceful exit.
- Real-time metrics visualization: CPU, Memory, Load, TCP connections, FDs.
- F1: Configuration editor with live syntax highlighting and save support.
- F2: Remote Process Viewer (
ps auxvia SSH). - F3: PTrace Debugger (read-only memory/register inspection).
- F5: Clear logs.
VoidProbe specifically addresses the Dynamic Runtime Resource Management (DRRM) requirements of IEC 62443-4-2:
| Requirement (SR) | VoidProbe Capability |
|---|---|
| SR 7.1 Resource Management | Monitors memory/CPU consumption for specific processes during stress tests to prevent total system exhaustion. |
| SR 7.2 Resource Availability | Detects process crashes and tracks restart counts to verify system resilience and watchdog effectiveness. |
| SR 7.8 Comm. Robustness | Tracks SYN_RECV states and TCP connection rates to detect vulnerability to SYN/ACK floods and resource-based DoS. |
| SR 7.9 System Resource Usage | Monitors per-process File Descriptors (FDs), handles, and thread counts against system limits. |
Generate the tool and all architecture-specific agents:
make build VERSION=1.0.0Copy the sample config and update your target details:
cp voidprobe_config.sample.yaml voidprobe_config.yamlStart a new session:
./build/voidprobe_toolOr restore the latest session:
./build/voidprobe_tool -restore| Key | Action |
|---|---|
| Q | Quit and generate final HTML report |
| F4 | Export report now (without quitting) |
| F1 | Edit active configuration |
| F2 | Show remote ps aux |
| F3 | Open Debugger Stub |
VoidProbe generates self-contained, interactive HTML reports featuring:
- Interactive Timelines: Memory, Load Average, Open FDs, and TCP/SYN states using Chart.js.
- Anomalies Section: Grouped and deduplicated summary of all detected spikes, crashes, and unauthenticated shared memory segments.
- Dark/Light Mode: Toggleable theme for easy analysis.
- Compliance Info: Direct mapping of session findings to IEC 62443 requirements.
To safely try VoidProbe, use the included Docker target:
docker build -t voidprobe-test ./testsdocker run -d -p 2222:22 --name vp-target voidprobe-test- Launch
voidprobe_tooltargeting127.0.0.1:2222. - Trigger anomalies using
stress-ng(seetests/TEST_COMMANDS.md).
internal/
├── store/ # bbolt persistent storage & session handling
├── report/ # HTML templating with Chart.js & IEC 62443 logic
├── tui/ # Terminal user interface & telemetry server
├── agent/ # Cross-platform monitoring core
├── monitor/ # /proc-based metric parsers
└── ssh/ # Encrypted transport & architecture detection
This tool is provided for authorized security testing and compliance auditing only. The authors are not responsible for misuse or damage caused by this software. Use only on systems you own or have explicit permission to test.
