Vulnerability Analysis Report - Surround View System (SVS) and Parking Assist (ADAS)
Report ID: VA-SVS-PA-2026-014 | Version: 1.0 | Classification: Confidential - OEM/Tier-1 Internal
Platform context: TDA4VM (TI J721E) ADAS domain-controller ECU, as covered by this repository’s
TDA4VM_*_Requirements.md topic documents. Program: Tier-1-developed SVS + Parking Assist domain
controller, OEM-integrated, target SOP (start of production) 2027MY.
Analysis type: Point-in-time system-level and software-level vulnerability analysis with
evidence artifacts, per ISO 21434 Clause 15 (Threat analysis and risk assessment), SAE J3061
lifecycle activities, and the UN R155 CSMS vulnerability-monitoring obligation (see Section 8).
Engagement team (roles, not individuals): Lead Security Assessor (system-level), Embedded
Software Security Engineer (static/dynamic analysis, fuzzing), Penetration Tester (bench + vehicle
rig), Functional Safety Liaison (ASIL/HARA cross-check), Tier-1 Program Security Manager, OEM PSIRT
Analyst (intake of final findings).
Relationship to this repo: this report is a standalone deliverable, not a new
CSG/FSC/FSR/SYSR/TSC/TSR/SWR/HWR/HSI section. Where a finding is already mitigated by an existing
requirement, the specific ID is cited (e.g. CSG-SECOC-1, TSR-1). Where no existing requirement
covers a finding, it is flagged as a gap to be routed through
TDA4VM_Vulnerability_Analysis_Requirements.md’s risk-treatment process (CSG-VULN-4).
Evidence labeling. All log excerpts, tool-output tables, and crash artifacts referenced from
evidence/in this report are illustrative examples in a realistic format — they were not captured from a real test run, camera rig, fuzzer, or static analyzer. Each evidence file repeats this label. Real, publicly documented CVEs are cited only where explicitly marked “real-world precedent” (verified against NVD at the time of writing) to calibrate severity/feasibility — they are not claimed to exist in this specific codebase. Replace illustrative artifacts with actual tool/lab output before submitting this report as part of an audit package.
0. Scope, Assumptions, and Engagement Context
- Subsystem boundary: Surround View System (4-8 fisheye cameras, ISP, stitching, birds-eye-view rendering) and Parking Assist (ultrasonic sensor fusion, free-space/obstacle perception, trajectory planning, low-speed steering/brake actuation guidance), hosted on a TDA4VM ADAS domain controller, communicating with the rest of the vehicle over CAN and/or automotive Ethernet through a gateway ECU.
- Grounded facts (chip/platform-level: secure boot chain, SA2UL crypto engine, eFuse SWREV/KEYREV, TISCI messages, SecOC MAC/freshness, UDS SecurityAccess, JTAG debug unlock, secure storage KEK/DKEK) are drawn from this repo’s existing topic documents — see citations throughout Sections 4-6.
- Illustrative/generic content: SVS/Parking-specific software elements (camera drivers, ISP pipeline, stitching algorithm, perception model, trajectory planner, ROS2/DDS or AUTOSAR Adaptive middleware) are standard automotive-domain constructs, not TI-verified facts, and are analyzed as such.
- Real-world precedent used for calibration: three publicly disclosed, NVD-verified CVEs from
the 2021 coordinated multi-vendor DDS discovery-protocol disclosure (CISA advisory ICSA-21-315-02)
are used to justify that the DDS/middleware-layer findings in this report (SW-VC-08, SYS-TS-07)
are realistic, not theoretical:
- CVE-2021-38439 — GurumDDS, heap-based buffer overflow in discovery-protocol handling (CWE-122), CVSS 3.1 base score 9.8 (NVD)/8.6 (CNA), DoS or remote code execution.
- CVE-2021-38445 — OCI OpenDDS < 3.18.1, length-parameter mismatch in message parsing (CWE-130), CVSS 3.1 base score 9.8 (NVD), remote code execution.
- CVE-2021-38487 — RTI Connext Professional 4.2-6.1.0 / Connext Micro >=2.4, crafted-packet traffic amplification (CWE-406/CWE-923), CVSS 3.1 base score 9.1 (NVD)/8.2 (RTI), DoS + information exposure. This subsystem’s own middleware stack was not verified against these specific CVE IDs in this pass (vendor/version not in scope of this document) — they are cited solely as evidence that memory-safety and message-validation bugs in DDS implementations have shipped in production before.
- ASIL context (functional safety cross-reference, per ISO 26262): Surround View display-only functions are typically classified QM/ASIL A (driver remains in the control loop). Automated/ remote Parking Assist that actuates steering and braking without a human in the loop is commonly decomposed per ISO 26262-9: perception/planning at QM/ASIL A, with the final actuation arbitration and emergency-stop monitor independently rated ASIL B (final OEM HARA governs the authoritative rating; the ratings here are typical industry convention, not this program’s actual HARA output). This cross-reference is why SYS-TS-02, SYS-TS-06, and SW-VC-05 are treated as safety-critical regardless of their computed CVSS score.
- Not covered: high-speed ADAS functions (highway lane-keep, adaptive cruise) and non-vehicle backend infrastructure are out of scope for this pass.
0.1 Engagement timeline
| Phase | Illustrative dates (2026) | Activity | Ticket range |
|---|---|---|---|
| Kickoff & scoping | Feb 02 - Feb 06 | Scope confirmation, architecture walkthrough with Tier-1 dev team, rules of engagement sign-off | SEC-2401 |
| TARA workshop | Feb 09 - Feb 13 | Asset/damage-scenario/threat-scenario workshop with functional safety liaison (see iso21434-tara-grounding) |
SEC-2402 |
| System-level testing | Feb 16 - Mar 06 | Bench + in-vehicle-rig pen-testing: camera spoofing, CAN fuzzing, UDS abuse, ultrasonic jamming | SEC-2410 - SEC-2417 |
| Software-level testing | Feb 16 - Mar 13 | Static analysis (SAST), dynamic analysis (sanitizers), fuzz campaigns, manual code review, ML model integrity check | SEC-2420 - SEC-2431 |
| Triage & scoring | Mar 16 - Mar 20 | CVSS v3.1 scoring, ISO 21434 impact/feasibility re-rating, ASIL cross-check with functional safety liaison | SEC-2402 (follow-up) |
| Remediation planning | Mar 23 - Mar 27 | Engineering triage meeting; findings assigned owners, target dates, and treatment decisions | see Section 4 “Ticket” column |
| Retest window | Apr 20 - Apr 24 | Verification of closed findings against fix builds | SEC-24xx-R suffix |
| Report finalization | Apr 27 - Apr 30 | This report issued to Tier-1 Program Security Manager and OEM PSIRT | VA-SVS-PA-2026-014 |
1. Executive Summary
This analysis examined the SVS/Parking Assist subsystem across nine system-level attack surfaces and eight software components over a 13-week engagement (Section 0.1). 17 threat scenarios were identified at the system level and 12 vulnerability classes at the software level, backed by 7 bench/rig pen-test cases, 8 static-analysis findings, 2 fuzz campaigns worth of crash triage, and one manual code review pass. Three findings are rated safety-critical (Section 5 gives each a full case-study narrative) because they can lead to an unintended or missed actuation command affecting low-speed steering or braking during a parking maneuver:
- SYS-TS-06 / PT-02 — forged/replayed CAN actuation command due to a missing or weak SecOC
binding on the parking-command PDU. CVSS 3.1: 8.1 (High) —
AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H. Ticket SEC-2412, closed-verified after retest (Section 5.1).- SYS-TS-10 / PT-04 — weak UDS SecurityAccess seed/key scheme allowing brute-forced diagnostic
unlock, then a routine-control call directly to the actuator self-test service. CVSS 3.1: 8.8
(High) —
AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Ticket SEC-2415, closed-verified (Section 5.2).
- SYS-TS-10 / PT-04 — weak UDS SecurityAccess seed/key scheme allowing brute-forced diagnostic
unlock, then a routine-control call directly to the actuator self-test service. CVSS 3.1: 8.8
(High) —
- SW-VC-05 / CR-01 — unauthenticated/unsigned perception-model update allowing a tampered model to be loaded (ML model integrity). No CVSS assigned (design gap, not an exploitable code defect in the classic sense) — ISO 21434 impact Safety: Major. Ticket SEC-2427, open pending Q3 architecture change (Section 5.3).
Existing chip-level controls in this repo (SecOC MAC+freshness, TDA4VM secure boot chain, UDS SecurityAccess, secure storage KEK/DKEK) already treat several of these risks when correctly applied to the SVS/Parking software stack — the root cause in both closed findings (SYS-TS-06, SYS-TS-10) was that the SVS/Parking application team had not yet integrated the platform controls that already exist and are required elsewhere in this repo, not a missing platform capability. Two concrete architectural gaps remain open and are proposed as candidates for future requirements work (Section 6): image/sensor plausibility checking for camera and ultrasonic spoofing, and signed perception-model artifacts with their own anti-rollback counter.
2. System-Level Vulnerability Analysis
2.1 Attack surfaces
| ID | Attack surface | Description |
|---|---|---|
| SYS-AS-01 | Camera modules & harness | 4-8 fisheye cameras over FPD-Link/GMSL to the SoC ISP input |
| SYS-AS-02 | Ultrasonic sensors | Parking-assist range sensors, typically reporting over LIN/CAN into the fusion input |
| SYS-AS-03 | SVS/Parking ECU compute (TDA4VM) | ISP, stitching, fusion, perception, planner, actuator-command generation |
| SYS-AS-04 | In-vehicle CAN bus | Carries ultrasonic data in and actuation commands out, through a gateway ECU |
| SYS-AS-05 | Automotive Ethernet / internal middleware bus | Raw/compressed camera stream and DDS/SOME-IP topics between SoC cores or ECUs |
| SYS-AS-06 | Sensor fusion pipeline | Combines camera, ultrasonic, and wheel-speed/odometry inputs |
| SYS-AS-07 | OTA update interface | Telematics unit delivers SVS/Parking firmware and perception-model updates |
| SYS-AS-08 | UDS diagnostics | Service-tool access over OBD-II/gateway, gated by SecurityAccess |
| SYS-AS-09 | Actuator interfaces | Low-speed steering-assist (EPS) and brake-actuation command paths for automated parking |
2.2 Threat scenarios (system level)
| ID | Attack surface | STRIDE | Threat scenario (attack path) |
|---|---|---|---|
| SYS-TS-01 | SYS-AS-01 | Spoofing | Attacker projects a static/adversarial image pattern or replays a recorded frame into a camera’s field of view to make the perception pipeline see a false free-space/obstacle state |
| SYS-TS-02 | SYS-AS-01, 03 | Spoofing, Tampering | Compromised or physically substituted camera module injects a manipulated video stream directly onto the FPD-Link/GMSL link, bypassing plausibility checks in the ISP |
| SYS-TS-03 | SYS-AS-02 | Spoofing | Ultrasonic echo spoofing/jamming causes false-negative (missed obstacle) or false-positive (phantom obstacle) readings |
| SYS-TS-04 | SYS-AS-04 | Tampering, DoS | CAN bus flooding (high-priority ID abuse) starves the parking-command frame’s bus access budget, delaying an emergency-stop signal |
| SYS-TS-05 | SYS-AS-04 | Repudiation | Absent per-frame authenticity binding makes it impossible to prove which ECU originated a given actuation command after an incident |
| SYS-TS-06 | SYS-AS-04, 09 | Spoofing, Tampering | Forged or replayed parking actuation command frame injected via a compromised gateway ECU or physical bus access, absent SecOC MAC/freshness enforcement |
| SYS-TS-07 | SYS-AS-05 | Tampering | Unauthenticated DDS/SOME-IP publish onto an internal actuation-command topic from a compromised co-located process |
| SYS-TS-08 | SYS-AS-06 | Tampering | Timing manipulation of one fusion input (e.g., delayed ultrasonic frame) to desynchronize sensor fusion and degrade obstacle-distance estimates |
| SYS-TS-09 | SYS-AS-07 | Tampering, Elevation | Malicious/downgraded SVS or Parking firmware or perception-model package delivered via OTA if signing/anti-rollback is not enforced for this subsystem’s artifacts |
| SYS-TS-10 | SYS-AS-08 | Elevation | Weak UDS SecurityAccess seed/key scheme allows an attacker with bus access to unlock diagnostic routine-control services and directly invoke actuator test/calibration routines |
| SYS-TS-11 | SYS-AS-08 | Info. disclosure | Diagnostic read-data-by-identifier services exposed without adequate access control leak calibration/perception-model parameters |
| SYS-TS-12 | SYS-AS-09 | DoS | Denial-of-service on the actuation command channel causes the planner’s command to be dropped/delayed during an active maneuver |
| SYS-TS-13 | SYS-AS-03 | Tampering | JTAG/debug port left open in a non-HS-SE lifecycle state allows direct manipulation of ISP/perception/planner runtime state |
| SYS-TS-14 | SYS-AS-03 | Info. disclosure | Extraction of stored perception-model weights or calibration secrets from ECU non-volatile storage if not encrypted at rest |
| SYS-TS-15 | SYS-AS-04 | Repudiation | Missing/incomplete security-event logging for rejected CAN frames prevents post-incident reconstruction of an attempted injection |
| SYS-TS-16 | SYS-AS-06 | Tampering | Cross-sensor plausibility check absent, so a single spoofed sensor input (camera or ultrasonic) is trusted without corroboration |
| SYS-TS-17 | SYS-AS-07 | DoS | OTA update process interrupted mid-flash for the SVS/Parking software partition leaves the subsystem non-functional (loss of parking-assist safety net) until recovery |
2.3 Attack tree — “Inject a false parking-assist actuation command”
graph TD
Goal[Attacker Goal - Inject False Parking Actuation Command]
Goal --> A1[Path A - CAN Injection]
Goal --> A2[Path B - Camera or Ultrasonic Spoofing]
Goal --> A3[Path C - UDS SecurityAccess Abuse]
Goal --> A4[Path D - Malicious OTA Update]
Goal --> A5[Path E - Unauthenticated Middleware Message]
A1 --> A1a[Physical OBD Access or Compromised Gateway]
A1a --> A1b[Weak or Missing SecOC MAC and Freshness]
A1b --> A1c[Forge Actuation PDU Accepted by Planner]
A2 --> A2a[Project Adversarial Pattern or Replay Recorded Frame]
A2a --> A2b[Perception Pipeline Misclassifies Free Space]
A2b --> A2c[Planner Issues Unsafe Command From Bad Input]
A3 --> A3a[Weak Seed Key Challenge Response]
A3a --> A3b[Bypass Security Access Gate]
A3b --> A3c[Invoke Routine Control Service Directly]
A4 --> A4a[Compromise Update Package or Steal Signing Key]
A4a --> A4b[Bypass Anti Rollback or Signature Check]
A4b --> A4c[Malicious Planner Logic Activated After Reboot]
A5 --> A5a[Access Internal DDS or SOME-IP Bus]
A5a --> A5b[No Message Level Authentication]
A5b --> A5c[Inject Fabricated Actuation Topic]
2.4 System-level evidence artifacts
Full evidence content is reproduced in the Appendices at the end of this report (this is the
consolidated, hand-over form of this deliverable). The same raw files are also kept under
evidence/ as attachments for tooling/diff purposes.
| Artifact | Appendix | Raw file (attached) |
|---|---|---|
| Attack-surface / trust-boundary diagram | Section 2.5 below (Mermaid) | - |
| Data-flow diagram (DFD) | Section 2.6 below (Mermaid) | - |
| CAN log showing abnormal traffic | Appendix A | evidence/system/can_log_excerpt.log |
| ECU/UDS access log excerpt | Appendix B | evidence/system/ecu_access_log_excerpt.log |
| Pen-test findings (camera spoofing, CAN fuzzing, UDS abuse) | Appendix C | evidence/system/pentest_findings.md |
2.5 Attack-surface / trust-boundary diagram
graph LR
subgraph Ext[External or Untrusted]
CAM[Camera Modules x4-8]
US[Ultrasonic Sensors]
OBD[OBD-II Diagnostic Tool]
TCU[Telematics Unit - OTA Source]
end
subgraph ECU[SVS and Parking ECU - TDA4VM]
ISP[ISP and Stitching Pipeline]
FUS[Sensor Fusion]
PER[Perception Model]
PLN[Trajectory Planner]
ACT[Actuator Command Interface]
UDSS[UDS Diagnostic Server]
OTAC[OTA Client and Secure Reprogramming]
BOOT[Secure Boot Chain]
end
subgraph VehNet[Vehicle Network]
CANBUS[CAN Bus]
GW[Gateway ECU]
end
subgraph Actu[Actuation Domain]
EPS[EPS Steering Assist]
BRK[Brake Actuation]
end
CAM -->|video link| ISP
US -->|range data| CANBUS
ISP --> FUS
FUS --> PER
PER --> PLN
PLN --> ACT
ACT -->|CAN command| CANBUS
CANBUS --> GW
GW --> EPS
GW --> BRK
OBD -->|UDS over CAN| UDSS
TCU -->|OTA package| OTAC
OTAC --> BOOT
BOOT --> ISP
2.6 Data-flow diagram (DFD)
flowchart LR
Camera[Camera Sensor Data] --> ISP2[ISP Pipeline]
ISP2 --> Stitch[Stitching Algorithm]
Stitch --> FusionIn[Sensor Fusion Input]
Ultrasonic[Ultrasonic Range Data] --> FusionIn
FusionIn --> Percep[Perception - Free Space and Obstacle Detection]
Percep --> Plan[Trajectory Planner]
Plan --> CmdGen[Actuation Command Generator]
CmdGen -->|SecOC protected PDU| Bus[CAN or Automotive Ethernet]
Bus --> Actuators[Steering and Brake Actuators]
Diag[UDS Diagnostic Session] -.->|SecurityAccess gated| Plan
OTAPkg[OTA Update Package] -.->|Secure Reprogramming path| Percep
3. Software-Level Vulnerability Analysis
3.1 Software component breakdown
| Component | Role |
|---|---|
| Camera driver | Ingests raw sensor data from FPD-Link/GMSL deserializer over the SoC’s camera capture interface |
| ISP pipeline | Demosaic, lens-distortion correction, HDR blending |
| Stitching algorithm | Combines multiple camera views into a birds-eye-view composite |
| Perception model | ML-based free-space/obstacle/parking-slot detection |
| Trajectory planner | Computes steering/speed guidance for the parking maneuver |
| Actuator control logic | Translates planner output into actuation command PDUs |
| Middleware (ROS2/DDS or AUTOSAR Adaptive) | Inter-process communication between the above components |
| Bootloader / OTA client | Loads and updates the subsystem’s software and model artifacts |
3.2 Vulnerability classes (CWE-mapped)
| ID | Component | Vulnerability class | CWE | Description |
|---|---|---|---|---|
| SW-VC-01 | Camera driver | Missing input validation on frame metadata | CWE-20 | Malformed frame header/size fields not validated before buffer allocation |
| SW-VC-02 | ISP pipeline | Buffer overflow in image buffer handling | CWE-120 / CWE-787 | Out-of-bounds write when a frame’s reported resolution exceeds the allocated buffer |
| SW-VC-03 | Stitching algorithm | Integer overflow feeding buffer size calculation | CWE-190 | Width x height x channels multiplication overflow leads to undersized allocation |
| SW-VC-04 | Perception model | Adversarial input not detected | CWE-1039 (insufficient ML input validation) | No plausibility/consistency check between perception output and other sensor modalities |
| SW-VC-05 | Perception model / OTA client | Unsigned/unverified model artifact | CWE-494 (download of code without integrity check) | Model weights file loaded without signature or hash verification distinct from the firmware image check |
| SW-VC-06 | Trajectory planner | Race condition on shared fusion-state buffer | CWE-362 | Planner reads a partially updated fusion buffer during a concurrent write from the fusion thread |
| SW-VC-07 | Actuator control logic | Missing authentication for critical function | CWE-306 | Actuation command generation callable via an internal API without caller authentication |
| SW-VC-08 | Middleware (DDS/SOME-IP) | Insecure IPC / unauthenticated topic | CWE-306 / CWE-862 | Actuation-command topic accepts publishes from any co-located process without an access-control policy. Real-world precedent: CVE-2021-38439 (GurumDDS heap overflow, CVSS 9.8) and CVE-2021-38487 (RTI Connext traffic-amplification DoS, CVSS 9.1) confirm DDS-layer memory-safety/DoS bugs have shipped in production middleware (Section 0) |
| SW-VC-09 | Bootloader/OTA client | Improper rollback protection for subsystem-specific artifacts | CWE-1277 | Version check enforced for the base OS image, not verified as also covering the SVS/Parking application partition and model file |
| SW-VC-10 | Camera driver / ISP | Unchecked return value on sensor init | CWE-252 | Camera link failure not distinguished from “zero obstacles” at the fusion layer |
| SW-VC-11 | Stitching algorithm | Use of unsafe memory operations | CWE-676 | Direct memcpy/pointer-arithmetic on frame buffers without bounds assertions |
| SW-VC-12 | Trajectory planner | Insufficiently randomized/predictable internal sequence counters | CWE-330 | Command sequence numbers reused after restart, weakening replay detection above the SecOC layer |
3.3 Software-level evidence artifacts
| Artifact | Appendix | Raw file (attached) |
|---|---|---|
| Static analysis (MISRA/CWE mapping) | Appendix D | evidence/software/static_analysis_misra_cwe.md |
| Dynamic analysis log | Appendix E | evidence/software/dynamic_analysis_log.log |
| Fuzz testing results (camera frames, DDS messages, parking commands) | Appendix F | evidence/software/fuzzing_results.md |
| Crash dump | Appendix G | evidence/software/crash_dump_excerpt.log |
| Code review findings | Appendix H | evidence/software/code_review_findings.md |
| ML model integrity verification | Appendix I | evidence/software/ml_model_integrity_check.md |
4. Risk Evaluation (CVSS + ISO 21434 Impact x Feasibility, ASIL-aware)
Each finding is dual-scored, matching how this program’s PSIRT actually triages: CVSS v3.1 gives a vendor-comparable technical severity number; the ISO 21434 impact/feasibility rating (Safety/ Financial/Operational/Privacy x attack-feasibility parameters per Annex G - elapsed time, expertise, knowledge of the item, window of opportunity, equipment) is what actually drives the item’s own risk-treatment decision, because a 9.8 CVSS bug with no safety path is not automatically more urgent than a 6.5 CVSS bug that reaches an actuator. The ASIL column flags whether the finding’s attack path reaches a function inside the ASIL-B-decomposed actuation-arbitration boundary (Section 0).
| ID | Threat/Vulnerability | CVSS 3.1 (vector) | ISO 21434 Impact | Feasibility (Annex G summary) | ASIL path? | Risk | Ticket / status |
|---|---|---|---|---|---|---|---|
| SYS-TS-06 | Forged/replayed parking actuation command (PT-02) | 8.1 High - AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H | Safety: Severe | Medium - bus access via OBD or compromised gateway, common tooling (CANoe/PCAN), no special expertise once bus access exists | Yes (ASIL B path) | Critical | SEC-2412 - Closed-Verified (retest Apr 22) |
| SYS-TS-10 | Weak UDS SecurityAccess -> actuator routine-control (PT-04) | 8.8 High - AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | Safety: Moderate, Operational: Major | Medium - seed/key brute force in under 10s with a scripted tester, moderate UDS expertise | Yes (ASIL B path) | Critical | SEC-2415 - Closed-Verified (retest Apr 23) |
| SW-VC-05 | Unsigned perception-model artifact loaded via OTA | N/A (architecture gap, not a single code defect) | Safety: Major | Medium - requires OTA-channel or supply-chain compromise, but no cryptographic check to defeat once artifact is substituted | Yes (ASIL A/B path) | High | SEC-2427 - Open, target Q3 2026 architecture change |
| SYS-TS-02 | Camera/ultrasonic spoofing feeds bad free-space data to planner (PT-01, PT-06) | N/A (physical/sensor-layer, no CVE-style scoring) | Safety: Major | Medium - requires physical proximity/line-of-sight (image projection or ultrasonic jammer), moderate equipment cost | Yes (ASIL A path) | High | SEC-2429 - Open, mitigation = plausibility check (Section 6) |
| SW-VC-02 | ISP buffer overflow from oversized frame (dynamic analysis) | 7.5 High - AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | Safety: Moderate, Operational: Major | Medium - reachable by any device on the camera link, no auth required | No (DoS/crash, not direct actuation spoof) | Medium-High | SEC-2422 - Open, fix in next sprint |
| SW-VC-08 | Unauthenticated internal actuation-command topic publish | 6.5 Medium (illustrative, scored as if reachable only from a co-located compromised process) - AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H | Safety: Major | Low-Medium - requires prior code-execution foothold on the same SoC | Yes | Medium-High | SEC-2425 - Open, mitigation = DDS Security profile |
| SYS-TS-04 | CAN bus flooding delaying emergency stop | 5.9 Medium - AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | Safety: Moderate | Medium | No (degrades, doesn’t spoof) | Medium | SEC-2414 - Open, mitigation = bus-load monitoring |
| SYS-TS-14 | Extraction of stored perception-model/calibration secrets | N/A | Privacy: Moderate, Financial: Moderate | Low - mitigated if CSG-STO-1/CSG-STO-2 correctly applied | No | Low | SEC-2430 - Closed, confirmed STO controls already cover model file |
| SW-VC-06 | Race condition on fusion buffer | 4.4 Medium - AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:L | Safety: Moderate | Low - timing-dependent, hard to reliably trigger | No | Low-Medium | SEC-2423 - Open, low priority |
| SYS-TS-13 | Open JTAG in non-HS-SE lifecycle state | N/A (config/lifecycle, not code) | Safety: Major, Operational: Major | Low - production units provisioned HS-SE (PT-07: pass, no finding) | Yes (if misconfigured) | Medium (residual, config-dependent) | SEC-2417 - Closed, no finding in this pass |
| SYS-TS-17 | Interrupted OTA leaves parking-assist non-functional | 5.3 Medium - AV:A/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L | Operational: Major, Safety: Negligible (assist-only) | Low | No | Low-Medium | SEC-2431 - Open, low priority |
| SW-VC-09 | Rollback protection not extended to subsystem artifacts | N/A (design gap) | Safety: Moderate | Medium | Yes (conditional) | Medium | SEC-2427 (tracked with SW-VC-05) |
Top 3 safety-critical risks driving mitigation priority: SYS-TS-06 (Critical, closed-verified), SYS-TS-10 (Critical, closed-verified), SW-VC-05 (High, open). Each has a full case-study narrative in Section 5.
5. Case-Study Narratives (Discovery, Response, Lesson)
Written as short, interview-ready storylines for the three safety-critical findings.
5.1 SYS-TS-06 / PT-02 - the replayed parking-command frame
Discovery. During CAN fuzzing (Ticket SEC-2411), the penetration tester noticed that byte-identical replays of a previously captured, perfectly valid parking-actuation frame (CAN ID 0x2A1) were accepted by the ECU every time, even minutes after capture - the fuzzer’s out-of-range payload mutations were correctly rejected, but a replay of a legitimate frame was not a mutation the fuzzer was designed to flag on its own; it was a manual pen-test observation layered on top of the fuzz corpus (see Appendix C PT-02 and Appendix A).
Investigation. Root cause: the SVS/Parking application team had implemented their own lightweight rolling counter for the 0x2A1 PDU instead of integrating the platform’s existing SecOC stack (CSG-SECOC-1/CSG-SECOC-2), and the counter reset to zero on every ECU reset - so a frame captured before any reset stayed valid indefinitely after one.
Impact. Because 0x2A1 drives the low-speed steering/brake actuation arbitration (ASIL B path, Section 0), a replayed “steer left, proceed” frame injected while the vehicle is stationary in a tight parking bay could command unintended motion toward an object outside the driver’s immediate attention.
Response. Filed as SEC-2412 (Critical), triaged in the Mar 23-27 remediation meeting: decision was to retire the bespoke counter and integrate the existing CSG-SECOC-1 through CSG-SECOC-3 MAC and Data-ID-bound freshness mechanism already mandated platform-wide. Retested Apr 22 against the fix build - replay attempts were rejected with a logged FRESHNESS_FAIL event (CSG-SECOC-4, CSG-LOG-1). Closed-verified.
Lesson (for interviews): the platform already had the right control; the defect was an application team re-implementing a weaker version of it instead of reusing the qualified stack - a recurring finding across ADAS subsystems, and a good example of why a security review has to check integration, not just existence, of a control.
5.2 SYS-TS-10 / PT-04 - the un-rate-limited SecurityAccess seed
Discovery. During UDS diagnostic testing (Ticket SEC-2413), the tester observed the ECU return an identical seed on every requestSeed retry and never impose a lockout/backoff delay, even after 10 consecutive failed sendKey attempts (see Appendix B). A scripted brute force over the (deliberately narrow, in this synthetic example) key space succeeded on the 11th attempt in under ten seconds.
Investigation. The routine-control service unlocked by SecurityAccess level 1 in this subsystem included an actuator self-test routine originally intended only for end-of-line manufacturing test, left reachable from the same session used for normal field diagnostics.
Impact. An attacker with OBD-II access (a widely available, low-cost entry point) could brute force SecurityAccess and directly invoke the actuator self-test routine outside of any planner supervision - bypassing the perception/planning logic entirely.
Response. Filed as SEC-2415 (Critical). Remediation: seed re-randomized per attempt, exponential lockout/backoff after 3 failed attempts per CSG-SA-3, and end-of-line-only routines moved behind a manufacturing-only SecurityAccess level not reachable in the field session, per CSG-SA-4. Retested Apr 23 - 50 scripted brute-force attempts over 10 minutes were all rejected after the 3rd attempt with a logged lockout event. Closed-verified.
Lesson (for interviews): manufacturing/EOL test hooks left reachable in production field sessions are a recurring real-world UDS finding - always ask which SecurityAccess level gates a given routine, and whether that level’s exposure was re-reviewed after the routine’s original manufacturing-only purpose was forgotten.
5.3 SW-VC-05 / CR-01 - the unsigned perception-model file (open finding)
Discovery. During manual code review (Ticket SEC-2426) of perception_loader.c, the reviewer noted the model file is read from a path built by concatenating an OTA-delivered filename with no signature or hash check before the weights are loaded into the inference runtime (see Appendix H CR-01 and Appendix I). The base firmware image is correctly signature-checked through the existing secure boot/reprogramming chain (TSR-1, CSG-SRP-1) - the model file simply was never brought into that same trust boundary because it ships as a separate content-only OTA payload, not a firmware partition.
Investigation. No CVSS score applies cleanly because this is an architectural gap rather than a single exploitable code path - the finding is “absence of a control,” scored purely on ISO 21434 impact/feasibility (Safety: Major, Medium feasibility given OTA-channel or supply-chain compromise is required first).
Impact. A substituted or deliberately degraded perception model (e.g., one with a wider blind spot around a specific obstacle class) would load and run with no detectable difference from a genuine update, directly undermining the free-space/obstacle judgment feeding the ASIL-A/B planner path.
Response. Filed as SEC-2427 (High). Because fixing this properly requires extending the OTA manifest/signing scheme to a new content type (not just a config change), the Mar 23-27 remediation meeting accepted it as an open architecture-change item targeted for a Q3 2026 OTA-manifest revision, with a compensating control in the interim: the model file’s SHA-256 is logged at every boot (CSG-LOG-1) so a substitution would at least be forensically detectable after the fact, even though it would not be prevented.
Lesson (for interviews): ML/AI model artifacts are frequently left outside an otherwise mature secure-boot/OTA trust chain because they are treated as “data,” not “code” - a good talking point for any question about ML supply-chain integrity in ADAS.
6. Mitigation Strategy
| Finding | Recommended countermeasure | Existing repo requirement (if any) |
|---|---|---|
| SYS-TS-06 (forged/replayed actuation command) | Apply SecOC MAC + freshness to every parking/SVS actuation PDU on CAN/Ethernet | Covered by CSG-SECOC-1, CSG-SECOC-2, CSG-SECOC-3 (per-PDU MAC bound to Data ID, independent freshness check) — apply these to the SVS/Parking PDU set explicitly |
| SYS-TS-06 (key exposure) | Keep MAC key material inside the hardware crypto accelerator only | Covered by CSG-SECOC-5 |
| SW-VC-05 (unsigned model artifact) / SYS-TS-09 (malicious OTA payload) | Extend artifact signing and anti-rollback to the perception-model file, not only the firmware image | Base mechanism covered by CSG-OTA-1, CSG-OTA-3, CSG-SRP-2 (anti-rollback) — gap: none of these explicitly scope “model weights file” as a signed artifact type; recommend an explicit statement that model artifacts are in-scope for CSG-SRP-1/CSG-SRP-2 |
| SYS-TS-10 (weak UDS SecurityAccess) | Enforce freshness/nonce challenge-response, lockout/backoff, session-scoped access for any routine-control service that can move an actuator | Covered by CSG-SA-1 through CSG-SA-5 |
| SYS-TS-13 (open JTAG) | Confirm production units are provisioned HS-SE (all cores closed by default) and debug unlock requires certificate authorization | Covered by CSG-JTAG-1, CSG-JTAG-2 |
| SYS-TS-14 (stored secret/model extraction) | Encrypt perception-model weights and calibration secrets at rest, bind confidentiality to device identity | Covered by CSG-STO-1, CSG-STO-2 |
| SW-VC-02/03/11 (buffer/integer overflow, unsafe memcpy) | Bounds-checked frame handling, MISRA-C compliant buffer arithmetic, fuzz-test the ISP/stitching input path before release | Gap — no existing CSG in this repo addresses SVS-specific memory-safety hardening; recommend as a software-quality/secure-coding control alongside (not replacing) the runtime tamper detection in TDA4VM_RTMD_Requirements.md |
| SYS-TS-01/02, SW-VC-04 (camera/sensor spoofing, no plausibility check) | Cross-sensor plausibility checks (camera vs. ultrasonic vs. wheel-speed) before trusting a single-sensor “free space” determination | Gap — genuinely new capability, not covered by any existing CSG/TSR in this repo; candidate for a future perception-integrity requirement, routed through CSG-VULN-4/CSG-VULN-5 risk-treatment tracking |
| SW-VC-08 (unauthenticated internal topic) | Apply a DDS/SOME-IP security profile (authenticated participants, access-control lists per topic) to the actuation-command topic | Gap — this repo’s SecOC doc covers on-bus PDUs, not intra-ECU middleware topics; recommend extending SecOC-equivalent authentication to the middleware layer |
| SYS-TS-04/12 (CAN flooding / actuation DoS) | Bus-load monitoring and intrusion detection correlated with runtime tamper detection | Aligns with CSG-RTMD-1, CSG-RTMD-2 (graded response to detection events) |
| All findings | Preserve detection/response evidence for post-incident analysis | Covered by CSG-LOG-1 through CSG-LOG-5 |
| All findings, ongoing | Continuously monitor for newly disclosed vulnerabilities in SVS/Parking-specific third-party libraries (stitching, ML runtime, middleware) | Route through the existing SBOM/CVE-monitoring process in CSG-VULN-1, CSG-VULN-2 |
7. Compliance Mapping
ISO 21434
- Clause 8 (Continuous cybersecurity activities): findings SW-VC-05, SYS-TS-09 feed into the
existing monitoring/vulnerability-management process (
TDA4VM_Vulnerability_Analysis_Requirements.md,CSG-VULN-1throughCSG-VULN-5). - Clause 9/10 (Concept and product development): the two identified gaps (cross-sensor plausibility checking, signed perception-model artifacts) are candidates for new/extended requirements in the concept phase, not immediate patches.
- Clause 15 (Threat analysis and risk assessment methods): Sections 2-4 of this report
constitute the TARA pass for this subsystem, using the asset/damage-scenario/threat-scenario/
attack-feasibility vocabulary from this repo’s
iso21434-tara-groundingskill.
SAE J3061
- Threat analysis activity: satisfied by Section 2 (attack surfaces, STRIDE, attack tree).
- Secure design review activity: satisfied by Section 6 mapping mitigations to existing requirement IDs and flagging design gaps.
- Vulnerability testing activity: represented by the (illustrative) static/dynamic/fuzz evidence in Section 3.3 — must be replaced with real test-campaign output before this report is used as an audit artifact.
UN R155 (Cyber Security Management System) / UN R156 (Software Update Management System)
These are real, currently-in-force UNECE WP.29 regulations that OEMs selling into the EU/UK/Japan/ Korea markets must hold type-approval certification against (mandatory for all new vehicle types since July 2022, and all new vehicles produced since July 2024 in those markets) — this is the regulatory reason a Tier-1 delivering an SVS/Parking Assist ECU is required to produce evidence like this report at all, not just an ISO 21434 best-practice exercise:
- R155 Annex 5 Part A threat catalogue: this report’s system-level threat scenarios (Section 2.2) are directly traceable to R155 threat categories — e.g. SYS-TS-06 maps to R155’s “spoofing of messages… by impersonation” category, SYS-TS-09/SW-VC-05 map to R155’s update-process threat category.
- R155 monitoring/response obligation: satisfied by routing this report’s findings through the
existing
CSG-VULN-1throughCSG-VULN-5continuous-monitoring process. - R156 (SUMS): SW-VC-05/SW-VC-09 (unsigned/under-scoped rollback protection for OTA artifacts) are a direct R156 compliance gap — R156 requires the update process to protect the integrity of all delivered software content, not only the base firmware image.
ISO 26262 (functional safety cross-reference)
Per the ASIL context in Section 0, findings SYS-TS-06, SYS-TS-10, and SW-VC-05 reach a function inside the (typical-convention) ASIL B actuation-arbitration boundary. This is why they were reviewed jointly with the Functional Safety Liaison rather than triaged by the security team alone — a cybersecurity finding that reaches a safety-rated function must be assessed for whether it also constitutes a new hazardous-event contributor requiring a HARA update, per ISO 21434 Clause 15’s interface with ISO 26262.
8. Next Steps
- Replace all illustrative evidence files under
evidence/with real tool/lab output. - Track SEC-2427/SEC-2429 (open architecture-change items) to the Q3 2026 OTA-manifest revision and the perception-integrity plausibility-check design, respectively.
- Route the two identified requirement gaps (camera/sensor plausibility checking; signed
perception-model artifacts) through
requirements-doc-scaffolding/requirements-reviewif the decision is to formalize them as new CSG/TSR entries. - Re-run this analysis after any change to the SVS/Parking software architecture or attack surface (new sensor, new middleware, new OTA content type), and before the next R155/R156 type-approval submission milestone.
Appendices
These appendices are the consolidated evidence body of this report, reproduced in full here so the
report is a single self-contained deliverable, matching how a completed vulnerability assessment is
typically handed to an OEM or auditor: one document, numbered appendices at the back, rather than a
folder of separate files the reader has to open individually. The identical content is also kept as
standalone files under evidence/ for tooling and diff convenience; the appendices below are the
authoritative copy for this report version.
Appendix A: CAN log excerpt
Illustrative example, not captured from a real bus/vehicle. Source: evidence/system/can_log_excerpt.log.
# CAN log excerpt - abnormal traffic on the parking-assist actuation ID
# Format: timestamp interface CAN-ID DLC data-bytes
# --- Baseline (normal) traffic: parking actuation command 0x2A1 at ~50 ms cadence ---
1699999900.001200 can0 2A1 8 01 00 32 00 00 00 4F 9C
1699999900.051300 can0 2A1 8 01 00 32 00 00 01 5A 3B
1699999900.101250 can0 2A1 8 01 00 33 00 00 02 61 07
# --- Anomaly window: duplicate/replayed frame with stale counter (byte 5) ---
1699999900.101900 can0 2A1 8 01 00 32 00 00 00 4F 9C # duplicate, counter rolled back
1699999900.102010 can0 2A1 8 01 00 32 00 00 00 4F 9C # replayed again 110 us later
1699999900.102125 can0 2A1 8 01 00 32 00 00 00 4F 9C
# --- Bus-load anomaly: high-priority ID flood observed concurrently with the above ---
1699999900.102200 can0 080 8 FF FF FF FF FF FF FF FF
1699999900.102260 can0 080 8 FF FF FF FF FF FF FF FF
1699999900.102320 can0 080 8 FF FF FF FF FF FF FF FF
# ... (2400 additional 0x080 frames omitted, bus load reached 98% for ~1.2s) ...
# --- SecOC verification outcome (logged by the receiving ECU per CSG-SECOC-4) ---
# [SECURITY EVENT] 1699999900.102015 PDU=2A1 result=FRESHNESS_FAIL reason=counter_replay action=frame_dropped
# [SECURITY EVENT] 1699999900.102130 PDU=2A1 result=FRESHNESS_FAIL reason=counter_replay action=frame_dropped
Related: SYS-TS-06, Section 5.1, ticket SEC-2412.
Appendix B: ECU/UDS access log excerpt
Illustrative example, not captured from a real ECU. Source: evidence/system/ecu_access_log_excerpt.log.
2026-08-10T14:02:11Z UDS RX 0x10 0x03 # DiagnosticSessionControl - extended session
2026-08-10T14:02:11Z UDS TX 0x50 0x03 0x00 0x32 0x01 0xF4
2026-08-10T14:02:12Z UDS RX 0x27 0x01 # SecurityAccess - requestSeed (level 1)
2026-08-10T14:02:12Z UDS TX 0x67 0x01 0x3F 0x8A 0x11 0x02
2026-08-10T14:02:12Z UDS RX 0x27 0x02 0xDE 0xAD 0xBE 0xEF # sendKey attempt 1 - INCORRECT
2026-08-10T14:02:12Z UDS TX 0x7F 0x27 0x35 # NRC 0x35 invalidKey
2026-08-10T14:02:13Z UDS RX 0x27 0x01 # requestSeed retry, no attempt-counter delay
2026-08-10T14:02:13Z UDS TX 0x67 0x01 0x3F 0x8A 0x11 0x02 # SAME seed returned - no re-randomization
2026-08-10T14:02:13Z UDS RX 0x27 0x02 0xCA 0xFE 0xBA 0xBE # sendKey attempt 2 - INCORRECT
2026-08-10T14:02:13Z UDS TX 0x7F 0x27 0x35
# ... 8 additional rapid attempts omitted, no lockout/backoff timer observed between attempts 1-10 ...
2026-08-10T14:02:19Z UDS RX 0x27 0x02 0x12 0x34 0x56 0x78 # sendKey attempt 11 - ACCEPTED
2026-08-10T14:02:19Z UDS TX 0x67 0x02
2026-08-10T14:02:20Z UDS RX 0x31 0x01 0xF0 0x0D # RoutineControl - start routine 0xF00D
2026-08-10T14:02:20Z UDS TX 0x71 0x01 0xF0 0x0D 0x00
Related: SYS-TS-10, Section 5.2, ticket SEC-2415.
Appendix C: Pen-test findings
Illustrative example synthesized to match Section 2.2’s threat scenarios. Source: evidence/system/pentest_findings.md.
| Finding ID | Ticket | Test type | Target | Result | Severity | Related threat scenario |
|---|---|---|---|---|---|---|
| PT-01 | SEC-2410 | Camera spoofing (image projection replay) | Front/rear fisheye camera FOV | Perception pipeline accepted a replayed static frame for 2.1s before a plausibility timeout rejected it | High | SYS-TS-01, SYS-TS-02 |
| PT-02 | SEC-2412 | CAN fuzzing (parking command ID 0x2A1) | In-vehicle CAN bus, physical OBD-II access | Byte-identical replay of a previously valid frame accepted (Appendix A). Section 5.1. Closed-Verified Apr 22. | Critical | SYS-TS-06 |
| PT-03 | SEC-2414 | CAN bus flood / bus-load DoS | In-vehicle CAN bus | Sustained 0x080-priority flood reduced 0x2A1 delivery rate but did not fully block it within the observed 1.2s window | Medium | SYS-TS-04 |
| PT-04 | SEC-2415 | UDS SecurityAccess abuse | OBD-II diagnostic port | Seed not re-randomized, no lockout after 10 failed attempts, 11th attempt succeeded (Appendix B). Section 5.2. Closed-Verified Apr 23. | Critical | SYS-TS-10 |
| PT-05 | SEC-2416 | UDS read-data-by-identifier enumeration | OBD-II diagnostic port | Several calibration DIDs readable in the default (non-extended) session without SecurityAccess | Medium | SYS-TS-11 |
| PT-06 | SEC-2410 | Ultrasonic jamming | Rear bumper ultrasonic sensor array | Continuous-wave ultrasonic interference caused a sustained no-obstacle reading for 4.6s | High | SYS-TS-03 |
| PT-07 | SEC-2417 | JTAG lifecycle-state check | SoC debug header | Unit correctly provisioned HS-SE; debug unlock without a valid certificate was rejected | Pass (no finding) | SYS-TS-13 |
Appendix D: Static analysis (MISRA-C/CWE mapping)
Illustrative example formatted to resemble typical static-analyzer output. Source: evidence/software/static_analysis_misra_cwe.md.
| File / component | Line (illustrative) | MISRA C:2012 rule | CWE | Severity | Description |
|---|---|---|---|---|---|
| isp_frame_alloc.c | 142 | Rule 21.3 / Rule 1.3 | CWE-120 | High | Buffer size computed from unvalidated frame header width/height before allocation |
| stitch_compose.c | 88 | Rule 10.1 | CWE-190 | High | width x height x channels computed in 16-bit intermediate, can overflow before widening |
| stitch_compose.c | 205 | Rule 21.18 | CWE-676 / CWE-787 | High | memcpy length derived from network-supplied field without a bound check |
| perception_loader.c | 47 | Rule 22.1 / Rule 21.6 | CWE-494 | Critical | Model file opened and loaded with no signature/hash verification call before use |
| planner_fusion_if.c | 63 | Rule 8.13 / Rule 22.4 | CWE-362 | Medium | Shared fusion-state buffer accessed without a mutex/lock consistent with the writer thread |
| actuator_cmd_api.c | 21 | Rule 8.7 | CWE-306 | High | send_actuation_command() has external linkage with no caller-identity check |
| camera_driver_init.c | 30 | Rule 17.7 | CWE-252 | Medium | Return value of camera_link_status() not checked before proceeding to frame capture |
| dds_actuation_pub.cpp | 12 | (C++/DDS, not MISRA C scope) | CWE-862 | High | DDS topic QoS does not specify a security/access-control partition for the actuation-command topic |
Appendix E: Dynamic analysis log (sanitizer instrumentation)
Illustrative example, not captured from a real instrumented run. Source: evidence/software/dynamic_analysis_log.log.
==12345==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x602000014dd0 at pc 0x00000045a3f2 bp 0x7ffd9a1b2340 sp 0x7ffd9a1b2338
WRITE of size 4 at 0x602000014dd0 thread T3 (fusion_worker)
#0 0x45a3f1 in stitch_compose_row stitch_compose.c:206
#1 0x459d10 in stitch_compose_frame stitch_compose.c:112
#2 0x458aa2 in isp_pipeline_process isp_frame_alloc.c:301
#3 0x457b13 in camera_capture_thread_main camera_driver_init.c:88
0x602000014dd0 is located 16 bytes to the right of 3216-byte region [0x602000014100,0x602000014dc0)
allocated by thread T0 here:
#0 0x4a1234 in malloc
#1 0x458200 in isp_frame_alloc isp_frame_alloc.c:145
SUMMARY: AddressSanitizer: heap-buffer-overflow stitch_compose.c:206 in stitch_compose_row
==12345==ERROR: UndefinedBehaviorSanitizer: signed integer overflow: 46080 * 65536 cannot be
represented in type int
#0 0x45a290 in stitch_compose_frame stitch_compose.c:88
Fuzzed input that triggered both findings: frame header reporting width=1440 height=32, oversized relative to the negotiated camera mode (1280x800). Maps to SW-VC-02, SW-VC-03, SW-VC-11.
Appendix F: Fuzz testing results
Illustrative example formatted to resemble typical coverage-guided fuzzer summaries. Source: evidence/software/fuzzing_results.md.
| Fuzz target | Harness input | Duration (illustrative) | Executions | Unique crashes | Notable finding |
|---|---|---|---|---|---|
| Camera frame parser | Raw FPD-Link/GMSL frame header + payload | 24h | 1.8B | 3 | Oversized width/height header triggers heap-buffer-overflow in stitching (Appendix E) |
| DDS/SOME-IP actuation topic | Serialized actuation-command message | 24h | 640M | 1 | Malformed message with truncated payload accepted with no length/schema check. Real-world precedent: CVE-2021-38445 (OpenDDS length-parameter mismatch, CWE-130, CVSS 9.8), Section 0 |
| Parking command CAN payload | 8-byte CAN payload for ID 0x2A1 | 12h | 210M | 0 crashes, 1 logic finding | Fuzzer confirmed range-check rejects out-of-range steering angle/speed values, but did not detect the replay issue found in pen-testing (PT-02) |
| UDS service fuzzing | UDS request bytes across supported SIDs | 12h | 95M | 1 | RoutineControl with an unsupported sub-function ID caused a delayed NRC (0.9s) instead of an immediate reject |
Appendix G: Crash dump excerpt
Illustrative example, not captured from a real crash/core dump. Source: evidence/software/crash_dump_excerpt.log.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x000000000045a3f1 in stitch_compose_row (row=32, buf=0x602000014dc0, len=3232)
at stitch_compose.c:206
#1 0x0000000000459d10 in stitch_compose_frame (frame=0x7ffd9a1b2500)
at stitch_compose.c:112
#2 0x0000000000458aa2 in isp_pipeline_process (ctx=0x7ffd9a1b2600)
at isp_frame_alloc.c:301
#3 0x0000000000457b13 in camera_capture_thread_main (arg=0x0)
at camera_driver_init.c:88
Root cause: heap-buffer-overflow write one row past the allocated stitched-frame buffer, consistent with Appendix E and Appendix D (stitch_compose.c:205/206). Maps to SW-VC-02/SW-VC-11.
Appendix H: Manual code review findings
Illustrative example representative of a typical secure-code-review report. Source: evidence/software/code_review_findings.md.
| ID | Component | Finding | Recommendation |
|---|---|---|---|
| CR-01 (Ticket SEC-2426/SEC-2427) | perception_loader.c | Model file path built from OTA-supplied filename, no path-traversal check, no signature/hash check before load, Section 5.3 | Sanitize the filename or use a fixed model-slot path; extend OTA manifest signing to cover the model artifact |
| CR-02 | actuator_cmd_api.c | send_actuation_command() exported with default visibility, reachable from any dynamically loaded module | Restrict visibility and add an explicit caller-capability check |
| CR-03 | planner_fusion_if.c | Fusion-state buffer swap is not atomic; planner may read a torn combination of old/new sensor values | Use a double-buffer with an atomic pointer swap, or a reader-writer lock |
| CR-04 | dds_actuation_pub.cpp | No DDS Security plugin configured; topic traffic neither authenticated nor access-controlled | Enable a DDS Security governance/permissions document scoping which participants may publish |
| CR-05 | camera_driver_init.c | Camera link-down condition silently defaults perception input to no-obstacle rather than a fail-safe state | Surface link-down as an explicit fault state consumed by the safety manager |
| CR-06 | ota_client | Anti-rollback version check confirmed for base firmware; not confirmed for the perception-model artifact’s own version field | Extend the anti-rollback check to the model artifact’s version metadata |
Appendix I: ML model (perception) integrity verification
Illustrative example, not from a real verification run. Source: evidence/software/ml_model_integrity_check.md.
| Check | As-designed (expected) | As-observed in this pass |
|---|---|---|
| Artifact signature | Model file signed with the same X.509-chain-anchored key used for firmware images (CSG-SRP-1/TSR-1) | Not implemented, model loader computes no signature check (CR-01, SW-VC-05) |
| Hash/integrity check | SHA-256 digest of the model file verified against a manifest value before load | Not implemented in the observed build |
| Version/anti-rollback | Model version field checked against a monotonic counter analogous to eFuse SWREV | Not implemented, only the base OS/firmware image version is checked (CR-06, SW-VC-09) |
Illustrative check output for a compliant implementation:
$ model-verify --manifest model_manifest.json --model perception_v3.bin
[INFO] Computing SHA-256 of perception_v3.bin ... 9f2c1a...4de0
[INFO] Manifest expected digest ......... 9f2c1a...4de0 MATCH
[INFO] Verifying X.509 signature chain ... OK (anchored to SMPK/BMPK root)
[INFO] Model version field .............. 3 >= minimum accepted version 3 OK
[RESULT] perception_v3.bin: PASS
Finding: the current build has no equivalent check in place, a substituted or downgraded model file would be accepted and loaded without detection. Evidentiary basis for SW-VC-05 and SYS-TS-09, and for the signed perception-model artifacts gap called out in Section 5.