blob: d363b6321eb932b51c0ad2390660e133c8e8653f [file] [log] [blame]
Gyorgy Szingd4a86562022-04-07 15:30:34 +02001Generic Threat Model
2====================
3
Gyorgy Szing0bbd4ed2025-02-21 01:01:59 +01004The Generic Threat Model discusses an abstract physical Secure Partition and captures service independent security
5related information like assets, threats, and mitigations.
Gyorgy Szingd4a86562022-04-07 15:30:34 +02006
Gyorgy Szing0bbd4ed2025-02-21 01:01:59 +01007This model serves as the foundation for assessing the security of any specific deployment involving one or more Trusted
8Services.
Gyorgy Szingd4a86562022-04-07 15:30:34 +02009
10Target evaluation
11-----------------
12
13In this threat model, the target of evaluation is the S-EL0 SPs part of the PSA RoT hosting a "generalized" trusted
14service.
15
16This evaluation is based on the following assumptions:
17
18 * The implementation is based on the |FF-A| standard.
19 * Trusted boot is enabled. This means an attacker cant boot arbitrary images that are not approved by platform
20 providers.
21 * Each trusted service is running in an S-EL0 secure partition. Access to memory and hardware is controlled by the
22 SPM based on the FF-A manifest or FF-A framework messages.
23 * Components running at higher privilege levels than S-EL0 are to be inherently trusted. (I.e. the SPM).
24
25Data flow diagram
26-----------------
27
28The data flow diagram visualizes the connection between components and where the data flow crosses security boundaries.
29
30.. image:: ./generic-data-flow.svg
31 :target: Attachments_
32
33.. table:: List of data flows
34
35 +-----------+---------------------------------------------------------------------------------+----------+
36 | Data flow | Description | In scope |
37 +-----------+---------------------------------------------------------------------------------+----------+
38 | DF1 | Trusted Service interacts with NWd client directly. | Yes |
39 +-----------+---------------------------------------------------------------------------------+----------+
40 | DF2 | Trusted Service interacts with NWd client through SPM. | Yes |
41 +-----------+---------------------------------------------------------------------------------+----------+
42 | DF3 | Trusted Services interact through SPM. | Yes |
43 +-----------+---------------------------------------------------------------------------------+----------+
44 | DF4 | Trusted Service logs debug information. | Yes |
45 +-----------+---------------------------------------------------------------------------------+----------+
46 | DF5 | Trusted Services interact directly. | Yes |
47 +-----------+---------------------------------------------------------------------------------+----------+
48 | DF6, DF7 | Trusted Services interacts with shared hardware. | Yes |
49 +-----------+---------------------------------------------------------------------------------+----------+
50 | DF8 | Trusted Service interacts with dedicated peripheral interface. | Yes |
51 +-----------+---------------------------------------------------------------------------------+----------+
52 | DF9, DF10 | Trusted Service interacts with shared, external hardware. | Yes |
53 +-----------+---------------------------------------------------------------------------------+----------+
54 | DF11 | Trusted Service interacts with dedicated, external hardware. | Yes |
55 +-----------+---------------------------------------------------------------------------------+----------+
56 | DF12 | NWd interacts with more privileged software. | No |
57 +-----------+---------------------------------------------------------------------------------+----------+
58 | DF13 | FF-A manifest and other data is handed over to a Trussed Service | No |
59 +-----------+---------------------------------------------------------------------------------+----------+
60
Gyorgy Szingf4f91fa2025-02-21 01:25:57 +010061It is worth highlighting two different dataflow types between the service and its clients:
62 1. Direct communication through shared memory. DF1 and DF5 represents this type of communication and it may be
63 sensitive to TOCTTOU attacks. See threat 10 below.
64 2. Indirect communication through registers. DF2 and DF3 represents this type. This type is more secure and less
65 performant.
66
Gyorgy Szingd4a86562022-04-07 15:30:34 +020067Trust boundaries
68----------------
69
70.. list-table:: List of trust boundaries
71
72 * - Trust boundary
73 - Description
74 * - TB1
75 - Trust boundary between TEE and normal world.
76 * - TB2
77 - Trust boundary between higher privilege level SW and Trusted Services.
78 * - TB3, TB4
79 - Trust boundary between trusted services.
80 * - TB5
81 - Trust boundary to physically accessible external hardware.
82
83Assets
84------
85
86The above dataflow identifies the following generalized assets.
87
88.. table::
89
90 +----------------------+----------------------------------------------------------------------------------+
91 | Asset | Description |
92 +----------------------+----------------------------------------------------------------------------------+
93 | ``availability`` | Availability of a trusted service to clients. |
94 +----------------------+----------------------------------------------------------------------------------+
95 | ``code execution`` | Code or code flow of a trusted service. |
96 +----------------------+----------------------------------------------------------------------------------+
97 | ``sensitive data`` | Data that an attacker must not tamper with. These include device identity key, |
98 | | Initial Attestation Key, Protected Storage Key, UEFI variables, tpm-event log, |
99 | | etc... |
100 +----------------------+----------------------------------------------------------------------------------+
101 |``sensitive hardware``| Hardware that an attacker must not be tamper with. Examples are control interface|
102 | | of storage medium, true random number generator, crypto accelerator. |
103 +----------------------+----------------------------------------------------------------------------------+
104
105Attackers and threat agents
106---------------------------
107
108This section identifies the generalized stakeholders interacting with secure services.
109
110.. list-table::
111 :widths: 20,70,10
112
113 * - Attacker/Threat agent
114 - Description
115 - In scope
116 * - ``NSClient``
117 - Client executing in the normal world.
118 - Yes
119 * - ``SClient``
120 - Client running in SWd.
121 - Yes
122 * - ``HPComponent``
123 - Components running at higher privilege level than the trusted service.
124 - No
125 * - ``AppDebug``
126 - Physical attacker using debug signals to access resources.
127 - Yes
128 * - ``PhysAcc``
129 - Physical attacker having access to the external device communication bus and to the external flash communication
130 bus using common hardware.
131 - Yes
132 * - ``AdvPhysAcc``
133 - Attackers who are able to use specialist hardware for attacks that require irreversible changes to the target
134 system (e.g., "rewiring" a chip using a Focused IonBeam FIB workstation).
135 - No
136
137
138
139Threat Priority
140---------------
141
142Threat priority calculation is based on `Common Vulnerability Scoring System`_ (CVSS) Version 3.1. The threat priority
143is represented by the `Severity Rating Scale`_ calculated from the CVSS score of each threat. The CVSS score is
144calculated using the `Vulnerability Calculator`_.
145
146For each threat the priority and a link to CVSS calculator capturing the calculator settings will be listed.
147
148Threat Types
149------------
150
151In this threat model we categorize threats using the `STRIDE threat analysis technique`_. In this technique a threat is
152categorized as one or more of these types: ``Spoofing``, ``Tampering``, ``Repudiation``, ``Information disclosure``,
153``Denial of service`` or ``Elevation of privilege``.
154
155.. list-table::
156 :widths: 15,80
157
158 * - **ID**
159 - 1
160 * - Description
161 - Information leak via debug logs.
162
163 During development it is common practice to help understanding code execution by emitting
164 debug logs.
165 * - Data flow
166 - DF4
167 * - Asset(s)
168 - ``Sensitive Data``
169 * - Threat Agent/Attacker
170 - ``AppDebug``
171 * - Threat type
172 - ``Information disclosure``
173 * - Impact
174 - Sensitive information may get to unauthorized people. Information can potentially help
175 compromising the target or other systems.
176 * - Scoring/CVSS
177 - Medium, 4.6 `CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N <https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N>`_
178 * - Mitigation
179 - Log messages are put to "verbosity categories". Release builds limit printed log messages
180 to "error" category.
181 * - Mitigation in place
182 - yes
183
184.. list-table::
185 :widths: 15,80
186
187 * - **ID**
188 - 2
189 * - Description
190 - An attacker can tamper with sensitive data and execute arbitrary code through hardware-assisted
191 debug interface.
192 * - Data flow
193 - N/A.
194 * - Asset(s)
195 - ``Sensitive Data``, ``Code Execution``, ``Sensitive Hardware``
196 * - Threat Agent/Attacker
197 - ``AppDebug``
198 * - Threat type
199 - ``Information disclosure``, ``Tampering``
200 * - Impact
201 - Sensitive information may get to unauthorized people. Information can potentially help
202 compromising the target or other systems.
203
204 An attacker may modify sensitive data and alter device behavior and thus compromise the
205 target or other systems.
206 * - Scoring/CVSS
207 - Medium, 6.8 `CVSS:3.1/AV:P/AC:H/PR:H/UI:R/S:C/C:H/I:H/A:H <https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:P/AC:H/PR:H/UI:R/S:C/C:H/I:H/A:H>`_
208 * - Mitigation
209 - Hardware platform specific means to disable or limit access to debug functionality.
210 * - Mitigation in place
211 - yes
212
213.. list-table::
214 :widths: 15,80
215
216 * - **ID**
217 - 3
218 * - Description
219 - An attacker can perform a denial-of-service attack by using a broken service call that
220 causes the service to enter an unknown state.
221
222 Secure and non-secure clients access a trusted service through FF-A calls. Malicious code
223 can attempt to place the service into an inconsistent state by calling unimplemented
224 calls or by passing invalid arguments.
225 * - Data flow
226 - DF1, DF2, DF3, DF5
227 * - Asset(s)
228 - ``Availability``
229 * - Threat Agent/Attacker
230 - ``NSclient``, ``SClient``
231 * - Threat type
232 - ``Denial of service``
233 * - Impact
234 - The service or the whole system may temporarily or permanently enter an unusable state.
235 * - Scoring/CVSS
236 - Medium, 6.8 `CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H <https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H>`_
237 * - Mitigation
238 - The service must validate all inputs before usage. Input validation shall be checked during
239 code review and by testing.
240 * - Mitigation in place
241 - yes
242
243.. list-table::
244 :widths: 15,80
245
246 * - **ID**
247 - 4
248 * - Description
249 - Memory corruption due to memory overflows and lack of boundary checking when accessing
250 resources.
251
252 Allows an attacker to execute arbitrary code, modify memory content to change
253 program flow.
254 * - Data flow
255 - DF1, DF2, DF3, DF5
256 * - Asset(s)
257 - ``Code execution``, ``Sensitive Data``, ``Denial of service``
258 * - Threat Agent/Attacker
259 - ``SClient``, ``NSClient``, ``HSComponent``
260 * - Threat type
261 - ``Tampering``, ``Information disclosure``, ``Elevation of privilege``, ``Denial of service``
262 * - Impact
263 - The service or the whole system may temporarily or permanently enter an unusable state.
264
265 Malicious code might be executed in the context of the compromised service.
266 Leakage of sensitive data.
267 * - Scoring/CVSS
268 - High, 8.4 `CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H <https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H>`_
269 * - Mitigation
270 - The service must validate boundaries and sanity check incoming data. Validation shall be
271 checked during code reviews and by testing.
272 * - Mitigation in place
273 - yes
274
275.. list-table::
276 :widths: 15,80
277
278 * - **ID**
279 - 5
280 * - Description
281 - External devices connected to the system storing sensitive data. An attacker could eavesdrop external signals.
282 * - Data flow
283 - DF9, DF10, DF11
284 * - Asset(s)
285 - ``Sensitive Data``
286 * - Threat agent/Attacker
287 - ``PhysAcc``
288 * - Threat type
289 - ``Information disclosure``
290 * - Impact
291 - An attacker may get access to sensitive data, could tamper with sensitive data, or could attack the service
292 using the external device by injecting malicious data, which could lead to malfunction or execution of malicious
293 code.
294 * - Scoring/CVSS
295 - Medium, 5.9 `CVSS:3.1/AV:P/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:H <https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:P/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:H>`_
296 * - Mitigation
297 - When designing the use case, storage services must be assessed to understand which protection type they can
298 implement (integrity, authenticity, confidentiality, rollback-protection). Sensitive data must be categorized
299 and mapped to the storage service which can provide the needed protection.
300
301 For example integrity can be safeguarded by using checksums. Authenticity by using digital signatures.
302 Confidentiality by using encryption. Rollback protection by using nonce values.
303 * - Mitigation in place
304 - yes
305
306.. list-table::
307 :widths: 15,80
308
309 * - **ID**
310 - 6
311 * - Description
312 - State of external devices connected to the system might be modified by an attacker.
313
314 This includes modifying signals, replacing the device, or modifying device content.
315 * - Data flow
316 - DF9, DF10, DF11
317 * - Asset(s)
318 - ``Sensitive Data``, ``Denial of service``, ``Code execution``
319 * - Threat agent/Attacker
320 - ``PhysAcc``
321 * - Threat type
322 - ``Tampering``, ``Denial of service``, ``Code execution``
323 * - Impact
324 - An attacker could tamper with sensitive data, or could attack the system by injecting malicious data, which
325 could lead to malfunction, execution of malicious code, or using old state with known vulnerability.
326 * - Scoring/CVSS
327 - High, 7.3 `CVSS:3.1/AV:P/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H <https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:P/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H>`_
328 * - Mitigation
329 - When designing the use case, storage services must be assessed to understand which protection type they can
330 implement (integrity, authenticity, confidentiality, rollback-protection). Sensitive data must be categorized
331 and mapped to the storage service which can provide the needed protection.
332
333 For example integrity can be safeguarded by using checksums. Authenticity by using digital signatures.
334 Confidentiality by using encryption. Rollback protection by using hardware backed nonce values.
335 * - Mitigation in place
336 - yes
337
338
339.. list-table::
340 :widths: 15,80
341
342 * - ID
343 - 7
344 * - Description
345 - Invalid or conflicting access to shared hardware.
346
347 * - Data flow
348 - DF6, DF7, DF9, DF10
349 * - Asset(s)
350 - ``Sensitive Data``, ``Denial of service``, ``Code execution``
351 * - Threat Agent/Attacker
352 - ``SClient``, ``NSClient``, ``HPComponent``
353 * - Threat type
354 - ``Tampering``, ``Information disclosure``, ``Denial of service``, ``Code execution``
355 * - Impact
356 - A trusted service relying on shared hardware usage might get compromised or misbehaving if other stakeholders
357 affect shared hardware in unexpected way.
358
359 * - Scoring/CVSS
360 - High, 7.0 `CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:H <https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:H>`_
361 * - Mitigation
362 - Access to peripherals must be limited to the smallest possible set of services. Ideally each peripheral should be
363 dedicated to a single trusted service and sharing of peripherals should be avoided is possible. If sharing can
364 not be avoided, a strict handover process shall be implemented to allow proper context switches, where hardware
365 state can be controlled.
366 * - Mitigation in place
367 - yes
368
369.. list-table::
370 :widths: 15,80
371
372 * - **ID**
373 - 8
374 * - Description
375 - Unauthenticated access to hardware.
376
377 A trusted service relying on hardware usage might get compromised or misbehaving if hardware state is
378 maliciously altered.
379 * - Data flow
380 - DF6, DF7, DF9, DF10
381 * - Asset(s)
382 - ``Sensitive Data``, ``Denial of service``, ``Code execution``
383 * - Threat Agent/Attacker
384 - ``SClient``, ``NSClient``, ``HPComponent``
385 * - Threat type
386 - ``Tampering``, ``Information disclosure``, ``Denial of service``, ``Code execution``
387 * - Impact
388 - An attacker may get access to sensitive data of might make a trusted service or the system enter an unusable
389 state by tampering with hardware peripherals.
390 * - Scoring/CVSS
391 - Medium, 6.4 `CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H <https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H>`_
392 * - Mitigation
393 - Access to peripherals must be limited to the smallest possible set of services. Ideally each peripheral should be
394 dedicated to a single trusted service, and sharing of peripherals should be avoided is possible. If sharing can
395 not be avoided, a strict handover process shall be implemented to allow proper context switches, where register
396 values can be controlled.
397 * - Mitigation in place
398 - yes
399
400
401.. list-table::
402 :widths: 15,80
403
404 * - **ID**
405 - 9
406 * - Description
407 - Unauthenticated access to sensitive data.
408 * - Data flow
409 - DF1, DF2, DF3, DF5
410 * - Asset(s)
411 - ``Sensitive Data``, ``Denial of service``
412 * - Threat Agent/Attacker
413 - ``SClient``, ``NSClient``, ``HPComponent``
414 * - Threat type
415 - ``Tampering``, ``Information disclosure``, ``Denial of service``
416 * - Impact
417 - A trusted service may manage data of multiple clients. Different clients shall not be able to access each
418 other's data unless in response to explicit request.
419 * - Scoring/CVSS
420 - Medium, 6.8 `CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N <https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N>`_
421 * - Mitigation
422 - Trusted services must implement access control based on identification data provided by higher privileged
423 components (i.e. FF-A endpoint ID).
424 * - Mitigation in place
425 - yes
426
Gyorgy Szingf4f91fa2025-02-21 01:25:57 +0100427.. list-table::
428 :widths: 15,80
429
430 * - **ID**
431 - 10
432 * - Description
433 - Time-of-Check to Time-of-Use (TOCTTOU) attack trough shared memory.
434 * - Data flow
435 - DF1, DF5
436 * - Asset(s)
437 - ``Sensitive Data``, ``Code execution``, ``Availability``
438 * - Threat Agent/Attacker
439 - ``SClient``, ``NSClient``
440 * - Threat type
441 - ``Tampering``, ``Information disclosure``, ``Denial of service``, ``Elevation of privilege``
442 * - Impact
443 - An attacker may cause incorrect operation of the service, and thus:
444 - make the system enter an unusable state,
445 - breach logical isolation boundary within the trust domain of the service and impersonate other client
446 - execute unauthentic code.
447 * - Scoring/CVSS
448 - High, 7.4 `CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H <https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H>`_
449 * - Mitigation
450 - - The Trusted service must copy data to a private buffer when executing TOCTTOU sensitive operation.
451 - The service implementation must not read the input buffer multiple times.
452 * - Mitigation in place
453 - yes
Gyorgy Szingd4a86562022-04-07 15:30:34 +0200454
455--------------
456
457.. _Attachments:
458.. Rubric:: Attachments
459
460Source file of the `Data flow diagram`_. Please use the yEd_ for editing. :download:`./generic-data-flow.graphml`
461
462--------------
463
464.. _`Common Vulnerability Scoring System`: https://www.first.org/cvss/v3.1/specification-document
465.. _`Vulnerability Calculator`: https://www.first.org/cvss/calculator/3.1
466.. _`Severity Rating Scale`: https://www.first.org/cvss/v3.1/specification-document#Qualitative-Severity-Rating-Scale
467.. _`STRIDE threat analysis technique`: https://docs.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats#stride-model
468.. _yEd: https://www.yworks.com/products/yed
469
Gyorgy Szing0bbd4ed2025-02-21 01:01:59 +0100470*Copyright (c) 2022-2025, Arm Limited and Contributors. All rights reserved.*
Gyorgy Szingd4a86562022-04-07 15:30:34 +0200471
472SPDX-License-Identifier: BSD-3-Clause