SQ41102
Detected container images that use ADD instructions.
priority | CI/CD status | severity | effort | SAFE level | SAFE assessment |
---|---|---|---|---|---|
pass | low | medium | None | None |
About the issueโ
Containers typically run in one of two modes, as executables or as services. Regardless of how they are used, they typically require one or more executable, data and configuration files, and other dependencies and environment-related files required to run the containerized application or service. The Dockerfile is a sequence of instructions that defines how an image should be built, and ADD or COPY instructions are used to include external content in an image layer. However, the ADD instruction, apart from simple copy functionality, can also fetch data from remote destinations and unpack compressed files (such as filesystem images). It's possible for remote destinations to change ownership, and become excellent targets for supply chain compromise. By separating the download phase from the inclusion phase, it introduces a way to review what has been downloaded before the image is built. The only exception here should be the inclusion of the base filesystem layer (usually the root filesystem). Otherwise, it's a better practice to use the COPY instruction, as it's more transparent, and doesn't include implicit but possibly unwanted side effects.
How to resolve the issueโ
- Inspect your Dockerfile for any ADD instructions unrelated to the base filesystem, and change them. Pay special attention to any ADD instructions that refer to remote destinations.
Incidence statisticsโ
ReversingLabs periodically collects and analyzes the contents of popular software package repositories for threat research purposes. Analysis results are used to calculate incidence statistics for issues (policy violations) that Spectra Assure can detect in software packages.
This section is updated when new data becomes available.
Total amount of packages analyzed
- RubyGems: 183K
- Nuget: 644K
- PyPi: 628K
- NPM: 3.72M
Total detections per repository
For every repository, the chart shows the number of packages that triggered the software assurance policy. In other words, it shows how many packages in each package repository were found to have the specific issue described on this page. This information helps you understand how common the issue is across different software communities.
If a repository is absent from the chart, that means none of the packages in that repository triggered this policy during analysis, or the policy was not used during analysis.
Distribution of total detections by project popularity
For every repository, the chart shows how many of the total detections belong to the Top 100 (1-100), Top 1000 (101-1000) and Top 10 000 (1001-10 000) most downloaded projects. This information helps you understand the impact of the issue within each community, making it clearer when the issue affects the most popular projects.
If the chart shows zero values for all of the top project groups, that means all detections were in unranked projects (lower than 10 000 on the list of most downloaded projects).
Recommended readingโ
- Dockerfile reference - ADD (External resource - Docker)
- Dockerfile on Windows (External resource - Microsoft)
- General best practices for writing Dockerfiles (External resource - Docker)