scan_matrix::rules_for(PlcSps) offers onlyPlcControlLogic. A real PLC
device (e.g. CODESYS on Yocto) also has a firmware image and a reachable runtime,
but a PlcSps target can't run firmware SBOM/CVE or DAST, and supports_pentest(PlcSps) is false. So the device's OS/runtime attack surface
is invisible.
Change
Make PlcSps a composite target that lights up device-level scans when the
artifacts/endpoints are present (the matrix already blocks scans whose artifact is
absent, so this is additive and safe):
supports_pentest(PlcSps) → true (reachable device; pentest still needs a URL).
Keep PlcControlLogic (require Plc) as the default-on control-logic scan.
Design decision (resolve in PR)
One composite PlcSps target vs. two linked targets (PlcSps + EmbeddedLinuxYocto).
Default: composite — single pane for the device. Document the trade-off.
Part of the CODESYS-on-Yocto customer tracker. Smallest gap — implement first.
### Problem
`scan_matrix::rules_for(PlcSps)` offers **only** `PlcControlLogic`. A real PLC
device (e.g. CODESYS on Yocto) also has a firmware image and a reachable runtime,
but a `PlcSps` target can't run firmware SBOM/CVE or DAST, and
`supports_pentest(PlcSps)` is `false`. So the device's OS/runtime attack surface
is invisible.
### Change
Make `PlcSps` a **composite** target that lights up device-level scans when the
artifacts/endpoints are present (the matrix already blocks scans whose artifact is
absent, so this is additive and safe):
- `rules_for(PlcSps)` += `FirmwareStatic` + `Sbom` + `Cve` (require `Firmware`),
and `Dast` (require `RunningUrl`, default-off).
- `supports_pentest(PlcSps)` → `true` (reachable device; pentest still needs a URL).
- Keep `PlcControlLogic` (require `Plc`) as the default-on control-logic scan.
### Design decision (resolve in PR)
One composite `PlcSps` target vs. two linked targets (`PlcSps` + `EmbeddedLinuxYocto`).
Default: **composite** — single pane for the device. Document the trade-off.
### Files
- `compliance-core/src/scan_matrix.rs` (rules + `supports_pentest` + tests)
- Orchestrator already dispatches per `plan.has(scan)`, so no pipeline change beyond
confirming firmware/DAST scanners accept a `PlcSps` target's artifacts.
### Tests
- `PlcSps` with plc+firmware+url → offers PlcControlLogic (on), Sbom/Cve/FirmwareStatic (on), Dast (offered); `supports_pentest` true.
- `PlcSps` with only plc → device scans present but blocked with reasons.
- Update `plc_offers_only_control_logic` / `pentest_support_matches_reachable_families`.
Part of the CODESYS-on-Yocto customer tracker. **Smallest gap — implement first.**
sharang
added this to the Onboarding v1 milestone 2026-07-16 10:40:46 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem
scan_matrix::rules_for(PlcSps)offers onlyPlcControlLogic. A real PLCdevice (e.g. CODESYS on Yocto) also has a firmware image and a reachable runtime,
but a
PlcSpstarget can't run firmware SBOM/CVE or DAST, andsupports_pentest(PlcSps)isfalse. So the device's OS/runtime attack surfaceis invisible.
Change
Make
PlcSpsa composite target that lights up device-level scans when theartifacts/endpoints are present (the matrix already blocks scans whose artifact is
absent, so this is additive and safe):
rules_for(PlcSps)+=FirmwareStatic+Sbom+Cve(requireFirmware),and
Dast(requireRunningUrl, default-off).supports_pentest(PlcSps)→true(reachable device; pentest still needs a URL).PlcControlLogic(requirePlc) as the default-on control-logic scan.Design decision (resolve in PR)
One composite
PlcSpstarget vs. two linked targets (PlcSps+EmbeddedLinuxYocto).Default: composite — single pane for the device. Document the trade-off.
Files
compliance-core/src/scan_matrix.rs(rules +supports_pentest+ tests)plan.has(scan), so no pipeline change beyondconfirming firmware/DAST scanners accept a
PlcSpstarget's artifacts.Tests
PlcSpswith plc+firmware+url → offers PlcControlLogic (on), Sbom/Cve/FirmwareStatic (on), Dast (offered);supports_pentesttrue.PlcSpswith only plc → device scans present but blocked with reasons.plc_offers_only_control_logic/pentest_support_matches_reachable_families.Part of the CODESYS-on-Yocto customer tracker. Smallest gap — implement first.