Projects that follow the best practices below can voluntarily self-certify and show that they've achieved an Open Source Security Foundation (OpenSSF) best practices badge.
[](https://www.bestpractices.dev/projects/10989)<a href="https://www.bestpractices.dev/projects/10989"><img src="https://www.bestpractices.dev/projects/10989/badge"></a> The Apache-2.0 license is approved by the Open Source Initiative (OSI).
The Apache-2.0 license is approved by the Open Source Initiative (OSI).
Non-trivial license location file in repository: https://github.com/moby/moby/blob/master/LICENSE.
Some documentation basics file contents found.
Go Documentation;
API documentation (swagger);
Given only https: URLs.
GitHub supports discussions on issues and pull requests.
Repository on GitHub, which provides public git repositories with URLs.
Repository on GitHub, which uses git. git can track the changes, who made them, and when they were made.
Release-candidates (source) through Github, binaries through (e.g.) download.docker.com (test channel), and automated builds (for testing) as OCI image;
Repository on GitHub, which uses git. git is distributed.
Release notes are included in GitHub releases, and a copy published in the Docker Documentation. Changes in the API are included on GitHub;
Mentions of CVEs are included in github releases release-notes;
Included in CONTRIBUTING.md;
Issues are tracked through GitHub; https://github.com/moby/moby/issues
Usually within 1-2 business days. Enhancement requests may be left pending to gather interest or refinement.
Issues are handled through GitHub, so searchable; https://github.com/moby/moby/issues
Security policy is included in the GitHub repository; https://github.com/moby/moby/blob/master/SECURITY.md
Reports can be sent to security@docker.com, after which a GitHub advisory may be created for the reporter to participate; https://github.com/moby/moby/blob/master/SECURITY.md
Non-trivial build file in repository: https://github.com/moby/moby/blob/master/Makefile.
Non-trivial build file in repository: https://github.com/moby/moby/blob/master/Makefile.
Instructions are provided and can be built using FLOSS tools; https://github.com/moby/moby/blob/master/project/PACKAGERS.md
Project uses GitHub actions, but tests can be run locally. Instructions are included in;
Tests are implemented using Go's testing package.
Test matrix covers different platforms and architectures.
Using GitHub actions.
Included in the contributing guide; https://github.com/moby/moby/blob/master/docs/contributing/test.md
PRs adding new functionality or fixing regressions are accompanied by updated (or new) tests, e.g.; https://github.com/moby/moby/pull/50576
Included in the contributing guide; https://github.com/moby/moby/blob/master/docs/contributing/test.md
Further refinements on tests are part of the review process.
Project runs GolangCI-lint, CodeCov, and various other linters, as well as CodeQL checks;
Linting failures block merging of pull requests, and CodeQL warnings are reviewed and addressed where needed.
Linting failures block merging of pull requests, and project is in process of adding more linters.
Multiple maintainers are familiar with these concepts, and assisted by security teams of their employer for additional review.
Multiple maintainers are familiar with these concepts, and assisted by security teams of their employer for additional review.
Algorithms have been vetted, and older algorithms are being phased out in favour of GoLang's default set.
Using Go stdlib and golang.org/x/crypto.
Older ciphers were still supported for backward compatibility, but are not a requirement, and being phased out;
No passwords are stored by the software. "Swarm" secrets and configs are stored encrypted in the raft store; https://docs.docker.com/engine/swarm/secrets/
Using https://pkg.go.dev/crypto/rand for secure random numbers.
Using https for packages, and package repositories are signed;
Binary packages (see above) are distributed through package repositories, which provide checksums and are signed.
Security reports are handled according to the security policy. Embargo dates (if needed) are part of that process, and depend on the advisory (and possibly other projects impacted); https://github.com/moby/moby/blob/master/SECURITY.md
GitHub security scanning is enabled to prevent accidental committing of secrets into source control. CI / GitHub actions is designed to assume to be comprisable, and has no access to critical secrets.
Code is covered by at least;
See previous answer;
Code is covered by at least;
Vulnerabilities are evaluated to exclude false positives, and fixed when impacted. Lower scored vulnerabilities, or false positives may not be included in minor / patch releases if the risk of fixing doesn't outweigh addressing a false positive.
Is run on every PR, in addition to scheduled job(s);
https://github.com/moby/moby/blob/master/.github/workflows/codeql.yml#L20-L33
Project is included in oss-fuzz; https://github.com/google/oss-fuzz/tree/b28454b202924379993f5f8de21aa00162b811ed/projects/moby
Project uses Go, but also included in oss-fuzz; https://github.com/google/oss-fuzz/tree/b28454b202924379993f5f8de21aa00162b811ed/projects/moby
Fuzzing is used in relevant parts;
https://github.com/moby/moby/blob/71bd98436b79a6308daeb797ab0a20897a1c47b0/daemon/logger/jsonfilelog/fuzz_test.go#L8-L15