Do you track all third-party components you use directly and all internal components in a secure and persistent repository?

ID

esf_s3c_dev/use_secure_component_repository

Severity

high

Category

Levels

Optional

true

Tags

SSDF-PS.1.1, SSDF-PW.4.1, security, supply-chain

Description

Do you track all third-party components you use directly and all internal components in a secure and persistent repository?

Both third-party and proprietary components must be stored and consumed from trusted repositories. That repositories should be placed internally if possible and be handle only by administrators.

Rationale

When the organization makes decisions concerning selection, use, changes, or updates of thirdparty or open-source software for its products, it should perform a risk assessment and ensure the residual risks are acceptable.

One key point related to store thirdparty, open source or internally develop components in a secure repository, and all artifacts were analyzed and determined if risk is acceptable before included.

For example, whenever possible, images should be built from the source and not downloaded from the internet, unless there is an understanding of the provenance and trust of delivery, then upload to internal secure repository to be consumed from application lifecycle.

Verification

Initially the check identify untrusted public repositories configure by default, it could be changed in checkpoint configuration file to add other public untrusted repositories, or add in trusted private repositories. When any private repository is declared, the public repository list does not take effect.

Following package managers and repositories are analyzed:

  • Maven

  • Npm

  • Nuget

  • Pip

Remediation

  • Configure untrusted public or trusted private repositories for this check.

  • Remove references to untrusted repositories from project and CI files in following places:

     - Maven repositories referenced in files: pom.xml, settings.xml
     - NPM registry configuration: .npmrc, project configuration, user configuration, global configuration
     - Nuget Package Sources
     - Pip repositories configured in file: requirements.txt