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

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:

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

SAE J3061

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:

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

  1. Replace all illustrative evidence files under evidence/ with real tool/lab output.
  2. Track SEC-2427/SEC-2429 (open architecture-change items) to the Q3 2026 OTA-manifest revision and the perception-integrity plausibility-check design, respectively.
  3. Route the two identified requirement gaps (camera/sensor plausibility checking; signed perception-model artifacts) through requirements-doc-scaffolding/requirements-review if the decision is to formalize them as new CSG/TSR entries.
  4. 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.