icon-carat-right menu search cmu-wordmark

Vessel: Advancing the DoW’s Software Ecosystem with Secure and Trustworthy Reproducible Container Builds

Created October 2023

With the Vessel tool, Carnegie Mellon University's Software Engineering Institute (SEI) aims to advance the success of the Department of War's (DoW’s) software through reproducible builds. The use of container reproducible builds has been inhibited by low awareness of reproducibility practices, builds not being reproducible, and insufficient tools to detect and address errors. In our Vessel project, we’re developing resources and tools needed to (1) increase the understanding of container reproducible-build practices, (2) create container builds that are reproducible, and (3) detect and allow for the correction of errors in reproducible builds before and after they have been built. By increasing the use and success of reproducible builds, the SEI aims to advance the DoW’s software ecosystem that, in turn, will protect the warfighter and advance national security.

Inability, Limited Knowledge, and Errors: Challenges with Reproducible Builds

Securing the container build process from malicious tampering is critical to protecting national and proprietary interests. Having reproducible container builds increases the trustworthiness of the build artifacts by providing consistent outputs and predictable behaviors.

However, there is limited awareness of container reproducible-build practices. Furthermore, even if software engineers are aware of reproducibility, builds themselves are rarely reproducible because elements of build environments often rely on external, nondeterministic factors (e.g., timestamps, filesystem file ordering, and unique ID generation).

Additionally, when builds are reproduced, failures often occur when (1) a reproducibility issue exists in a build environment (e.g., an unpinned package dependency) and (2) an external factor changes in a way that exercises that issue (e.g., an update to that package occurring between builds). The failure results in the creation of two container images that do not match (i.e., contain different files) from builds using the same container build environment (e.g., a specific Dockerfile).

A further limitation for the success of reproducible builds is that existing tools are limited in their ability to find and fix common issues. For example, Dockerfiles can be used to identify some reproducibility issues, such as nonexistent version pinning; however, they are not designed for reproducibility and so do not identify other issues (e.g., volatile input sources or timestamps).

Vessel: Advancing the DoW’s Software Ecosystem with Secure and Trustworthy Reproducible Container Builds

Tools and Resources: Making Trustworthy, Reproducible Container Builds

Because of the benefits of increased software security and advanced trustworthiness in the DoW’s software supply chain, the SEI’s Vessel project has prioritized developing cutting-edge solutions to address container reproducibility issues.

  • The first tool is the Vessel Diff tool which has been released on GitHub. It is used to compare two built container images and detect reproducibility failures by analyzing unpacked image file systems. Using this tool, developers can either verify that two container images are identical or gain detailed information on which differences exist and their probable causes.
  • The second tool is the Vessel Lint & Repair tool which developers can use to identify container build reproducibility issues in their container Dockerfiles as well as automatically repair supported issues. With this knowledge, developers can make their software more reproducible, stable, secure, and trustworthy. This tool is under review for release, and the SEI’s goal is to merge the tool with the Diff tool.
Vessel: Advancing the DoW’s Software Ecosystem with Secure and Trustworthy Reproducible Container Builds

Build Trust with Vessel

Adopting the Vessel tool can improve your organization’s software processes and push toward zero-trust. In particular, Vessel supports the following goals:

  • Assess the reproducibility of your current containers.
  • Increase the reproducibility of your container builds.
  • Secure your continuous integration pipelines against malicious tampering.

The SEI can help you improve the trust and reliability of your build processes by instantiating Vessel in your organizations and integrating it into your container build pipelines.

Learn More

Vessel: Reproducible Container Builds

Fact Sheet

This fact sheet describes the Vessel tool, which the SEI developed to detect and correct reproducibility issues in container builds.

Learn More

Vessel Tool Enhances Container Reproducibility and Security

Newsletter

This SEI Bulletin newsletter was published on December 4, 2024.

Read

Vessel Tool Enhances Container Reproducibility and Security

News Item

The open-source SEI project helps software developers identify the cause of discrepancies between container builds.

READ

Vessel: Reproducible Container Builds

Presentation

Kevin Pitstick presented this project at the CMU SEI Research Review 2024.

Learn More