Security Development Lifecycle
Secure product development
In order to develop a product with few vulnerabilities, a process for a secure lifecycle (security development lifecycle) should be used. The IEC 62443-4-1 standard describes such a process for automation systems. The process is made up of eight elements.
In recent years, the CERT network has disclosed over 10,000 IT security vulnerabilities in products worldwide every year in accordance with the Common Vulnerability Enumeration (CVE) concept. There are certainly many more undetected or unpublished points of attack. So how can something be done about this situation?
At first glance, the CVE concept already provides an answer. Each message is assigned to a vulnerability type (Common Weaknesses Enumeration), for example CWE-20 "Insufficient input validation". However, it would hardly be possible to strive for the absence of errors in all 1,248 entries in the database [1] as a development goal. So how can a high level of security quality be achieved? In order to develop a product with few vulnerabilities, a process for a secure lifecycle (security development lifecycle) should be used. The IEC 62443-4-1 standard describes such a process for automation systems. The process is made up of eight elements.
1. specification of the IT security requirements
As a first step, it is important to understand and describe the relevant conditions of use for the product. Is the product operated by trustworthy personnel in a controlled environment? Or is it as uncontrollable as the card terminal installed in the supermarket? What information is processed? Is it just the user's data or is information from another party - such as a machine manufacturer or integrator - to be taken into account? By answering these questions, the protection requirements of the product and its functions and data can be determined and the threats can be identified. Threats arise, for example, from the manipulation or reading of data during physical access. If several parties are involved, threats result from the disclosure of a machine manufacturer's control program by the user, for example.
On this basis, the security requirements are formulated that are decisive for further action. If the product is at risk in its environment, it must make physical access more difficult and make such attempts recognizable. If information from different parties is to be protected, it is necessary for rights management to clearly separate access. The security objectives also include defining the level of security to be achieved, which is based on the strength of the attacker. If large values are to be secured, more attacks will have to be fended off. As a result, the security requirements should be available in full when designing and implementing the security concept so that they can be incorporated (Fig. 1).
2. security-by-design: building a robust concept
The product is now designed in such a way that its structure and functions fulfill the protection goals and it is able to fend off the threats that have been gathered. To this end, proven security concepts such as the minimization of execution and access rights, multi-level security mechanisms and the reduction of attack surfaces should be considered. Applying proven design rules avoids many of the vulnerability types listed above. The threat analysis must be continued according to the elaborated design. Here, the threat from possible points of attack is assessed to determine the vulnerability. The residual risk can only be accepted if the occurrence of possible damage is considered unlikely enough for all threats. The security of the design is supported by a four-eyes principle (Fig. 2).
From encrypted communication links to special chips for storing electronic keys to processors that only execute digitally signed code, many technical means are available. Appropriate rights and role management can be provided to manage the information of several parties. This provides a robust concept that cannot be easily undermined.
3. secure implementation: understanding the (programming) craft
The clean realization of the design in hardware and software is the second essential element in preventing vulnerabilities. Programming guidelines contain specifications which, if followed, help to prevent typical errors. Examples include the regulations on the correct handling of the length of character strings or the use of special characters. The correct handling of error messages is also very important. True to the motto "If everything goes according to plan, no errors will occur", these instructions are often ignored during development, so that they lead to security gaps in real use. There are programming guidelines that can be used as examples for almost all programming languages. In addition to the dual control principle, tools can also be used to check the implementation, which examine the resulting code for compliance with the guidelines or typical error patterns (static code analysis). If the procedure described is followed, the program is characterized by high quality and fewer errors - also in terms of security.
4. security tests: creating trust
The verification of the safety properties must cover several aspects: For each safety requirement established in the specification, the respective proofs must be provided by tests. In addition, proof of the effectiveness of all security measures defined in the design is required. Furthermore, a manual or automatic check for known vulnerabilities as well as frequently occurring errors and problems must be carried out in order to detect typical implementation errors or already published inadequacies in used subcomponents.
Fuzzing tests are also state of the art: the robustness of the product can be checked by sending randomly falsified data. Finally, an expert should carry out an attack test (penetration test). Independent of the normal team, the expert attempts to overcome the product's security barriers. Due to its autonomy, operational blindness should be avoided. The penetration test can be carried out internally or by a specialized service provider. The procedure described results in a high level of confidence in the security capability of the product.
5. security defect management: addressing vulnerabilities
Despite the realization of all tests, the absence of evidence (of vulnerabilities) is not evidence of absence (of vulnerabilities). There is no such thing as a vulnerability-free product. In this respect, ongoing monitoring and the receipt of security reports are an integral part of the product life cycle. Problems that are made public must be evaluated and may lead to security advisories and security updates. The security quality and resilience of the products must therefore be continuously monitored (Fig. 3).
6. security updates: provide patches
Security vulnerabilities are usually rectified by providing security updates, known as patches. These must be tested for side effects and documented in such a way that the user of the product can decide how to proceed. It goes without saying that updates must be made available in such a way that their integrity can be checked. In this way, the security quality and resilience of the products in the field are maintained.
7. security documentation: keep manuals available
To ensure that the product can be used securely, the user requires detailed documentation, for example on the intended operating conditions, the security functions, network connections and integration into central systems, for example for user management or security monitoring. The user is also informed about what they need to consider for the safe use of the product in terms of its setup or operation, for example where information on possible vulnerabilities and available updates can be found. If such documentation is available, the user can take full advantage of the product's security features and qualities.
8. security management: clarifying processes and responsibilities
Finally - and in reality right from the start - processes and responsibilities must be clarified, employee qualifications must be ensured and all processes must be organized. Ultimately, it must be ensured that no product can be released unless it has passed all security tests and all known security problems have been resolved. This allows users to have full confidence in their supplier (Fig. 4).
Safe life cycle: ensuring quality in the long term
Specific security functions, such as encryption or access control, have not been the focus to date. The international standard IEC 62443-4-2 describes security functions for components that are required with regard to the interaction of security functions in accordance with IEC 62443-3-3. However, the mere presence of these functions is of little help and creates a false sense of security if the function or the entire product is implemented incorrectly. IEC 62443-4-2 therefore requires a secure life cycle in accordance with IEC 62443-4-1.
A product that is developed and maintained in a secure life cycle is always characterized by a high level of security quality that users can trust. By certifying its life cycle process, the product manufacturer underpins this trust. Product certification in accordance with IEC 62443 builds on the secure process and confirms the product properties, but only covers a specific point in time.
Dr.-Ing. Lutz Jänicke is Corporate Product & Solution Security Officer at Phoenix Contact in Blomberg
Literature
[1] https://cwe.mitre.org/data/index.html















