Skip to content

Commit fc7d369

Browse files
authored
Merge pull request #2 from SoundMatt/feat/full-safety-pack
feat: full safety and cyber pack — TARA, FMEA, SAS, boundary, safety manual, IEC 62443, CI hardening
2 parents fc1c046 + 5a3b8a3 commit fc7d369

13 files changed

Lines changed: 2098 additions & 20 deletions

.fusa-iec62443.json

Lines changed: 194 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,198 @@
11
{
2+
"version": "1",
3+
"standard": "IEC 62443-4-1:2018 / IEC 62443-4-2:2019",
24
"target_sl": "SL-2",
35
"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+
]
5198
}

0 commit comments

Comments
 (0)