Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

"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 [security-review G]


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:

This requires understanding secure 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:

  • economy of mechanism (keep the design as simple and small as practical, e.g., by adopting sweeping simplifications)
  • fail-safe defaults (access decisions should deny by default, and projects' installation should be secure by default)
  • complete mediation (every access that might be limited must be checked for authority and be non-bypassable)
  • open design (security mechanisms should not depend on attacker ignorance of its design, but instead on more easily protected and changed information like keys and passwords)
  • separation of privilege (ideally, access to important objects should depend on more than one condition, so that defeating one protection system won't enable complete access. E.G., multi-factor authentication, such as requiring both a password and a hardware token, is stronger than single-factor authentication)
  • least privilege (processes should operate with the least privilege necessary)
  • least common mechanism (the design should minimize the mechanisms common to more than one user and depended on by all users, e.g., directories for temporary files)
  • psychological acceptability (the human interface must be designed for ease of use - designing for 'least astonishment' can help)
  • limited attack surface (the attack surface - the set of the different points where an attacker can try to enter or extract data - should be limited)
  • input validation with whitelists (inputs should typically be checked to determine if they are valid before they are accepted; this validation should use whitelists (which only accept known-good values), not blacklists (which attempt to list known-bad values).

This document highlights a core set of high-level secure software development practices: 

  • Secure Software Development Framework
  • Please review the “Produce Well-Secured Software” section.  Suggests using forms of risk modeling for assessing the security risk and using standardized security features and services for implementations.

[know_secure_design P]


Your Answers-Please ExplainSECCOM Feedback / Recommendations
Yes. Majority of DCAE committers and PTL are generally familiar with secure software development practice and experienced in vulnerability resolution. The CLM scan reports and OJSI tickets are periodically assessed by the same PTL/committers. (Based on managerial assessment of the committers' knowledge.)

<Muddasar>Are there any efforts/means within DCAE team to ensure all contributors and committers are familiar with Sec-SDLC practices?

CLM Scans and OJSI tickets are scanned, what is the efficacy of such reviews?  Is it reducing downstream discoveries of issues?

Implement Secure Design

Do the committers and PTL apply secure design principles when reviewing software for merging?

...

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.

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 ExplainSECCOM Feedback / Recommendations
Yes, DCAE PTL/committers do review for security design principles adhrence adherence before merging code. (There is a checklist that committers should be following that includes looking at secure design issues.)<Muddasar>. Is this done based on memory or based on a checklist/helper app?

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 ExplainSECCOM Feedback / Recommendations
PTL/most committers do understand and make effort to mitigate these errors during reviews. A session on security/quality checkpoints will be organized for London to get all new committers up to speed. 

No Leaked Credentials

...

<Muddasar>. Could we use this opportunity to record and save the session?  this may be helpful for new team members.

Amy Zwarico the findings and recommendations from SonarCloud will help educate the developers

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.
A project MAY leak 'sample' credentials for testing and unimportant databases, as long as they are not intended to limit public access.

[no_leaked_credentials P]


Your Answer-Please ExplainSECCOM Feedback / Recommendations
Yes, all DCAE patches are verified to ensure non-test credentials/private keys are not included in the code/repositories

<Muddasar> can this be associated with a scan report to reduce human errors?  SCAN for credentials be part of testing.

Amy Zwarico  use SonarCloud to find any embedded credentials

Security Documentation

Documentation Architecture

Does your project have an architecture or high level design documented?

If so, please provide a URL to the pages on wiki.onap.org or onap.readthedocs.io  or docs.onap.org 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 DescribeSECCOM Feedback / Recommendations
Yes. DCAE architecture is maintained under ONAP RTD - https://docs.onap.org/projects/onap-dcaegen2/en/latest/sections/architecture.html 

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:

  • a description of the threat model,
  • clear identification of trust boundaries,
  • how the software expects to deal with the threat model and trust boundaries

[documentation_security]


TBA: verbiage about "design doc should include how component intends to implement the high level onap security reqts found here

[documentation_security S]


Your Answer-Please DescribeSECCOM Feedback / Recommendations
Yes. Documented under this wiki DCAE Security Design & Assurance 

Assurance Case

Does your project actually meet its documented security requirements?

...

<Muddasar>. description is clear on the link provided. It is a good effort.  Wondering if this information is added to DCAE user documentation.  Also, CONSUL app protection and data protections should be considered some where, it is not in scope for DCAE, is it inscape somewhere else?

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):

  • a description of how the project met the threat model,
  • a description of how the project maintains the trust boundaries,
  • an argument that secure design principles have been applied, and
  • an argument that common implementation security weaknesses have been countered.

This may be combined with the "documentation security" document.

[assurance_case S]


Yes
Your Answer-Please DescribeSECCOM Feedback / Recommendations
Yes. Documented under this wiki DCAE Security Design & Assurance 

<Muddasar> wiki does not constitute documented security requirements.  it merely tells what DCAE team usually do.  This area can be improved to describe Security requirements and aligned with how these are met.

Amy Zwarico SECCOM developed security requirements years ago.

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_critical_fixed P]


Your Answer-Please ExplainSECCOM Feedback / Recommendations
Mostly YES.  Majority of the projects have no/minimal vulnerabities and blocker issues reported from SONARCLOUD for DCAE components - https://sonarcloud.io/organizations/onap/projects?search=dcaegen2&sort=-coverage

Vulnerabilities Fixed 60 Days

...

<Muddasar>. this can be termed as a quality matrix.  days open/TTR etc  should be tracked.  self-induced vs external, or code, review, test escape/

Amy Zwarico Agreed. That data is available in SonarCloud, but at the moment we cannot get the API working. (sad)

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.
The vulnerability must be patched and released by the project itself (patches may be developed elsewhere). A vulnerability becomes publicly known (for this purpose) once it has a CVE with publicly released non-paywalled information (reported, for example, in the National Vulnerability Database) or when the project has been informed and the information has been released to the public (possibly by the project). A vulnerability is considered medium or higher severity if its Common Vulnerability Scoring System (CVSS) base qualitative score is medium or higher. In CVSS versions 2.0 through 3.1, this is equivalent to a CVSS score of 4.0 or higher. Projects may use the CVSS score as published in a widely-used vulnerability database (such as the National Vulnerability Database) using the most-recent version of CVSS reported in that database. Projects may instead calculate the severity themselves using the latest version of CVSS at the time of the vulnerability disclosure, if the calculation inputs are publicly revealed once the vulnerability is publicly known. Note: this means that users might be left vulnerable to all attackers worldwide for up to 60 days. This criterion is often much easier to meet than what Google recommends in Rebooting responsible disclosure, because Google recommends that the 60-day period start when the project is notified even if the report is not public. Also note that this applies to each individual project in ONAP. Once a patch is available from each individual project, others can determine how to deal with the patch (e.g., they can update to the newer version or they can apply just the patch as a cherry-picked solution).

[vulnerabilities_fixed_60_days P]


Your Answer-Please ExplainSECCOM Feedback / Recommendations
Yes. Critical vulnerabilities/issues are compiled by SECCOM periodically and DCAE project team resolves them in-time for current/prev release. Critical vulnerabilities/issues are compiled by SECCOM periodically and DCAE project team resolves them in-time for current/prev release.

<Muddasar>. this can be termed as a quality matrix.  days open/TTR etc  should be tracked.  self-induced vs external, or code, review, test escape/

Amy Zwarico  there is a small vulnerability team that manages this. It is very rare to get a vuln reported against the ONAP platform. 99% are reported against LF tools such. Agreed that ONAP should track.


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?

...

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.
Note that comparing input against a list of 'bad formats' (aka a *denylist*) is normally not enough, because attackers can often work around a denylist. In particular, numbers are converted into internal formats and then checked if they are between their minimum and maximum (inclusive), and text strings are checked to ensure that they are valid text patterns (e.g., valid UTF-8, length, syntax, etc.). Some data may need to be 'anything at all' (e.g., a file uploader), but these would typically be rare.

[input_validation S]


Your Answer-Please ExplainSECCOM Feedback / Recommendations

DCAE has different types of components/microservices

Collectors: All DCAE collectors interface with external network element (trusted/untrusted depending on protocol/interface) however data validation is done in most cases.

VESCollector/HV-VES - Data validation done on event receipt and rejected if non-conforming to the expected spec. Both collectors are expected to recieve data from any xNF.

  • DFC/RESTConf/SNMPTrap - Data validation done during post processing of the events in the northbound flow. DFC and RESTConf accepts events only from configured xNF, SNMPTrap collector is listener services accepts any traps sent to it.

EventProcessors/Analytics - These components do not accept data from external sources (i.e outside ONAP) and work through data coming via DMAAP (internal to ONAP)

<Muddasar>. shouldn't collectors validate data source/sender?  known vs unknown sender and degree of trust?

Amy Zwarico There should be tests for all external interfaces that include fuzzing, etc.

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

  • compiler flags to mitigate attacks (such as -fstack-protector)?
  • compiler flags to eliminate undefined behavior?
  • special build features like Address Sanitizer (ASAN) (if available)?

If your project provides a web user interface:

  • Does it require the hardening headers: Content Security Policy (CSP), HTTP Strict Transport Security (HSTS), X-Content-Type-Options (as 'nosniff'), and X-Frame-Options?
  • If your web site were to be passed to a website such as <securityheaders.com>, would you get a grade of A or B?
  • Are administrative web pages shown or listed only if the logged in user is an administrator?
  • Are your JavaScript and CSS served from separate files?
  • Do you use HTTP to HTTPS redirects?
  • Do you use HSTS?
  • If appropriated, do you do rate limiting to prevent DOS attacks?
  • Do you employ measures to resist Cross Site Request Forgeries (CSRFs)?
  • Do your cookies use settings to counter Javascript-based attacks, set secure=true, and counter CSRF using a SameSite value?
  • Do you protect use of target='_blank' with rel="noopener noreferrer"?

If your project generates email:

  • Do you take measures for rate limiting?
  • Do you encrypt the email addresses that might be stored in a database?

If your project uses a database:

  • Do you encrypt values that are sensitive?

[hardening SG]


Your Answer-Please ExplainSECCOM Feedback / Recommendations

Majority of DCAE services are complaint. There are no C/C++ code in DCAE repositories hence compiler flags related questions do not apply.

DL-Admin has a web (user) interface which is not complaint with all hardening requirements listed; it also stores external DB credentials (TBD if data is encrypedencrypted/hashed when persisted in DB).

<Muddasar> How should we measure security vulnerability stemming from unharden code?  vulnerabilities discovered after integration stage, release stage may be?


Cryptographic-specific Software Questions

The following questions all deal with cryptographic issues.

Crypto Call – Generic

Does your software implement any cryptographic functions, such as hash functions, instead of calling on software specifically designed to implement cryptographic functions?

...

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 ExplainSECCOM Feedback / Recommendations
DCAE does not include any internal module to implement cryptography - strictly uses AAF (currently) and OOM/ServiceMesh for supporting them. 

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 (/dev/random), or it may be a cryptographically secure pseudo-random number generator (CSPRNG) using an algorithm such as Hash_DRBG, HMAC_DRBG, CTR_DRBG, Yarrow, or Fortuna. Examples of calls to secure random number generators include Java's java.security.SecureRandom and JavaScript's window.crypto.getRandomValues. Examples of calls to insecure random number generators include Java's java.util.Random and JavaScript's Math.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 ExplainSECCOM Feedback / Recommendations
DCAE does not generate any cryptographic keys and/or nonces. Need to ensure DL-Admin updates planned are compliant with this requirement in future release.

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).
Concerns about CBC mode in SSH are discussed in CERT: SSH CBC vulnerability.

[crypto_weaknesses PS]


Your Answer-Please ExplainSECCOM Feedback / Recommendations

No such known dependency exist exists currently.

Need to ensure DL-Admin updates planned are compliant with this requirement in future release.


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.
ECB mode is almost never appropriate because it reveals identical blocks within the ciphertext as demonstrated by the ECB Penguin, and CTR mode is often inappropriate because it does not perform authentication and causes duplicates if the input state is repeated. In many cases it's best to choose a block cipher algorithm mode designed to combine secrecy and authentication, e.g., Galois/Counter Mode (GCM) and EAX. Projects MAY allow users to enable broken mechanisms (e.g., during configuration) where necessary for compatibility, but then users know they're doing it.

[crypto_working P]


Your Answer-Please ExplainSECCOM Feedback / Recommendations

No such known dependency exist exists currently.

Need to ensure DL-Admin updates planned are compliant with this requirement in future release.

Amy Zwarico SonarCloud finds broken algos in TLS and other crypto in the code

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.
These minimum bit-lengths are: symmetric key 112, factoring modulus 2048, discrete logarithm key 224, discrete logarithmic group 2048, elliptic curve 224, and hash 224 (password hashing is not covered by this bit-length, more information on password hashing can be found in the Crypto Password Storage question). See <www.keylength.com> for a comparison of key-length recommendations from various organizations. The software MAY allow smaller key-lengths in some configurations (ideally it would not, since this allows downgrade attacks, but shorter key-lengths are sometimes necessary for interoperability).

[crypto_keylength P]


Your Answers-Please ExplainSECCOM Feedback / Recommendations
DCAE does not generate keys

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 ExplainSECCOM Feedback / Recommendations

Not currently however need to e nsure ensure DL-Admin updates planned are compliant with this requirement in future release.

Amy Zwarico standard configurations of TLS generally support multiple ciphers


Crypto Certificate Verification

Does your software use HTTPS? If so, does it do certificate verification of the host certificates by default?

Toggle cloak

Cloak

This applies to both ingress into and egress from your project.

  • For ingress, this applies to validation of the client certificates coming into your system.
  • For egress, this applies to validation of the host certificates for external systems that your system reads from or sends to.

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 that incorrect TLS certificate verification is a common mistake. For more information, see The Most Dangerous Code in the World: Validating SSL Certificates in Non-Browser Software by Martin Georgiev et al. and Do you trust this application? by Michael Catanzaro.

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 ExplainSECCOM Feedback / Recommendations

As of Kohn, DCAE component default deployment is set for non-TLS (in OOM charts) however the ServiceMesh integration will ensure both inter and intra ONAP component communication is supported under TLS. 

To be confirmed if host certificate validation is done under Service Mesh.

<Muddasar> can a user change the default behavior? if default is non-TLS, does documentation clearly indicate how to change the default behavior?  

Crypto Credential Agility

Does your software save or process authentication credentials or private cryptographic keys? If so, is that information stored separately from other information?

...

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.

[crypto_credential_agility S]


Your Answers-Please ExplainPlease ExplainSECCOM Feedback / Recommendations

In general the application credentials are stored as K8S secret and application config under K8S Configmap. For application config processing simplification, these are combined into single file within K8S pod/container (true when credentials are maintained part of microservice charts).  With migration to SVC mesh, most component charts are being updated to remove independent K8S secret in Kohn, any remaining updates will be completed by London release.



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 ExplainSECCOM Feedback / Recommendations
Yes, all DCAE component support mininum TLSv1.2 (when enabled for HTTPS)

Amy Zwarico there is an integration test that checks for TLS and I think for the version.


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 ExplainSECCOM Feedback / Recommendations

Yes, most DCAE components (collectors) support secure external interfaces with exception of SNMPTRap SNMPTrap which is based on UDP protocol. 

FTP (DFC), HTTP (VES) are supported options but disabled by default. 

<Muddasar> SNMP ver?


Crypto Verification Private

Does your software use outbound HTTPS connections? If so, does it perform certificate verification before sending HTTP headers with private information (such as secure cookies)

...

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 ExplainSECCOM Feedback / Recommendations
All DCAE components uses standard libraries for HTTPS calls (java components use java11 libraries and python components uses request library). These lib's libs are externally managed, and we believe these requirements for certificate verification before sending HTTP headers are being met.  

<Muddasar>. Use of standard libraries does not mean certification verification being applied.  Can someone confirm Java11 behavior?