"The project MUST have performed a security review within the last 5 years. This review MUST consider the security requirements and security boundary." – – Best Practices Badging Criteria
...
Criterion
Please fill in the survey questions for each of the following sections. In all cases, answer the questions from the point of view for YOUR application within ONAP.
For each one, additional information on the question is available to be read by clicking the arrow following the question.
Table of Contents |
---|
Security Knowledge
Know Secure Design
Do the committers and PTL know how to design secure software? Do the reviewers of OJSI tickets know secure design?
...
This requires understanding the following design principles, including the 8 principles from Saltzer and Schroeder:
...
Most items in this questionnaire are related to specific Best Practices Badging Criteria. The name of the associated criterion is listed at the end of the toggled "additional information" section, along with an indication of the badging level of the question, P=passing, S=silver and G=gold.
Once the security review is completed, the application owner can update the gold level badging question "security-review" as having been accomplished.
Table of Contents |
---|
Security Knowledge
Know Secure Design
Do the committers and PTL know how to design secure software? Do the reviewers of OJSI tickets know secure design?
Toggle cloak |
---|
Cloak |
---|
This requires understanding secure design principles, including the 8 principles from Saltzer and Schroeder:
|
...
Implement Secure Design
...
This document highlights a core set of high-level secure software development practices:
[know_secure_design P] |
Your Answers-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Implement Secure Design
Do the committers and PTL apply secure design principles when reviewing software for merging?
Toggle cloak |
---|
Cloak |
---|
The project must implement secure design principles (from 'know secure design'). For example, the project results should have fail-safe defaults (access decisions should deny by default, and projects' installation should be secure by default). They should also have complete mediation (every access that might be limited must be checked for authority and be non-bypassable). Note that in some cases principles will conflict, in which case a choice must be made (e.g., many mechanisms can make things more complex, contravening 'economy of mechanism' / keep it simple). Implement secure design builds on the question above of "know secure design". For ONAP, the committers must all know the secure design principles and reviewing the code must always includes looking at it from the point of review of the security principles. |
...
Know Common Errors
...
It's crucial to document the secure design practices and software design/coding standards and code review. This NIST SSDF document provides additional details: [implement_secure_design S] |
Your Answer-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Know Common Errors
Do the committers and PTL understand commonly found errors (and how to counter or mitigate them)? Do they apply these principles when reviewing software for merging?
...
Cloak |
---|
Examples of common kinds of errors that lead to vulnerabilities in this kind of software include SQL injection, OS injection, classic buffer overflow, cross-site scripting, missing authentication, and missing authorization. See the CWE/SANS top 25 or OWASP Top 10 for commonly used lists. Many books and courses are available to help you understand how to develop more secure software and discuss common implementation errors that lead to vulnerabilities. For example, the Secure Software Development Fundamentals course is a free set of three courses that explain how to develop more secure software (it's free if you audit it; for an extra fee you can earn a certificate to prove you learned the material). [know_common_errors P] |
Your Answers |
---|
-Please Explain | SECCOM Feedback / Recommendations |
---|---|
No Leaked Credentials
Do the committers and PTL verify that there are no non-test credentials and no non-test private keys in code to be merged?
...
Cloak |
---|
The public repositories MUST NOT leak a valid private credential (e.g., a working password or private key) that is intended to limit public access. [no_leaked_credentials P] |
Your Answer-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Security Documentation
Documentation Architecture
...
If so, please provide a URL to the pages on wiki.onap.org or onap.readthedocs.io that have the architecture or high level design. If not, please describe the high level design here using one or more paragraphs.
...
Cloak |
---|
A software architecture explains a program's fundamental structures, i.e., the program's major components, the relationships among them, and the key properties of these components and relationships. The architecture would often be part of the documents that describe what the software does and its interfaces. [documentation_architecture S] |
Your Answer-Please Describe | SECCOM Feedback / Recommendations |
---|---|
Documentation Security
Does your project have a description of what a user of your project can and cannot expect in terms of security from the software produced by the project, (In other words, what are its 'security requirements'?)
If so, please provide a URL to the page(s) on wiki.onap.org or onap.readthedocs.io. If not, please describe the security requirements here using one or more paragraphs.
...
Cloak |
---|
These are the security requirements that the software is intended to meet. There needs to be:
[documentation_security S] |
Your Answer-Please Describe | SECCOM Feedback / Recommendations |
---|---|
Assurance Case
Does your project actually meet its documented security requirements?
If so, please provide a URL to the page(s) on wiki.onap.org or onap.readthedocs.io that describe how the project meets its security goals. If not, please describe here (using one or more paragraphs) how the project meets its security goals.
...
Cloak |
---|
For ONAP, somewhere in the project's description, there needs to be (as indicated above):
This may be combined with the "documentation security" document. [assurance_case S] |
Your Answer |
---|
Non-Cryptographic Software Issues
The following are a few issues regarding your project's software as delivered that are not cryptographic-related.
Input Validation
Does your application accept input from potentially untrusted sources? If so, do you ensure that the input is valid before processing it?
...
Cloak |
---|
The project results MUST check all inputs from potentially untrusted sources to ensure they are valid (an *allowlist*), and reject invalid inputs, if there are any restrictions on the data at all. |
...
Hardening
Does your project apply hardening mechanisms so that software defects are less likely to result in security vulnerabilities?
...
Cloak |
---|
If you compile code into binary executables, do you use
If your project provides a web user interface:
If your project generates email:
If your project uses a database:
|
...
Vulnerability Mitigation
Vulnerabilities Critical Fixed
Have you closed all issues filed against your project in sonarcloud that are CRITICAL or BLOCKERs?
...
Cloak |
---|
All critical vulnerabilities should be fixed rapidly after they are reported. |
...
Vulnerabilities Fixed 60 Days
Are all vulnerabilities that are reported against your project, either through an OJSI ticket or publicly from CVE reports, fixed within two months of being reported?
...
Cloak |
---|
There MUST be no unpatched vulnerabilities of medium or higher severity that have been publicly known for more than 60 days. |
...
-Please Describe | SECCOM Feedback / Recommendations |
---|---|
Vulnerability Mitigation
Vulnerabilities Critical Fixed
Have you closed all issues filed against your project in sonarcloud that are CRITICAL or BLOCKERs?
Toggle cloak |
---|
Cloak |
---|
All critical vulnerabilities should be fixed rapidly after they are reported. [vulnerabilities_critical_fixed P] |
Your Answer-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Vulnerabilities Fixed 60 Days
Are all vulnerabilities that are reported against your project, either through an OJSI ticket or publicly from CVE reports, fixed within two months of being reported?
Toggle cloak |
---|
Cloak |
---|
There MUST be no unpatched vulnerabilities of medium or higher severity that have been publicly known for more than 60 days. [vulnerabilities_fixed_60_days P] |
Your Answer-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Non-Cryptographic Software Questions
The following are a few issues regarding your project's software as delivered that are not cryptographic-related.
Input Validation
Does your application accept input from potentially untrusted sources? If so, do you ensure that the input is valid before processing it?
Toggle cloak |
---|
Cloak |
---|
The project results MUST check all inputs from potentially untrusted sources to ensure they are valid (an *allowlist*), and reject invalid inputs, if there are any restrictions on the data at all. [input_validation S] |
Your Answer-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Hardening
Does your project apply hardening mechanisms so that software defects are less likely to result in security vulnerabilities?
Toggle cloak |
---|
Cloak |
---|
If you compile code into binary executables, do you use
If your project provides a web user interface:
If your project generates email:
If your project uses a database:
[hardening SG] |
Your Answer-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Cryptographic-specific Software Questions
The following questions all deal with cryptographic issues.
...
Cloak |
---|
If the software produced by the project is an application or library, and its primary purpose is not to implement cryptography, then it SHOULD only call on software specifically designed to implement cryptographic functions; it SHOULD NOT re-implement its own. [crypto_call P] |
Your Answer-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Crypto Random - Generic
Does your software use random information? If so, does it use a cryptographically secure random number generator?
...
Cloak |
---|
The security mechanisms within the software produced by the project MUST generate all cryptographic keys and nonces using a cryptographically secure random number generator, and MUST NOT do so using generators that are cryptographically insecure. A cryptographically secure random number generator may be a hardware random number generator ( |
...
random. For additional guidance and examples about what kind of specifications to rate a random bit generator (RBG) please review:
[crypto_random P] |
Your Answers-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Crypto Weaknesses
Does your software depend on any cryptographic algorithms or modes that have known serious weaknesses?
...
Cloak |
---|
The default security mechanisms within the software produced by the project SHOULD NOT depend on cryptographic algorithms or modes with known serious weaknesses (e.g., the SHA-1 cryptographic hash algorithms, or the CBC mode in SSH). [crypto_weaknesses PS] |
Your Answer-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Crypto Working
Does your software depend on any cryptographic algorithms that are known to be broken?
...
Cloak |
---|
The default security mechanisms within the software produced by the project MUST NOT depend on broken cryptographic algorithms (e.g., MD4, MD5, single DES, RC4, Dual_EC_DRBG), or use cipher modes that are inappropriate to the context, unless they are necessary to implement an interoperable protocol (where the protocol implemented is the most recent version of that standard broadly supported by the network ecosystem, that ecosystem requires the use of such an algorithm or mode, and that ecosystem does not offer any more secure alternative). The documentation MUST describe any relevant security risks and any known mitigations if these broken algorithms or modes are necessary for an interoperable protocol. [crypto_working P] |
Your Answer-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Crypto Keylength
Does your software generate any keys? If so, do they use any default key-lengths that are considered insecure?
...
Cloak |
---|
The security mechanisms within the software produced by the project MUST use default key-lengths that at least meet the NIST minimum requirements through the year 2030 (as stated in 2012). It MUST be possible to configure the software so that smaller key-lengths are completely disabled. [crypto_keylength P] |
Your Answers-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Crypto Algorithm Agility
Does your software use cryptographic algorithms? If so, can a user of ONAP switch the algorithm if one is found to be broken?
...
Cloak |
---|
The project SHOULD support multiple cryptographic algorithms, so users can quickly switch if one is broken. Common symmetric key algorithms include AES, Twofish, and Serpent. Common cryptographic hash algorithm alternatives include SHA-2 (including SHA-224, SHA-256, SHA-384 AND SHA-512) and SHA-3.. [crypto_algorithm_agility S] |
Your Answers-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Crypto Certificate Verification
Does your software use HTTPS? If so, does it do certificate verification of the host certificates by default?
toggle-cloak |
---|
...
-cloak |
---|
Cloak |
---|
This applies to both ingress into and egress from your project.
The software produced by the project MUST, if it supports TLS, perform TLS certificate verification by default when using TLS, including on sub-resources. Note: One aspect of this is that, if something is missing that prevents the TLS from working, the software must NOT fall back to insecure mode but must instead prevent communication. If an insecure mode is allowed, it MUST be explicitly configured. Note 2: If all of your traffic, either ingress or egress, is travelling through the ONAP mesh, then make a statement about that. [crypto_certificate_verification S] |
Your Answers-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Crypto Credential Agility
...
Cloak |
---|
The project MUST support storing authentication credentials (such as passwords and dynamic tokens) and private cryptographic keys in files that are separate from other information (such as configuration files, databases, and logs), and permit users to update and replace them without code recompilation.code recompilation. [crypto_credential_agility S] |
Your Answers-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Crypto TLS1.2
Does your software support HTTPS? If so, is the minimum version allowed TLS1.2?
...
Cloak |
---|
The software produced by the project MUST, if it supports or uses TLS, support at least TLS version 1.2. Note that the predecessor of TLS was called SSL. [crypto_tls12 SG] |
Your |
---|
Answers-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Crypto Used Network
Does your software have network communications inbound or outbound? If so, do you support secure protocols for all such network communications?
...
Cloak |
---|
The software produced by the project MUST support secure protocols for all of its network communications, such as SSHv2 or later, TLS1.2 or later (HTTPS), IPsec, SFTP, and SNMPv3. Insecure protocols such as FTP, HTTP, telnet, SSLv3 or earlier, and SSHv1 MUST be disabled by default, and only enabled if the user specifically configures it. [crypto_used_network SG] |
Your Answers-Please Explain | SECCOM Feedback / Recommendations |
---|---|
Crypto Verification Private
...
Cloak |
---|
The software produced by the project MUST, if it supports TLS, perform certificate verification before sending HTTP headers with private information (such as secure cookies). [crypto_verification_private S] |
Your Answers-Please Explain | SECCOM Feedback / Recommendations |
---|---|