|
1 | 1 | { |
| 2 | + "version": "1", |
| 3 | + "standard": "IEC 62443-4-1:2018 / IEC 62443-4-2:2019", |
2 | 4 | "target_sl": "SL-2", |
3 | 5 | "component_type": "embedded-software", |
4 | | - "incident_resp_doc": "INCIDENT-RESPONSE.md" |
| 6 | + "component": "cpp-LIN", |
| 7 | + "date": "2026-06-19", |
| 8 | + "incident_resp_doc": "INCIDENT-RESPONSE.md", |
| 9 | + "tara_doc": "TARA.md", |
| 10 | + "tara_json": "tara.json", |
| 11 | + "security_requirements": [ |
| 12 | + { |
| 13 | + "id": "SR-IAC-01", |
| 14 | + "category": "Identification and Authentication", |
| 15 | + "standard_ref": "IEC 62443-4-2 CR 1.1", |
| 16 | + "description": "cpp-LIN does not implement authentication (no network connectivity); integrating system must authenticate LDF and configuration files via secure boot hash (DSR-05).", |
| 17 | + "status": "integrator", |
| 18 | + "integrator_req": "DSR-05" |
| 19 | + }, |
| 20 | + { |
| 21 | + "id": "SR-IAC-02", |
| 22 | + "category": "Identification and Authentication", |
| 23 | + "standard_ref": "IEC 62443-4-2 CR 1.5", |
| 24 | + "description": "No default passwords or credentials exist in cpp-LIN. No authentication secrets stored in source code.", |
| 25 | + "status": "met", |
| 26 | + "evidence": "Source code review — no credential strings" |
| 27 | + }, |
| 28 | + { |
| 29 | + "id": "SR-UC-01", |
| 30 | + "category": "Use Control", |
| 31 | + "standard_ref": "IEC 62443-4-2 CR 2.1", |
| 32 | + "description": "cpp-LIN enforces frame ID boundaries (0x00–0x3F) at all API entry points. No frame is processed beyond declared protocol bounds.", |
| 33 | + "status": "met", |
| 34 | + "evidence": "REQ-LIN-001, REQ-VIRT-004, REQ-VIRT-010, REQ-ADAPT-003, REQ-SLAVE-004", |
| 35 | + "fusa_reqs": ["REQ-LIN-001", "REQ-VIRT-004", "REQ-ADAPT-003"] |
| 36 | + }, |
| 37 | + { |
| 38 | + "id": "SR-UC-02", |
| 39 | + "category": "Use Control", |
| 40 | + "standard_ref": "IEC 62443-4-2 CR 2.2", |
| 41 | + "description": "Wireless access is not applicable; LIN is a wired single-master bus. Physical access control is integrator responsibility (ASM-09).", |
| 42 | + "status": "integrator", |
| 43 | + "integrator_req": "ASM-09" |
| 44 | + }, |
| 45 | + { |
| 46 | + "id": "SR-SI-01", |
| 47 | + "category": "System Integrity", |
| 48 | + "standard_ref": "IEC 62443-4-2 CR 3.1", |
| 49 | + "description": "Communication integrity for safety-critical payloads is enforced by CRC-16/CCITT-FALSE E2E protection header (lin::safety::Protector/Receiver).", |
| 50 | + "status": "met", |
| 51 | + "evidence": "REQ-SAFETY-005, REQ-SAFETY-006, REQ-SAFETY-008", |
| 52 | + "fusa_reqs": ["REQ-SAFETY-005", "REQ-SAFETY-008"] |
| 53 | + }, |
| 54 | + { |
| 55 | + "id": "SR-SI-02", |
| 56 | + "category": "System Integrity", |
| 57 | + "standard_ref": "IEC 62443-4-2 CR 3.2", |
| 58 | + "description": "Replay attacks are detected by the monotonic sequence counter in the E2E safety header. Receiver rejects any non-sequential counter.", |
| 59 | + "status": "met", |
| 60 | + "evidence": "REQ-SAFETY-003, REQ-SAFETY-009", |
| 61 | + "fusa_reqs": ["REQ-SAFETY-009"] |
| 62 | + }, |
| 63 | + { |
| 64 | + "id": "SR-SI-03", |
| 65 | + "category": "System Integrity", |
| 66 | + "standard_ref": "IEC 62443-4-2 CR 3.3", |
| 67 | + "description": "Software and information integrity for LDF files is an integrator responsibility (secure boot hash verification). cpp-LIN validates LDF parse errors but cannot verify file provenance.", |
| 68 | + "status": "integrator", |
| 69 | + "integrator_req": "DSR-05" |
| 70 | + }, |
| 71 | + { |
| 72 | + "id": "SR-SI-04", |
| 73 | + "category": "System Integrity", |
| 74 | + "standard_ref": "IEC 62443-4-2 CR 3.4", |
| 75 | + "description": "Error detection on all transmitted frames: PID parity bits (P0/P1), enhanced checksum, and optional E2E CRC protection.", |
| 76 | + "status": "met", |
| 77 | + "evidence": "REQ-LIN-004..010, REQ-SAFETY-001..015", |
| 78 | + "fusa_reqs": ["REQ-LIN-004", "REQ-LIN-005", "REQ-LIN-008", "REQ-LIN-009", "REQ-SAFETY-005"] |
| 79 | + }, |
| 80 | + { |
| 81 | + "id": "SR-DC-01", |
| 82 | + "category": "Data Confidentiality", |
| 83 | + "standard_ref": "IEC 62443-4-2 CR 4.1", |
| 84 | + "description": "LIN bus payloads are not encrypted (SL-2 does not require encryption for low-speed automotive buses). Confidentiality is an integrator responsibility for high-sensitivity data.", |
| 85 | + "status": "integrator", |
| 86 | + "notes": "LIN bus confidentiality requires hardware encryption at transceiver level; outside cpp-LIN scope" |
| 87 | + }, |
| 88 | + { |
| 89 | + "id": "SR-RDF-01", |
| 90 | + "category": "Restricted Data Flow", |
| 91 | + "standard_ref": "IEC 62443-4-2 CR 5.1", |
| 92 | + "description": "No network communication in cpp-LIN. Data flows only over the LIN bus (physical layer) and through in-process API calls.", |
| 93 | + "status": "met", |
| 94 | + "evidence": "Architecture: no sockets, no HTTP, no MQTT in library code" |
| 95 | + }, |
| 96 | + { |
| 97 | + "id": "SR-TR-01", |
| 98 | + "category": "Timely Response to Events", |
| 99 | + "standard_ref": "IEC 62443-4-2 CR 6.1", |
| 100 | + "description": "Audit logging is not built into cpp-LIN. Integrating system must implement event logging (e.g., ErrNoResponse, E2EError) for incident detection.", |
| 101 | + "status": "integrator", |
| 102 | + "notes": "OnError callback (REQ-MASTER-007) provides the hook for integrator logging" |
| 103 | + }, |
| 104 | + { |
| 105 | + "id": "SR-TR-02", |
| 106 | + "category": "Timely Response to Events", |
| 107 | + "standard_ref": "IEC 62443-4-2 CR 6.2", |
| 108 | + "description": "Vulnerability reporting and patching follows the process defined in INCIDENT-RESPONSE.md (SLA: Critical 7d patch, High 30d patch).", |
| 109 | + "status": "met", |
| 110 | + "evidence": "INCIDENT-RESPONSE.md §4, SECURITY.md" |
| 111 | + }, |
| 112 | + { |
| 113 | + "id": "SR-RA-01", |
| 114 | + "category": "Resource Availability", |
| 115 | + "standard_ref": "IEC 62443-4-2 CR 7.1", |
| 116 | + "description": "cpp-LIN uses bounded channels (Chan<T> with configurable depth) with backpressure policies (DropNewest, DropOldest, Block) to prevent resource exhaustion under high load.", |
| 117 | + "status": "met", |
| 118 | + "evidence": "REQ-VIRT-013, REQ-RELAY-015, Chan<T>::send_drop_oldest()", |
| 119 | + "fusa_reqs": ["REQ-VIRT-013", "REQ-RELAY-015"] |
| 120 | + }, |
| 121 | + { |
| 122 | + "id": "SR-RA-02", |
| 123 | + "category": "Resource Availability", |
| 124 | + "standard_ref": "IEC 62443-4-2 CR 7.2", |
| 125 | + "description": "Watchdog timer to detect schedule runner starvation is an integrating system responsibility (DSR-06). cpp-LIN provides the stop flag mechanism for graceful shutdown.", |
| 126 | + "status": "integrator", |
| 127 | + "integrator_req": "DSR-06" |
| 128 | + }, |
| 129 | + { |
| 130 | + "id": "SR-SM-01", |
| 131 | + "category": "Security Management", |
| 132 | + "standard_ref": "IEC 62443-4-1 SM-2", |
| 133 | + "description": "Security vulnerability management process defined in INCIDENT-RESPONSE.md and SECURITY.md, including private reporting, SLA, ASIL impact assessment, and coordinated disclosure.", |
| 134 | + "status": "met", |
| 135 | + "evidence": "INCIDENT-RESPONSE.md, SECURITY.md" |
| 136 | + }, |
| 137 | + { |
| 138 | + "id": "SR-SM-02", |
| 139 | + "category": "Security Management", |
| 140 | + "standard_ref": "IEC 62443-4-1 SM-6", |
| 141 | + "description": "TARA performed for cpp-LIN SEooC scope. See TARA.md and tara.json for full threat catalogue, CVSS scores, controls, and residual risk acceptance.", |
| 142 | + "status": "met", |
| 143 | + "evidence": "TARA.md, tara.json" |
| 144 | + }, |
| 145 | + { |
| 146 | + "id": "SR-SM-03", |
| 147 | + "category": "Security Management", |
| 148 | + "standard_ref": "IEC 62443-4-1 SR-3", |
| 149 | + "description": "Security requirements derived from TARA are traced to implementation via fusa:req annotations in source code and .fusa-reqs.json.", |
| 150 | + "status": "met", |
| 151 | + "evidence": ".fusa-reqs.json, fusa:req annotations in src/" |
| 152 | + }, |
| 153 | + { |
| 154 | + "id": "SR-SD-01", |
| 155 | + "category": "Secure Development", |
| 156 | + "standard_ref": "IEC 62443-4-1 SD-1", |
| 157 | + "description": "Static analysis (clang-tidy) runs on every PR, checking for bugprone-*, clang-analyzer-*, memory safety patterns. Errors are CI gates.", |
| 158 | + "status": "met", |
| 159 | + "evidence": ".github/workflows/ci.yml static-analysis job" |
| 160 | + }, |
| 161 | + { |
| 162 | + "id": "SR-SD-02", |
| 163 | + "category": "Secure Development", |
| 164 | + "standard_ref": "IEC 62443-4-1 SD-4", |
| 165 | + "description": "Dynamic analysis (ASan + UBSan + ThreadSanitizer) runs on every PR as CI gates. Halt-on-error is enabled.", |
| 166 | + "status": "met", |
| 167 | + "evidence": ".github/workflows/ci.yml sanitizers and tsan jobs" |
| 168 | + }, |
| 169 | + { |
| 170 | + "id": "SR-SV-01", |
| 171 | + "category": "Security Verification", |
| 172 | + "standard_ref": "IEC 62443-4-1 SVV-1", |
| 173 | + "description": "Security-relevant test cases are tagged with fusa:test annotations and referenced in .fusa-reqs.json. Coverage gate >=70% enforced in CI.", |
| 174 | + "status": "met", |
| 175 | + "evidence": "tests/test_safety.cpp, tests/test_relay_adapter.cpp, CI coverage job" |
| 176 | + } |
| 177 | + ], |
| 178 | + "open_items": [ |
| 179 | + { |
| 180 | + "id": "OI-SEC-01", |
| 181 | + "description": "Fuzz testing for validate_frame() and ldf::parse() with AFL++ not yet implemented", |
| 182 | + "target_version": "1.0.0", |
| 183 | + "priority": "High" |
| 184 | + }, |
| 185 | + { |
| 186 | + "id": "OI-SEC-02", |
| 187 | + "description": "SBOM (Software Bill of Materials) generation not yet automated in CI", |
| 188 | + "target_version": "1.0.0", |
| 189 | + "priority": "Medium" |
| 190 | + }, |
| 191 | + { |
| 192 | + "id": "OI-SEC-03", |
| 193 | + "description": "MISRA C++ compliance check not yet integrated", |
| 194 | + "target_version": "1.0.0", |
| 195 | + "priority": "Medium" |
| 196 | + } |
| 197 | + ] |
5 | 198 | } |
0 commit comments