feat(ics): OPC UA reachability probe [#148] #174

Merged
sharang merged 1 commits from feat/ics-opcua-probe into main 2026-07-16 16:35:55 +00:00
Owner

Extends the ICS probe (#148, tracker #167) with OPC UA (port 4840) — a common
CODESYS runtime service.

  • pipeline::ics::opcua — a minimal read-only UACP handshake (Hello → Ack/Err)
    that confirms an OPC UA server is listening. No secure channel / service calls.
  • probe_target now checks Modbus/TCP + OPC UA (no longer early-returns when
    Modbus is absent); emits ics-opcua-exposed (Medium, CWE-319) whose description
    flags the common insecure default (SecurityPolicy None + Anonymous).

Deep SecurityPolicy / user-token analysis (via a full OPC UA stack) is a noted
follow-on. Unit-tested against an in-process mock OPC UA server. All suites green;
clippy + -D warnings test build clean.

🤖 Generated with Claude Code

Extends the ICS probe (#148, tracker #167) with **OPC UA** (port 4840) — a common CODESYS runtime service. - `pipeline::ics::opcua` — a minimal **read-only** UACP handshake (Hello → Ack/Err) that confirms an OPC UA server is listening. No secure channel / service calls. - `probe_target` now checks **Modbus/TCP + OPC UA** (no longer early-returns when Modbus is absent); emits `ics-opcua-exposed` (Medium, CWE-319) whose description flags the common insecure default (**SecurityPolicy None + Anonymous**). Deep SecurityPolicy / user-token analysis (via a full OPC UA stack) is a noted follow-on. Unit-tested against an in-process mock OPC UA server. All suites green; clippy + `-D warnings` test build clean. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
sharang added 1 commit 2026-07-16 16:29:59 +00:00
feat(ics): OPC UA reachability probe (#148)
CI / Check (pull_request) Successful in 5m16s
CI / Detect Changes (pull_request) Has been skipped
CI / Deploy Docs (pull_request) Has been skipped
CI / Deploy MCP (pull_request) Has been skipped
CI / Deploy Agent (pull_request) Has been skipped
CI / Deploy Dashboard (pull_request) Has been skipped
306f7c5616
Extends the ICS probe with OPC UA (port 4840), a common CODESYS runtime service.
A read-only UACP handshake (Hello → Ack/Err) confirms an OPC UA server is
listening and flags it for review — the finding notes the common insecure default
(SecurityPolicy None + Anonymous user token) that allows unauthenticated,
unencrypted access.

- pipeline::ics::opcua — minimal UACP Hello/Ack probe (no secure channel).
- probe_target now checks Modbus/TCP + OPC UA (no longer early-returns on
  no-Modbus); emits `ics-opcua-exposed` (Medium, CWE-319).

Deep SecurityPolicy / user-token analysis via a full OPC UA stack is a follow-on.
Unit-tested against an in-process mock OPC UA server. Tracker #167.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
sharang merged commit b96c4d594c into main 2026-07-16 16:35:55 +00:00
sharang deleted branch feat/ics-opcua-probe 2026-07-16 16:35:55 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sharang/compliance-scanner-agent#174