Threat Modeling Report
Created on 12/27/2022 3:06:56 PMThreat Model Name: EdgeX Foundry Threat Model
Owner: Jim White (IOTech Systems)
Reviewer: Bryon Nevis, Lenny Goodell, Jim Wang (all from Intel), Farshid Tavakolizadeh (Canonical), Rodney Hess (Beechwoods)
Contributors:
Description: General Threat Model for EdgeX Foundry - inclusive of security elements (Kong, Vault, etc).
Assumptions: EdgeX is platform agnostic, but this Threat model assumes the underlying OS is a Linux distribution. EdgeX can run containerized or non-containerized (natively). This Threat Model assumes EdgeX is running in a containerized environment (Docker). EdgeX micro services can run distributed, but this Threat Model assumes EdgeX is running on a single host (single Docker deamon with a single Docker network unless otherwise specified). Many different devices/sensors can be connected to EdgeX via its device services. This Threat model treats all sensors/devices the same (which is not always the case given the varoius protocols of support). Per https://docs.edgexfoundry.org/2.0/threat-models/secret-store/threat_model/, additional hardening such as secure boot with hardware root of trust, and secure disk encryption are outside of EdgeX control but would greatly improve the threat mitigation.
External Dependencies: Operating system and hardware (including devices/sensors)
Device/sensor drivers
Possibly a cloud system or external enterprise system that EdgeX gets data to
A message bus broker (such as an MQTT broker)
Notes:
Id
|
Note
|
Date
|
Added By
|
---|
1 | Tampering with Data - This is a threat where information in the system is changed by an attacker. For example, an attacker changes an account balance Unauthorized changes made to persistent data, such as that held in a database, and the alteration of data as it flows between two computers over an open network, such as the Internet | 8/25/2022 6:40:40 PM | DESKTOP-SL3KKHH\jpwhi |
2 | XSS protections: filter input on arrival (don't do), encode data on oputput (don't do), use appropriate headers (do), use CSP (dont do) | 8/25/2022 6:54:16 PM | DESKTOP-SL3KKHH\jpwhi |
3 | priority is determined by the likelihood of a threat occuring and the severity of the impact of its occurance | 8/25/2022 7:11:40 PM | DESKTOP-SL3KKHH\jpwhi |
4 | Repudiation - don't track and log users actions; can't prove a transaction took place | 8/25/2022 7:13:14 PM | DESKTOP-SL3KKHH\jpwhi |
5 | Elevation of privil - authorized or unauthorized user gains access to info not authorized | 8/25/2022 7:16:24 PM | DESKTOP-SL3KKHH\jpwhi |
6 | Remote code execution: https://www.comparitech.com/blog/information-security/remote-code-execution-attacks/
buffer overflow
sanitize user inputs
proper auth
use a firewall | 8/25/2022 7:21:28 PM | DESKTOP-SL3KKHH\jpwhi |
7 | Privilege escalation attacks occur when bad actors exploit misconfigurations, bugs, weak passwords, and other vulnerabilities | 8/27/2022 1:57:18 PM | DESKTOP-SL3KKHH\jpwhi |
Threat Model Summary:
Not Started | 0 |
Not Applicable | 27 |
Needs Investigation | 14 |
Mitigation Implemented | 100 |
Total | 141 |
Total Migrated | 0 |
Diagram: EdgeX Foundry (Big Picture)
EdgeX Foundry (Big Picture) Diagram Summary:
Not Started | 0 |
Not Applicable | 20 |
Needs Investigation | 3 |
Mitigation Implemented | 96 |
Total | 119 |
Total Migrated | 0 |
Interaction: config
1. Weak Access Control for a Resource
[State: Mitigation Implemented]
[Priority: Low]
Category: | Information Disclosure |
Description: | Improper data protection of Consul (configuration) can allow an attacker to read information not intended for disclosure. Review authorization settings. |
Justification: | <no mitigation provided> |
Possible Mitigation: | EdgeX services that use Consul must use a Vault access token provided in bootstrapping of the service. See https://docs.edgexfoundry.org/2.3/security/Ch-Secure-Consul/. There is also per service ACL rules in place to limit Consul access. As of the Ireland release, access of Consul requires ACL token header X-Consul-Token in any HTTP calls. Moreover, Consul itself is now bootstrapped and started with its ACL system enabled and thus provides better authentication and authorization security features for services. In other words, with the required Consul's ACL token for accessing Consul, assets inside Consul like EdgeX's configuration items in Key-Value (KV) store are now better protected. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
2. Spoofing of Source Data Store Consul (configuration)
[State: Mitigation Implemented]
[Priority: Low]
Category: | Spoofing |
Description: | Consul (configuration) may be spoofed by an attacker and this may lead to incorrect data delivered to EdgeX Foundry. Consider using a standard authentication mechanism to identify the source data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | If someone was able to provide a container that was spoofing as Consul, the service would not know that the response came from something other than Consul. However, Consul is run as a container on the EdgeX Docker network. Replacing/spoofing the Consul container would require privileaged (root) access to the host. Additional adopter mitigation would include putting TLS in place between EdgeX and Consul (with TLS cert in place). A spoofing service (in this case Consul), would not have the appropriate cert in place to participate in the communications. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
Interaction: configuration
3. Spoofing of Source Data Store Configuration Files
[State: Mitigation Implemented]
[Priority: Low]
Category: | Spoofing |
Description: | Configuration Files may be spoofed by an attacker and this may lead to incorrect data delivered to EdgeX Foundry. Consider using a standard authentication mechanism to identify the source data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Configuration files are used to seed EdgeX configuration service (Consul) before the services are started. Configuration files are made part of the service container (deployed with the container image). The only way to spoof the file is to replace the entire service container with new configuration or to transplant new configuration in the container - both require privileaged access to the host. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
4. Weak Access Control for a Resource
[State: Not Applicable]
[Priority: Low]
Category: | Information Disclosure |
Description: | Improper data protection of Configuration Files can allow an attacker to read information not intended for disclosure. Review authorization settings. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Disclosure of configuration files is not important. Configuration data is not considered sensitive. As long as the configuration files are not manipulated, then access to configuration files is not deemed a threat. All secret configuration is made available through Vault. |
Mitigator: | No mitigation or not applicable |
Mitigation Status: | Cannot mitigate or not appilcable |
Interaction: data
5. Spoofing of Source Data Store Redis
[State: Mitigation Implemented]
[Priority: Low]
Category: | Spoofing |
Description: | Redis may be spoofed by an attacker and this may lead to incorrect data delivered to EdgeX Foundry. Consider using a standard authentication mechanism to identify the source data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | If someone was able to provide a container that was spoofing as Redis, the service would not know that the response came from something other than Redis. However, Redis is run as a container on the EdgeX Docker network. Replacing/spoofing the Redis container would require privileaged (root) access to the host. Additional adopter mitigation would include putting TLS in place between EdgeX and Redis (with TLS cert in place). A spoofing service (in this case Redis), would not have the appropriate cert in place to participate in the communications. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
6. Weak Access Control for a Resource
[State: Mitigation Implemented]
[Priority: Low]
Category: | Information Disclosure |
Description: | Improper data protection of Redis can allow an attacker to read information not intended for disclosure. Review authorization settings. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Access control credentials for Redis are secured in Vault (provided to EdgeX services at bootstrapping but otherwise unknown). Access without credentials is denied. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
7. Authenticated Data Flow Compromised
[State: Mitigation Implemented]
[Priority: Low]
Category: | Tampering |
Description: | An attacker can read or modify data transmitted over an authenticated dataflow. |
Justification: | <no mitigation provided> |
Possible Mitigation: | EdgeX containers communicate via a Docker network. A hacker would need to gain access to the host and have elevated privileages on the host to access the network traffic. If extra security is needed or if an adopter is running EdgeX services in a distributed environment (multiple hosts), then overlay network encryption can be used (see example: https://github.com/edgexfoundry/edgex-examples/tree/update-custom-trigger-multiple-pipelines/security/remote_devices/docker-swarm) |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
Interaction: published
message
8. Potential Excessive Resource Consumption for EdgeX Foundry or Message Bus Broker
[State: Mitigation Implemented]
[Priority: Medium]
Category: | Denial Of Service |
Description: | Does EdgeX Foundry or Message Bus Broker take explicit steps to control resource consumption? Resource consumption attacks can be hard to deal with, and there are times that it makes sense to let the OS do the job. Be careful that your resource requests don't deadlock, and that they do timeout. |
Justification: | <no mitigation provided> |
Possible Mitigation: | The EdgeX message broker is either Redis Pub/Sub or an MQTT broker like Mosquitto and runs as a container in a Docker network that, by default with security on, does not allow direct access to the broker. Access to publish or subscribe to cause it to use excessive resources would require authorized access to the host as the port to the internal message broker is protected. In other words, EdgeX mitigates unauthorized attacks resulting in DoS event, but would not mitigate authorized attacks (such as a service producing too many message than the broker can handle) that result in a DoS event. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
9. Spoofing of Destination Data Store Message Bus
[State: Mitigation Implemented]
[Priority: Low]
Category: | Spoofing |
Description: | Message Bus may be spoofed by an attacker and this may lead to data being written to the attacker's target instead of Message Bus. Consider using a standard authentication mechanism to identify the destination data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | The message bus when requiring a broker (MQTT broker for example) is run as a container on the EdgeX Docker network. Replacing/spoofing the broker container would require privileaged access to the host. Message broker host and port are part of services' configuration (covered under threats against configuration) |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
Interaction: queries &
data
10. Spoofing of Destination Data Store Redis
[State: Mitigation Implemented]
[Priority: Low]
Category: | Spoofing |
Description: | Redis may be spoofed by an attacker and this may lead to data being written to the attacker's target instead of Redis. Consider using a standard authentication mechanism to identify the destination data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | If someone was able to provide a container that was spoofing as Redis, the service would not know that the response came from something other than Redis. However, Redis is run as a container on the EdgeX Docker network. Replacing/spoofing the Redis container would require privileaged (root) access to the host. Additional adopter mitigation would include putting TLS in place between EdgeX and Redis (with TLS cert in place). A spoofing service (in this case Redis), would not have the appropriate cert in place to participate in the communications. Database host and port are part of services' configuration (covered under threats against configuration) |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
11. Authenticated Data Flow Compromised
[State: Mitigation Implemented]
[Priority: Low]
Category: | Tampering |
Description: | An attacker can read or modify data transmitted over an authenticated dataflow. |
Justification: | <no mitigation provided> |
Possible Mitigation: | EdgeX containers communicate via a Docker network. Docker containers do not share the host's network interface by default and instead is based on virtual ethernet adapters and bridges. A hacker would need to gain access to the host and have elevated privileages on the host to access the network traffic. If extra security is needed or if an adopter is running EdgeX services in a distributed environment (multiple hosts), then overlay network encryption can be used (see example: https://github.com/edgexfoundry/edgex-examples/tree/update-custom-trigger-multiple-pipelines/security/remote_devices/docker-swarm) |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
12. Potential Excessive Resource Consumption for EdgeX Foundry or Redis
[State: Mitigation Implemented]
[Priority: Low]
Category: | Denial Of Service |
Description: | Does EdgeX Foundry or Redis take explicit steps to control resource consumption? Resource consumption attacks can be hard to deal with, and there are times that it makes sense to let the OS do the job. Be careful that your resource requests don't deadlock, and that they do timeout. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Redis runs as a container in a Docker network that, by default with security on, does not allow direct access to the database. Access to query or push data into it to cause it to use excessive resources would require authorized access to the host as the port to the database is protected. In other words, EdgeX mitigates unauthorized attacks resulting in DoS event, but would not mitigate authorized attacks (such as a service making too many queries or pushing to much data into it) that result in a DoS event. EdgeX does have a routine with customizable configuration that "cleans up" and removes older data so that "normal" or otherwise expected use of the database for persistenct does not result in DoS. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
Interaction: query
13. Spoofing of Destination Data Store Vault
[State: Mitigation Implemented]
[Priority: Low]
Category: | Spoofing |
Description: | Vault may be spoofed by an attacker and this may lead to data being written to the attacker's target instead of Vault. Consider using a standard authentication mechanism to identify the destination data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | If someone was able to provide a container that was spoofing as Vault, the service would not know that the response came from something other than Vault. However, Vault is run as a container on the EdgeX Docker network. Replacing/spoofing the Vault container would require privileaged (root) access to the host. Additional adopter mitigation would include putting TLS in place between EdgeX and Vault (with TLS cert in place). A spoofing service (in this case Vault), would not have the appropriate cert in place to participate in the communications.
EdgeX services that use Vault must use the go-mod-secrets client or a Vault service token to access its secrets (which is revoked by default). See https://docs.edgexfoundry.org/2.3/security/Ch-SecretStore/#using-the-secret-store
Vault host and port are configured from static configuration or environment overrides (trusted input) and not Consul, making it difficult to misdirect services access to Vault.
See EdgeX Threat Model documentation (https://docs.edgexfoundry.org/2.0/threat-models/secret-store/threat_model/#threat-matrix) for additional considerations and mitigation. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
14. Potential Excessive Resource Consumption for EdgeX Foundry or Vault
[State: Mitigation Implemented]
[Priority: Low]
Category: | Denial Of Service |
Description: | Does EdgeX Foundry or Vault take explicit steps to control resource consumption? Resource consumption attacks can be hard to deal with, and there are times that it makes sense to let the OS do the job. Be careful that your resource requests don't deadlock, and that they do timeout. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Vault runs as a container in a Docker network that, by default with security on, does not allow direct access to the secret store. Access to query or push data into it to cause it to use excessive resources would require authorized access to the host as the port to the database is protected. In other words, EdgeX mitigates unauthorized attacks resulting in DoS event, but would not mitigate authorized attacks (such as a service making too many queries or pushing to many secrets into it) that result in a DoS event. |
Mitigator: | Third Party |
Mitigation Status: | Mitigation reviewed |
Interaction: query
15. Spoofing of Destination Data Store Device/Sensor (REST authenticated)
[State: Mitigation Implemented]
[Priority: Low]
Category: | Spoofing |
Description: | Device/Sensor (REST authenticated) may be spoofed by an attacker and this may lead to data being written to the attacker's target instead of Device/Sensor (REST authenticated). Consider using a standard authentication mechanism to identify the destination data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | With authentication in place the REST caller would not get the proper authenticated by a spoofed Kong and thereby deny any query request. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
16. The Device/Sensor (REST authenticated) Data Store Could Be Corrupted
[State: Mitigation Implemented]
[Priority: High]
Category: | Tampering |
Description: | Data flowing across query may be tampered with by an attacker. This may lead to corruption of Device/Sensor (REST authenticated). Ensure the integrity of the data flow to the data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | REST requests and responses to/through Kong are encrypted by default. |
Mitigator: | Third Party |
Mitigation Status: | Mitigation reviewed |
17. Data Store Denies Device/Sensor (REST authenticated) Potentially Writing Data
[State: Mitigation Implemented]
[Priority: Low]
Category: | Repudiation |
Description: | Device/Sensor (REST authenticated) claims that it did not write data received from an entity on the other side of the trust boundary. Consider using logging or auditing to record the source, time, and summary of the received data. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Use of elevated log level (set writable configuration log level to DEBUG in the device service) can be used to log all data communications. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
18. Data Flow query Is Potentially Interrupted
[State: Mitigation Implemented]
[Priority: Medium]
Category: | Denial Of Service |
Description: | An external agent interrupts data flowing across a trust boundary in either direction. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Outside influence could break the network communication connection causing major disruption of service (ex: removing or cutting off comms to a critical temperature resource of a heating or cooling machine). EdgeX has no means to protect the network connection. Physical security is required to protect the wire and device/sensor and mitigate this threat.
The device service does track "last connected" and that timestamp could be monitored for outside of normal reporting ranges. |
Mitigator: | Adopter |
Mitigation Status: | Mitigation written |
19. Data Store Inaccessible
[State: Mitigation Implemented]
[Priority: Medium]
Category: | Denial Of Service |
Description: | An external agent prevents access to a data store on the other side of the trust boundary. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Outside influence could break the network communication connection causing major disruption of service (ex: removing or cutting off comms to a critical temperature resource of a heating or cooling machine). EdgeX has no means to protect the network connection. Physical security is required to protect the wire and device/sensor and mitigate this threat.
The device service does track "last connected" and that timestamp could be monitored for outside of normal reporting ranges. |
Mitigator: | Adopter |
Mitigation Status: | Mitigation written |
Interaction: query
20. Data Store Inaccessible
[State: Mitigation Implemented]
[Priority: High]
Category: | Denial Of Service |
Description: | An external agent prevents access to a data store on the other side of the trust boundary. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Outside influence could break the communication connection or MQTT broker causing major disruption of service (ex: removing or cutting off comms to a critical temperature sensor of a heating or cooling machine). EdgeX has no means to protect the connection to the external MQTT broker, the broker itself, or subscriber to the broker. Physical and sytem security is required to protect these and mitigate this threat.
Query requests that do not receive a response would result in an error that could be responded to. |
Mitigator: | Adopter |
Mitigation Status: | Mitigation reviewed |
21. Data Flow query Is Potentially Interrupted
[State: Mitigation Implemented]
[Priority: High]
Category: | Denial Of Service |
Description: | An external agent interrupts data flowing across a trust boundary in either direction. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Outside influence could break the communication connection or MQTT broker causing major disruption of service (ex: removing or cutting off comms to a critical temperature sensor of a heating or cooling machine). EdgeX has no means to protect the connection to the external MQTT broker, the broker itself, or publisher to the broker. Physical and sytem security is required to protect these and mitigate this threat. |
Mitigator: | Adopter |
Mitigation Status: | Mitigation needed |
22. Potential Excessive Resource Consumption for EdgeX Foundry or Device/Sensor (via external MQTT broker - authenticated)
[State: Mitigation Implemented]
[Priority: High]
Category: | Denial Of Service |
Description: | Does EdgeX Foundry or Device/Sensor (via external MQTT broker - authenticated) take explicit steps to control resource consumption? Resource consumption attacks can be hard to deal with, and there are times that it makes sense to let the OS do the job. Be careful that your resource requests don't deadlock, and that they do timeout. |
Justification: | <no mitigation provided> |
Possible Mitigation: | EdgeX could send too many requests for data that cause the broker or subscriber to go offline or appear unresponsive - depending on the capabilities of the broker or subscribing application. In the opposite direction, an MQTT publisher could be tampered with or improperly configured to send too much data (overwhelming the EdgeX system or MQTT broker) causing a DoS. Other than writing the device service to filter data to avoid the “too much” data DoS, this threat is not mitigated. |
Mitigator: | Adopter |
Mitigation Status: | Mitigation reviewed |
23. Data Flow Sniffing
[State: Mitigation Implemented]
[Priority: High]
Category: | Information Disclosure |
Description: | Data flowing across query may be sniffed by an attacker. Depending on what type of data an attacker can read, it may be used to attack other parts of the system or simply be a disclosure of information leading to compliance violations. Consider encrypting the data flow. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Requires encryption of the communications (on both the EdgeX and device/sensor ends) which is not in place by default. MQTTS could be implemented by the adopter with the appropriate MQTT broker. |
Mitigator: | Adopter |
Mitigation Status: | Mitigation reviewed |
24. Data Store Denies Device/Sensor (via external MQTT broker - authenticated) Potentially Writing Data
[State: Mitigation Implemented]
[Priority: High]
Category: | Repudiation |
Description: | Device/Sensor (via external MQTT broker - authenticated) claims that it did not write data received from an entity on the other side of the trust boundary. Consider using logging or auditing to record the source, time, and summary of the received data. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Use of elevated log level (set writable configuration log level to DEBUG in the device service) can be used to log all data communications. Log level on the message bus may also be elevated. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
25. The Device/Sensor (via external MQTT broker - authenticated) Data Store Could Be Corrupted
[State: Mitigation Implemented]
[Priority: High]
Category: | Tampering |
Description: | Data flowing across query may be tampered with by an attacker. This may lead to corruption of Device/Sensor (via external MQTT broker - authenticated). Ensure the integrity of the data flow to the data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Requires encryption of the communications (on both the EdgeX and device/sensor ends) which is not in place by default. MQTTS could be implemented by the adopter with the appropriate MQTT broker. |
Mitigator: | Adopter |
Mitigation Status: | Mitigation reviewed |
26. Spoofing of Destination Data Store Device/Sensor (via external MQTT broker - authenticated)
[State: Mitigation Implemented]
[Priority: High]
Category: | Spoofing |
Description: | Device/Sensor (via external MQTT broker - authenticated) may be spoofed by an attacker and this may lead to data being written to the attacker's target instead of Device/Sensor (via external MQTT broker - authenticated). Consider using a standard authentication mechanism to identify the destination data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | With authentication in place the spoofing MQTT query sendor (or the spoofed external message broker) would not be properly authenticated and thereby be unable to publish. The EdgeX framework has the support to store secrets to authenticate devices. Broker host and port are part of services' configuration (covered under threats against configuration) |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
27. Spoofing the EdgeX Foundry Process
[State: Mitigation Implemented]
[Priority: High]
Category: | Spoofing |
Description: | EdgeX Foundry may be spoofed by an attacker and this may lead to unauthorized access to Device/Sensor (via external MQTT broker - authenticated). Consider using a standard authentication mechanism to identify the source process. |
Justification: | <no mitigation provided> |
Possible Mitigation: | With authentication in place the spoofing MQTT publisher of a query (or the spoofed external message broker) would not be properly authenticated and thereby be unable to make its request. The EdgeX framework has the support to store secrets to authenticate devices. Broker host and port are part of services' configuration (covered under threats against configuration) |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
Interaction: query
or actuation
28. Spoofing the EdgeX Foundry Process
[State: Not Applicable]
[Priority: High]
Category: | Spoofing |
Description: | EdgeX Foundry may be spoofed by an attacker and this may lead to unauthorized access to Device/Sensor. Consider using a standard authentication mechanism to identify the source process. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Without an authentication protocol, there is no mitigation for this threat. The device would not be able to determine that the Spoofing EdgeX caller is not EdgeX. |
Mitigator: | No mitigation or not applicable |
Mitigation Status: | Cannot mitigate or not appilcable |
29. Spoofing of Destination Data Store Device/Sensor
[State: Needs Investigation]
[Priority: High]
Category: | Spoofing |
Description: | Device/Sensor may be spoofed by an attacker and this may lead to data being written to the attacker's target instead of Device/Sensor. Consider using a standard authentication mechanism to identify the destination data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Due to the nature of many protocols, an outside agent could spoof a legitimate device/sensor. This is of particular concern if the device service auto provisions the devices/sensors without any authentication. Auto provisioning shold be limited to pick up trusted devices. Protocols such as BACnet do allow for authentication with the device/sensor. Commercial 3rd party software or extensions to EdgeX (see, for example, RSA’s Netwitness IoT: https://www.netwitness.com/en-us/products/iot/) could be used to detect anomalous sensor/device communications and isolate the sensor from the system, but there is no ability in EdgeX directly to protect against a spoofed device/sensor that does not authenticate (which is the norm in some older OT protocols). |
Mitigator: | Adopter |
Mitigation Status: | Mitigation written |
30. The Device/Sensor Data Store Could Be Corrupted
[State: Not Applicable]
[Priority: High]
Category: | Tampering |
Description: | Data flowing across query or actuation may be tampered with by an attacker. This may lead to corruption of Device/Sensor. Ensure the integrity of the data flow to the data store. I.e. - example: a man in the middle attack on the wire between EdgeX and the wired device/sensor or an attack on the sensor (giggling a vibration sensor) |
Justification: | <no mitigation provided> |
Possible Mitigation: | Outside influence on a sensor or device or intercept/use of the data to the device/sensor is one of the biggest threats to an edge system and one of the hardest to mitigate. If tampered with, a sensor or device could be used to send the wrong data (e.g., force a temp sensor to send a signal that it is too hot when it is really too cold), too much data (overwhelming the edge system by causing the sensor to send data too often), or not enough data (e.g., disconnecting a critical monitor sensor that would cause a system to stop).
EdgeX has no means to protect the "wire" to a physically connected device/sensor. Physical security is required to protect the wire and mitigate this threat.
Additional optional mitigation ideas require modifications to the EdgeX device service. The device service could be constructed to filter data to avoid the “too much” data DoS. The device service can be constructed to report and alert when there is not enough data coming from the device or sensor or the sensor/device appears to be offline (provided by the last connected tracking in EdgeX). Wrong data can be mitigated by having the device service look for expected ranges of values (as supported by min/max attributes on device profiles). All of these have limits and only mitigate the data from being used in the rest of EdgeX once received by the device service. Commercial 3rd party software or extensions to EdgeX (see, for example, RSA’s Netwitness IoT: https://www.netwitness.com/en-us/products/iot/) could also be used to detect anomalous sensor/device communications and isolate the sensor from the system. |
Mitigator: | Adopter |
Mitigation Status: | Cannot mitigate or not appilcable |
31. Data Store Denies Device/Sensor Potentially Writing Data
[State: Mitigation Implemented]
[Priority: Low]
Category: | Repudiation |
Description: | Device/Sensor claims that it did not write data received from an entity on the other side of the trust boundary. Consider using logging or auditing to record the source, time, and summary of the received data. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Use of elevated log level (set writable configuration log level to DEBUG in the device service) can be used to log all data communications. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
32. Data Flow Sniffing
[State: Not Applicable]
[Priority: High]
Category: | Information Disclosure |
Description: | Data flowing across query or actuation may be sniffed by an attacker. Depending on what type of data an attacker can read, it may be used to attack other parts of the system or simply be a disclosure of information leading to compliance violations. Consider encrypting the data flow. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Securing the data flow to/from a device or sensor is dependent on the OT protocol. In the case of most simple and typically older OT protocols (Modbus or GPIO as examples), there is no way to secure the communications with the device/sensor under that protocol. Critical sensors/devices of this nature should be physically secured (along with their physical connection to the EdgeX host). |
Mitigator: | No mitigation or not applicable |
Mitigation Status: | Mitigation reviewed |
33. Potential Excessive Resource Consumption for EdgeX Foundry or Device/Sensor
[State: Not Applicable]
[Priority: High]
Category: | Denial Of Service |
Description: | Does EdgeX Foundry or Device/Sensor take explicit steps to control resource consumption? Resource consumption attacks can be hard to deal with, and there are times that it makes sense to let the OS do the job. Be careful that your resource requests don't deadlock, and that they do timeout. |
Justification: | <no mitigation provided> |
Possible Mitigation: | EdgeX could send too many requests for data or actuation requests that cause the sensor / device to go offline or appear unresponsive - depending on the sophistication of the device/sensor. In the opposite direction, a device/sensor could be tampered with or improperly configured to send too much data (overwhelming the EdgeX system) causing a DoS. Other than writing the device service to filter data to avoid the “too much” data DoS, this threat is not mitigated. |
Mitigator: | No mitigation or not applicable |
Mitigation Status: | Mitigation reviewed |
34. Data Flow query or actuation Is Potentially Interrupted
[State: Mitigation Implemented]
[Priority: High]
Category: | Denial Of Service |
Description: | An external agent interrupts data flowing across a trust boundary in either direction. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Outside influence could break the communication connection or remove a device/senosr causing major disruption of service (ex: removing or cutting off comms to a critical temperature sensor of a heating or cooling machine). EdgeX has no means to protect the "wire" to a physically connected device/sensor. Physical security is required to protect the wire and mitigate this threat.
Query or actuation requests that do not receive a response would result in an error that could be responded to. |
Mitigator: | Adopter |
Mitigation Status: | Mitigation reviewed |
35. Data Store Inaccessible
[State: Mitigation Implemented]
[Priority: High]
Category: | Denial Of Service |
Description: | An external agent prevents access to a data store on the other side of the trust boundary. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Outside influence could break the communication connection or remove a device/senosr causing major disruption of service (ex: removing or cutting off comms to a critical temperature sensor of a heating or cooling machine). EdgeX has no means to protect the "wire" to a physically connected device/sensor. Physical security is required to protect the wire and mitigate this threat.
Query or actuation requests that do not receive a response would result in an error that could be responded to. |
Mitigator: | Adopter |
Mitigation Status: | Mitigation reviewed |
Interaction: query & config
36. Potential Excessive Resource Consumption for EdgeX Foundry or Consul (configuration)
[State: Mitigation Implemented]
[Priority: Low]
Category: | Denial Of Service |
Description: | Does EdgeX Foundry or Consul (configuration) take explicit steps to control resource consumption? Resource consumption attacks can be hard to deal with, and there are times that it makes sense to let the OS do the job. Be careful that your resource requests don't deadlock, and that they do timeout. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Consul runs as a container in a Docker network that, by default with security on, does not allow direct access to the APIs and UI without the Consul access token (see https://docs.edgexfoundry.org/2.3/security/Ch-Secure-Consul/#how-to-get-consul-acl-token). A rogue authorized user or someone that illegally obtained the Consul token could force Consul to use too many resources by invoking its API or stuffing too much configuration in the system (or impact it enough that disrupts its abilty to service the EdgeX services). |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
37. Spoofing of Destination Data Store Consul (configuration)
[State: Mitigation Implemented]
[Priority: Low]
Category: | Spoofing |
Description: | Consul (configuration) may be spoofed by an attacker and this may lead to data being written to the attacker's target instead of Consul (configuration). Consider using a standard authentication mechanism to identify the destination data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Replacing/spoofing the Consul container would require administrative access to the Docker socket. EdgeX services will talk to any service that answers on the configured consul hostname. See https://docs.edgexfoundry.org/2.3/security/Ch-Secure-Consul/ |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
Interaction: query or actuation
38. Data Store Inaccessible
[State: Mitigation Implemented]
[Priority: High]
Category: | Denial Of Service |
Description: | An external agent prevents access to a data store on the other side of the trust boundary. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Outside influence could break the communication connection or remove a device/senosr causing major disruption of service (ex: removing or cutting off comms to a critical temperature sensor of a heating or cooling machine). EdgeX has no means to protect the "wire" to a physically connected device/sensor. Physical security is required to protect the wire and mitigate this threat.
Query or actuation requests that do not receive a response would result in an error that could be responded to. |
Mitigator: | Adopter |
Mitigation Status: | Mitigation needed |
39. Data Flow query or actuation Is Potentially Interrupted
[State: Mitigation Implemented]
[Priority: High]
Category: | Denial Of Service |
Description: | An external agent interrupts data flowing across a trust boundary in either direction. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Outside influence could break the communication connection or remove a device/senosr causing major disruption of service (ex: removing or cutting off comms to a critical temperature sensor of a heating or cooling machine). EdgeX has no means to protect the "wire" to a physically connected device/sensor. Physical security is required to protect the wire and mitigate this threat.
Query or actuation requests that do not receive a response would result in an error that could be responded to. |
Mitigator: | Adopter |
Mitigation Status: | Mitigation reviewed |
40. Potential Excessive Resource Consumption for EdgeX Foundry or Device/Sensor (physically connected authenticated)
[State: Mitigation Implemented]
[Priority: High]
Category: | Denial Of Service |
Description: | Does EdgeX Foundry or Device/Sensor (physically connected authenticated) take explicit steps to control resource consumption? Resource consumption attacks can be hard to deal with, and there are times that it makes sense to let the OS do the job. Be careful that your resource requests don't deadlock, and that they do timeout. |
Justification: | <no mitigation provided> |
Possible Mitigation: | EdgeX could send too many requests for data or actuation requests that cause the sensor / device to go offline or appear unresponsive - depending on the sophistication of the device/sensor. In the opposite direction, a device/sensor could be tampered with or improperly configured to send too much data (overwhelming the EdgeX system) causing a DoS. Other than writing the device service to filter data to avoid the “too much” data DoS, this threat is not mitigated. |
Mitigator: | Adopter |
Mitigation Status: | Mitigation reviewed |
41. Data Flow Sniffing
[State: Not Applicable]
[Priority: High]
Category: | Information Disclosure |
Description: | Data flowing across query or actuation may be sniffed by an attacker. Depending on what type of data an attacker can read, it may be used to attack other parts of the system or simply be a disclosure of information leading to compliance violations. Consider encrypting the data flow. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Securing the data flow to/from a device or sensor is dependent on the OT protocol. In the case of something like BACnet secure (which is based on TLS - see https://www.bacnetinternational.org/page/secureconnect), the flow between EdgeX and the BACnet device can be encryped. The Device Service would need to be written to use that secure communications. In cases where there is no way to secure the communications with the device/sensor under that protocol, then mitigation is via physical security of the device/sensor (along with their connection to the EdgeX host). |
Mitigator: | No mitigation or not applicable |
Mitigation Status: | Mitigation reviewed |
42. Data Store Denies Device/Sensor (physically connected authenticated) Potentially Writing Data
[State: Mitigation Implemented]
[Priority: Low]
Category: | Repudiation |
Description: | Device/Sensor (physically connected authenticated) claims that it did not write data received from an entity on the other side of the trust boundary. Consider using logging or auditing to record the source, time, and summary of the received data. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Use of elevated log level (set writable configuration log level to DEBUG in the device service) can be used to log all data communications. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
43. The Device/Sensor (physically connected authenticated) Data Store Could Be Corrupted
[State: Mitigation Implemented]
[Priority: High]
Category: | Tampering |
Description: | Data flowing across query or actuation may be tampered with by an attacker. This may lead to corruption of Device/Sensor (physically connected authenticated). Ensure the integrity of the data flow to the data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | With authentication and encrypting the data between EdgeX and the device/sensor (ex: using TLS), the data on the wire can be protected. The physcial security of the device/sensor still needs to be achieved to protect someone tampering with the device/sensor (ex: holding a match to a thermostat).
As with device/sensors that are not authenticated, additional optional mitigation ideas to mitigate unprotected devices/sensors require modifications to the EdgeX device service. The device service could be constructed to filter data or report and alert when there is not enough data coming from the device or sensor or the sensor/device appears to be offline. Wrong data can be mitigated by having the device service look for expected ranges of values (as supported by min/max attributes on device profiles). All of these have limits and only mitigate the data from being used in the rest of EdgeX once received by the device service. Commercial 3rd party software or extensions to EdgeX (see, for example, RSA’s Netwitness IoT: https://www.netwitness.com/en-us/products/iot/) could also be used to detect anomalous sensor/device communications and isolate the sensor from the system. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation needed |
44. Spoofing of Destination Data Store Device/Sensor (physically connected authenticated)
[State: Mitigation Implemented]
[Priority: High]
Category: | Spoofing |
Description: | Device/Sensor (physically connected authenticated) may be spoofed by an attacker and this may lead to data being written to the attacker's target instead of Device/Sensor (physically connected authenticated). Consider using a standard authentication mechanism to identify the destination data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | With authentication protocol in place (as examplified by BACnet secured or ONVIF cameras with security on), the spoofing device or sensor would not be able to properly authenticated and thereby be denied the ability to send data, be queried. The EdgeX framework has the support to store secrets to authenticate devices. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
45. Spoofing the EdgeX Foundry Process
[State: Mitigation Implemented]
[Priority: High]
Category: | Spoofing |
Description: | EdgeX Foundry may be spoofed by an attacker and this may lead to unauthorized access to Device/Sensor (physically connected authenticated). Consider using a standard authentication mechanism to identify the source process. |
Justification: | <no mitigation provided> |
Possible Mitigation: | With authentication protocol in place (as examplified by BACnet secured or ONVIF cameras with security on), the device would not get the proper authenticated requests and thereby deny any query or actuation request. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
Interaction: read
46. Spoofing of Destination Data Store Configuration Files
[State: Mitigation Implemented]
[Priority: Low]
Category: | Spoofing |
Description: | Configuration Files may be spoofed by an attacker and this may lead to data being written to the attacker's target instead of Configuration Files. Consider using a standard authentication mechanism to identify the destination data store. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Configuration files are used to seed EdgeX configuration service (Consul) before the services are started. Configuration files are made part of the service container (deployed with the container image). The only way to spoof the file is to replace the entire service container with new configuration or to transplant new configuration in the container - both require privileaged access to the host. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
47. Potential Excessive Resource Consumption for EdgeX Foundry or Configuration Files
[State: Mitigation Implemented]
[Priority: Low]
Category: | Denial Of Service |
Description: | Does EdgeX Foundry or Configuration Files take explicit steps to control resource consumption? Resource consumption attacks can be hard to deal with, and there are times that it makes sense to let the OS do the job. Be careful that your resource requests don't deadlock, and that they do timeout. |
Justification: | <no mitigation provided> |
Possible Mitigation: | Config file does not consume resources other than file space. Configuration file is deployed with the service container and therefore, without access to the host and Docker, its size is controlled. |
Mitigator: | EdgeX Foundry |
Mitigation Status: | Mitigation reviewed |
Interaction: request