| Literature DB >> 35336299 |
Ángel Longueira-Romero1,2, Rosa Iglesias1, Jose Luis Flores1, Iñaki Garitano2.
Abstract
The rapid evolution of industrial components, the paradigm of Industry 4.0, and the new connectivity features introduced by 5G technology all increase the likelihood of cybersecurity incidents. Such incidents are caused by the vulnerabilities present in these components. Designing a secure system is critical, but it is also complex, costly, and an extra factor to manage during the lifespan of the component. This paper presents a model to analyze the known vulnerabilities of industrial components over time. The proposed Extended Dependency Graph (EDG) model is based on two main elements: a directed graph representation of the internal structure of the component, and a set of quantitative metrics based on the Common Vulnerability Scoring System (CVSS). The EDG model can be applied throughout the entire lifespan of a device to track vulnerabilities, identify new requirements, root causes, and test cases. It also helps prioritize patching activities. The model was validated by application to the OpenPLC project. The results reveal that most of the vulnerabilities associated with OpenPLC were related to memory buffer operations and were concentrated in the libssl library. The model was able to determine new requirements and generate test cases from the analysis.Entities:
Keywords: CAPEC; CPE; CVE; CVSS; CWE; IACS; IEC 62443; OpenPLC; cybersecurity; directed graph; security metrics; vulnerability assessment
Mesh:
Year: 2022 PMID: 35336299 PMCID: PMC8952879 DOI: 10.3390/s22062126
Source DB: PubMed Journal: Sensors (Basel) ISSN: 1424-8220 Impact factor: 3.576
Overview of the information that is necessary to define each of the EDG elements.
| Symbol | Notation | Meaning | Values |
|---|---|---|---|
| □ |
| Root Node/ |
|
| ◯ |
| Asset Node |
|
| ◌ |
| Cluster |
|
| ▾ |
| Known Vulnerability Node |
|
| ⟶ |
| Dependency Relation | — |
| ⤏ |
| Updated Asset/ | — |
Figure 1Basic elements of an EDG. Note that clusters are not displayed in this figure. For clusters, see Figure 2. For metric definitions, see Section 3.2.
Figure 2Creating clusters. Application of the two proposed criteria to the creation of clusters to simplify the graph, where (a) represents the initial EDG: (1) Establishing a threshold to select which vulnerability stays outside the cluster (upper side). In step (b), potential clusters are detected according to the established threshold, while in (c) the final EDG with the generated clusters is shown. The severity value (CVSS) for v31 and v32 is supposed to be lower than the establish threshold. (2) Choosing the absence of vulnerabilities as the criterion to create clusters (lower side). In step (b), nodes with no vulnerability are detected. In (c), the final EDG with the generated clusters is shown.
Figure 3Tracking dependencies between the previous and current CPE values for asset a.
Figure 4Algorithm to generate the initial EDG of a given SUT.
Figure 5Example of the process of building the EDG model of a given SUT A. (a) Decompose of the SUT into assets. (b) Assign a CPE to each asset. (c) Add known vulnerabilities. (d) Add weaknesses and attack patterns.
Proposed metrics for the model.
| Metric | Definition | Reference Value | |
|---|---|---|---|
| VULNERABILITIES |
| Arithmetic mean of vulnerabilities in the SUT | |
|
| Number of vulnerabilities in a SUT | Ideally, the values of | |
|
| Number of vulnerabilities in a SUT | The lower the value of | |
|
| Number of vulnerabilities in an asset | Ideally, the value of | |
|
| Relative frequency of vulnerabilities of the asset | Ideally, the value of | |
|
| Multiplicity of weakness | Ideally, the value of | |
|
| Multiplicity of weakness | Ideally, the value of | |
| WEAKNESSES |
| Number of weaknesses in a SUT | Ideally, the value of |
|
| Number of weaknesses in a SUT | The lower the value of | |
Figure 6Representation of the temporal behavior in the graphical model using the two kinds of dependencies of the model. It is worth mentioning that these graphs could be further simplified by taking advantage of the cluster notation, as shown at the bottom of this figure.
Update information of both libssl and nodejs.
| Asset | 1st Update | Solved Vulnerabilities (CVSS) | 2nd Update | Solved Vulnerabilities (CVSS) |
|---|---|---|---|---|
| libssl | 2014/04/07 | CVE-2014-0076 (1.9) | 2018/12/06 | CVE-2018-5407 (1.9) |
| nodejs | 2014/03/27 | — | 2018/08/10 | CVE-2016-5325 (4.3) |
Figure 7Temporal evolution of the EDG for OpenPLC V1 for both libss and nodejs.
Figure 8Final EDG for libssl and nodejs integrating all the updates for Ubuntu Linux 14.04 for amd64 architecture.
Relationship between vulnerabilities and weaknesses for both libssl and nodejs.
| CVE | CVSS | CWE | Description |
|---|---|---|---|
| CVE-2014-0076 | 1.9 | CWE-310 | Cryptographic Issues |
| CVE-2014-0160 | 7.5 | CWE-119 | Improper Restriction of Operations within the Bounds of a Memory Buffer |
| CVE-2016-5325 | 6.1 | CWE-113 | Improper Neutralization of CRLF Sequences in HTTP Headers (‘HTTP Response Splitting’) |
| CVE-2018-0734 | 5.9 | CWE-327 | Use of a Broken or Risky Cryptographic Algorithm |
| CVE-2018-5407 | 4.7 | CWE-203 | Observable Discrepancy |
Mapping between the developed metrics and the requirements they refer in the ISA/IEC 62443. SR (Security Requirements), SM (Security Management), SVV (Security Validation and Verification), DM (Management of Security-Related Issues).
| Metric | SR-2 | SR-5 | SM-13 | SVV-4 | DM-3 |
|---|---|---|---|---|---|
|
| ■ | ■ | ■ | ■ | ■ |
|
| ■ | ■ | ■ | ■ | ■ |
|
| □ | ■ | ■ | □ | □ |
|
| ■ | ■ | ■ | ■ | □ |
|
| □ | ■ | ■ | □ | □ |
|
| ■ | ■ | ■ | ■ | □ |
|
| ■ | ■ | □ | ■ | ■ |
|
| ■ | □ | □ | ■ | ■ |
|
| □ | ■ | ■ | □ | □ |
An example of generated requirements for OpenPLC V1.
| CWE ID | Requirements |
|---|---|
| CWE-119 | Use languages that perform their own memory management. |
| CWE-119 | Use libraries or frameworks that make it easier to handle numbers without unexpected consequences. Examples include safe integer handling packages such as SafeInt (C++) or IntegerLib (C or C++). |
| CWE-119, CWE-200 | Use a CPU and operating system that offers Data Execution Protection (NX) or its equivalent. |
| CWE-190, CWE-200 | Ensure that all protocols are strictly defined, such that all out-of-bounds behaviors can be identified simply, and require strict conformance to the protocol. |
| CWE-310 | Clearly specify which data or resources are valuable enough that they should be protected by encryption. Require that any transmission or storage of this data/resource should use well-vetted encryption algorithms. Up-to-date algorithms must be used, and the entropy of the keys must be sufficient for the application. |
| CWE-113 | Use an input validation framework such as Struts or the OWASP ESAPI Validation API. |
| CWE-113 | Assume all input is malicious. Use an "accept known good" input validation strategy, i.e., use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does. |
| CWE-113 | Hard-code the search path to a set of known-safe values (such as system directories), or only allow them to be specified by the administrator in a configuration file. Do not allow these settings to be modified by an external party. |
| CWE-119 | Run or compile the software using features or extensions that automatically provide a protection mechanism that mitigates or eliminates buffer overflows. |
| CWE-119 | Replace unbounded copy functions with analogous functions that support length arguments, such as strcpy with strncpy. Create these if they are not available. |
Example of proposed training for OpenPLC V1.
| CWE ID | Training |
|---|---|
| CWE-113, CWE-119 | Identification of all potentially relevant properties of an input (length, type of input, the full range of acceptable values, missing or extra inputs, syntax, consistency across related fields). |
| CWE-113, CWE-119 | Input validation strategies. |
| CWE-113, CWE-119, CWE-200 | Allowlists and Denylists. |
| CWE-113, CWE-119 | Character encoding compatibility. |
| CWE-113, CWE-119 | Buffer overflow detection during compilation (e.g., Microsoft Visual Studio /GS flag, Fedora/Red Hat FORTIFY_SOURCE GCC flag, StackGuard, and ProPolice). |
| CWE-113, CWE-119CWE-200 | Secure functions, such as |
| CWE-113, CWE-119CWE-190 | Secure programming: memory management. |
| CWE-113, CWE-119 | Understand the programming language’s underlying representation and how it interacts with numeric calculation. |
| CWE-113, CWE-119 | System compartmentalization. |
| CWE-200, CWE-310 | Certificate management. |
| CWE-200, CWE-310 | Certificate pinning. |
| CWE-310 | Encryption integration (do not develop custom or private cryptographic algorithms). |
| CWE-310 | Secure up-to-date cryptographic algorithms. |
| CWE-200 | Shared resource management. |
| CWE-200 | Thread-safe functions. |
Example of generated test cases for OpenPLC V1.
| Capec ID | Test Cases |
|---|---|
| CAPEC-119 | Check for buffer overflows through manipulation of environment variables. This test leverages implicit trust often placed in environment variables. |
| CAPEC-119 | Static analysis of the code: secure functions and buffer overflow. |
| CAPEC-119 | Feed overly long input strings to the program in an attempt to overwhelm the filter (by causing a buffer overflow) and hoping that the filter does not fail securely (i.e. the user input is let into the system unfiltered) |
| CAPEC-119 | This test uses symbolic links to cause buffer overflows. The evaluator can try to create or manipulate a symbolic link file such that its contents result in out-of-bounds data. When the target software processes the symbolic link file, it could potentially overflow internal buffers with insufficient bounds checking. |
| CAPEC-119 | Static analysis of the code: secure functions and buffer overflow. |