Every CVE Search/ Get API key

CVE-2020-13845

Execution Control List (ECL) Is Insecure in Singularity

7.5 HighFix available

CVE-2020-13845 is a high vulnerability (CVSS 7.5) in Sylabs Singularity, published July 14, 2020. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.52%, the 44th percentile. Fixed in github.com/sylabs/singularity 3.6.0.

Sylabs Singularity 3.0 through 3.5 has Improper Validation of an Integrity Check Value. Image integrity is not validated when an ECL policy is enforced. The fingerprint required by the ECL is compared against the signature object descriptor(s) in the SIF file, rather than to a cryptographically validated signature.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
High
Availability
None

Exploit likelihood

0.52%Down 0.7 points since Apr 14, 2021
90%50%10%1%

What each source reports

NVD Score used 7.5

Sylabs Singularity 3.0 through 3.5 has Improper Validation of an Integrity Check Value. Image integrity is not validated when an ECL policy is enforced. The fingerprint required by the ECL is compared against the signature object descriptor(s) in the SIF file, rather than to a cryptographically validated signature.

Record
CVE-2020-13845
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
CVSS 2.0
5.0 MediumAV:N/AC:L/Au:N/C:N/I:P/A:N
Weakness
CWE-347, CWE-354
Updated
2026-11-02
CVE List No score

Sylabs Singularity 3.0 through 3.5 has Improper Validation of an Integrity Check Value. Image integrity is not validated when an ECL policy is enforced. The fingerprint required by the ECL is compared against the signature object descriptor(s) in the SIF file, rather than to a cryptographically validated signature.

Record
CVE-2020-13845
Updated
2026-11-02
EUVDEUVD-2021-2562 No score

Sylabs Singularity 3.0 through 3.5 has Improper Validation of an Integrity Check Value. Image integrity is not validated when an ECL policy is enforced. The fingerprint required by the ECL is compared against the signature object descriptor(s) in the SIF file, rather than to a cryptographically validated signature.

Record
EUVD-2021-2562
Updated
2026-11-03
GitHub AdvisoriesGHSA-pmfr-63c2-jr5c 7.5

Execution Control List (ECL) Is Insecure in Singularity

Impact

The Singularity Execution Control List (ECL) allows system administrators to set up a policy that defines rules about what signature(s) must be (or must not be) present on a SIF container image for it to be permitted to run.

In Singularity 3.x versions below 3.6.0, the following issues allow the ECL to be bypassed by a malicious user:

  • Image integrity is not validated when an ECL policy is enforced.
  • The fingerprint required by the ECL is compared against the signature object descriptor(s) in the SIF file, rather than to a cryptographically validated signature. Thus, it is trivial to craft an arbitrary payload which will be permitted to run, even if the attacker does not have access to the private key associated with the fingerprint(s) configured in the ECL.

Patches

These issues are addressed in Singularity 3.6.0.

All users are advised to upgrade to 3.6.0. Note that Singularity 3.6.0 uses a new signature format that is necessarily incompatible with Singularity < 3.6.0 - e.g. Singularity 3.5.3 cannot verify containers signed by 3.6.0.

Version 3.6.0 includes a legacyinsecure option that can be set to legacyinsecure = true in ecl.toml to allow the ECL to perform verification of the older, and insecure, legacy signatures for compatibility with existing containers. This does not guarantee that containers have not been modified since signing, due to other issues in the legacy signature format. The option should be used only to temporarily ease the transition to containers signed with the new 3.6.0 signature format.

Workarounds

This issue affects any installation of Singularity configured to use the Execution Control List (ECL) functionality. There is no workaround if ECL is required.

For more information

General questions about the impact of the advisory / changes made in the 3.6.0 release can be asked in the:

Any sensitive security concerns should be directed to: [email protected]

See our Security Policy here: https://sylabs.io/security-policy

Record
GHSA-pmfr-63c2-jr5c
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Weakness
CWE-347, CWE-354
Updated
2026-11-02
OSVALPINE-CVE-2020-13845 7.5

Sylabs Singularity 3.0 through 3.5 has Improper Validation of an Integrity Check Value. Image integrity is not validated when an ECL policy is enforced. The fingerprint required by the ECL is compared against the signature object descriptor(s) in the SIF file, rather than to a cryptographically validated signature.

Record
ALPINE-CVE-2020-13845
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Updated
2026-11-03
OSV 7.5

Sylabs Singularity 3.0 through 3.5 has Improper Validation of an Integrity Check Value. Image integrity is not validated when an ECL policy is enforced. The fingerprint required by the ECL is compared against the signature object descriptor(s) in the SIF file, rather than to a cryptographically validated signature.

Record
CVE-2020-13845
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Updated
2026-11-02
Show 6 moreShow less
OSVGHSA-pmfr-63c2-jr5c 7.5

Execution Control List (ECL) Is Insecure in Singularity

Impact

The Singularity Execution Control List (ECL) allows system administrators to set up a policy that defines rules about what signature(s) must be (or must not be) present on a SIF container image for it to be permitted to run.

In Singularity 3.x versions below 3.6.0, the following issues allow the ECL to be bypassed by a malicious user:

  • Image integrity is not validated when an ECL policy is enforced.
  • The fingerprint required by the ECL is compared against the signature object descriptor(s) in the SIF file, rather than to a cryptographically validated signature. Thus, it is trivial to craft an arbitrary payload which will be permitted to run, even if the attacker does not have access to the private key associated with the fingerprint(s) configured in the ECL.

Patches

These issues are addressed in Singularity 3.6.0.

All users are advised to upgrade to 3.6.0. Note that Singularity 3.6.0 uses a new signature format that is necessarily incompatible with Singularity < 3.6.0 - e.g. Singularity 3.5.3 cannot verify containers signed by 3.6.0.

Version 3.6.0 includes a legacyinsecure option that can be set to legacyinsecure = true in ecl.toml to allow the ECL to perform verification of the older, and insecure, legacy signatures for compatibility with existing containers. This does not guarantee that containers have not been modified since signing, due to other issues in the legacy signature format. The option should be used only to temporarily ease the transition to containers signed with the new 3.6.0 signature format.

Workarounds

This issue affects any installation of Singularity configured to use the Execution Control List (ECL) functionality. There is no workaround if ECL is required.

For more information

General questions about the impact of the advisory / changes made in the 3.6.0 release can be asked in the:

Any sensitive security concerns should be directed to: [email protected]

See our Security Policy here: https://sylabs.io/security-policy

Record
GHSA-pmfr-63c2-jr5c
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Weakness
CWE-347, CWE-354
Updated
2026-11-02
OSVUBUNTU-CVE-2020-13845 7.5

Sylabs Singularity 3.0 through 3.5 has Improper Validation of an Integrity Check Value. Image integrity is not validated when an ECL policy is enforced. The fingerprint required by the ECL is compared against the signature object descriptor(s) in the SIF file, rather than to a cryptographically validated signature.

Record
UBUNTU-CVE-2020-13845
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Updated
2026-11-02
OSVopenSUSE-SU-2020:1011-1 No score

Security update for singularity

This update for singularity fixes the following issues:

  • New version 3.6.0. This version introduces a new signature format for SIF images, and changes to the signing / verification code to address the following security problems:

    • CVE-2020-13845, boo#1174150 In Singularity 3.x versions below 3.6.0, issues allow the ECL to be bypassed by a malicious user.
    • CVE-2020-13846, boo#1174148 In Singularity 3.5 the --all / -a option to singularity verify returns success even when some objects in a SIF container are not signed, or cannot be verified.
    • CVE-2020-13847, boo#1174152 In Singularity 3.x versions below 3.6.0, Singularity's sign and verify commands do not sign metadata found in the global header or data object descriptors of a SIF file, allowing an attacker to cause unexpected behavior. A signed container may verify successfully, even when it has been modified in ways that could be exploited to cause malicious behavior.
  • New features / functionalities

    • A new '--legacy-insecure' flag to verify allows verification of SIF signatures in the old, insecure format.
    • A new '-l / --logs' flag for instance list that shows the paths to instance STDERR / STDOUT log files.
    • The --json output of instance list now include paths to STDERR / STDOUT log files.
    • Singularity now supports the execution of minimal Docker/OCI containers that do not contain /bin/sh, e.g. docker://hello-world.
    • A new cache structure is used that is concurrency safe on a filesystem that supports atomic rename. If you downgrade to Singularity 3.5 or older after using 3.6 you will need to run singularity cache clean.
    • A plugin system rework adds new hook points that will allow the development of plugins that modify behavior of the runtime. An image driver concept is introduced for plugins to support new ways of handling image and overlay mounts. Plugins built for <=3.5 are not compatible with 3.6.
    • The --bind flag can now bind directories from a SIF or ext3 image into a container.
    • The --fusemount feature to mount filesystems to a container via FUSE drivers is now a supported feature (previously an experimental hidden flag).
    • This permits users to mount e.g. sshfs and cvmfs filesystems to the container at runtime.
    • A new -c/--config flag allows an alternative singularity.conf to be specified by the root user, or all users in an unprivileged installation.
    • A new --env flag allows container environment variables to be set via the Singularity command line.
    • A new --env-file flag allows container environment variables to be set from a specified file.
    • A new --days flag for cache clean allows removal of items older than a specified number of days. Replaces the --name flag which is not generally useful as the cache entries are stored by hash, not a friendly name.
  • Changed defaults / behaviours

  • New signature format (see security fixes above).

  • Fixed spacing of singularity instance list to be dynamically changing based off of input lengths instead of fixed number of spaces to account for long instance names.

  • Environment variables prefixed with SINGULARITYENV_ always take precedence over variables without SINGULARITYENV_ prefix.

  • The %post build section inherits environment variables from the base image.

  • %files from ... will now follow symlinks for sources that are directly specified, or directly resolved from a glob pattern. It will not follow symlinks found through directory traversal. This mirrors Docker multi-stage COPY behaviour.

  • Restored the CWD mount behaviour of v2, implying that CWD path is not recreated inside container and any symlinks in the CWD path are not resolved anymore to determine the destination path inside container.

  • The %test build section is executed the same manner as singularity test image. --fusemount with the container: default directive will foreground the FUSE process. Use container-daemon: for previous…

Record
openSUSE-SU-2020:1011-1
Updated
2026-11-02
OSVopenSUSE-SU-2020:1037-1 No score

Security update for singularity

This update for singularity fixes the following issues:

  • New version 3.6.0. This version introduces a new signature format for SIF images, and changes to the signing / verification code to address the following security problems:

    • CVE-2020-13845, boo#1174150 In Singularity 3.x versions below 3.6.0, issues allow the ECL to be bypassed by a malicious user.
    • CVE-2020-13846, boo#1174148 In Singularity 3.5 the --all / -a option to singularity verify returns success even when some objects in a SIF container are not signed, or cannot be verified.
    • CVE-2020-13847, boo#1174152 In Singularity 3.x versions below 3.6.0, Singularity's sign and verify commands do not sign metadata found in the global header or data object descriptors of a SIF file, allowing an attacker to cause unexpected behavior. A signed container may verify successfully, even when it has been modified in ways that could be exploited to cause malicious behavior.
  • New features / functionalities

    • A new '--legacy-insecure' flag to verify allows verification of SIF signatures in the old, insecure format.
    • A new '-l / --logs' flag for instance list that shows the paths to instance STDERR / STDOUT log files.
    • The --json output of instance list now include paths to STDERR / STDOUT log files.
    • Singularity now supports the execution of minimal Docker/OCI containers that do not contain /bin/sh, e.g. docker://hello-world.
    • A new cache structure is used that is concurrency safe on a filesystem that supports atomic rename. If you downgrade to Singularity 3.5 or older after using 3.6 you will need to run singularity cache clean.
    • A plugin system rework adds new hook points that will allow the development of plugins that modify behavior of the runtime. An image driver concept is introduced for plugins to support new ways of handling image and overlay mounts. Plugins built for <=3.5 are not compatible with 3.6.
    • The --bind flag can now bind directories from a SIF or ext3 image into a container.
    • The --fusemount feature to mount filesystems to a container via FUSE drivers is now a supported feature (previously an experimental hidden flag).
    • This permits users to mount e.g. sshfs and cvmfs filesystems to the container at runtime.
    • A new -c/--config flag allows an alternative singularity.conf to be specified by the root user, or all users in an unprivileged installation.
    • A new --env flag allows container environment variables to be set via the Singularity command line.
    • A new --env-file flag allows container environment variables to be set from a specified file.
    • A new --days flag for cache clean allows removal of items older than a specified number of days. Replaces the --name flag which is not generally useful as the cache entries are stored by hash, not a friendly name.
  • Changed defaults / behaviours

  • New signature format (see security fixes above).

  • Fixed spacing of singularity instance list to be dynamically changing based off of input lengths instead of fixed number of spaces to account for long instance names.

  • Environment variables prefixed with SINGULARITYENV_ always take precedence over variables without SINGULARITYENV_ prefix.

  • The %post build section inherits environment variables from the base image.

  • %files from ... will now follow symlinks for sources that are directly specified, or directly resolved from a glob pattern. It will not follow symlinks found through directory traversal. This mirrors Docker multi-stage COPY behaviour.

  • Restored the CWD mount behaviour of v2, implying that CWD path is not recreated inside container and any symlinks in the CWD path are not resolved anymore to determine the destination path inside container.

  • The %test build section is executed the same manner as singularity test image. --fusemount with the container: default directive will foreground the FUSE process. Use container-daemon: for previous…

Record
openSUSE-SU-2020:1037-1
Updated
2026-11-02
OSVopenSUSE-SU-2020:1100-1 No score

Security update for singularity

This update for singularity fixes the following issues:

  • New version 3.6.0. This version introduces a new signature format for SIF images, and changes to the signing / verification code to address the following security problems:

    • CVE-2020-13845, boo#1174150 In Singularity 3.x versions below 3.6.0, issues allow the ECL to be bypassed by a malicious user.
    • CVE-2020-13846, boo#1174148 In Singularity 3.5 the --all / -a option to singularity verify returns success even when some objects in a SIF container are not signed, or cannot be verified.
    • CVE-2020-13847, boo#1174152 In Singularity 3.x versions below 3.6.0, Singularity's sign and verify commands do not sign metadata found in the global header or data object descriptors of a SIF file, allowing an attacker to cause unexpected behavior. A signed container may verify successfully, even when it has been modified in ways that could be exploited to cause malicious behavior.
  • New features / functionalities

    • A new '--legacy-insecure' flag to verify allows verification of SIF signatures in the old, insecure format.
    • A new '-l / --logs' flag for instance list that shows the paths to instance STDERR / STDOUT log files.
    • The --json output of instance list now include paths to STDERR / STDOUT log files.
    • Singularity now supports the execution of minimal Docker/OCI containers that do not contain /bin/sh, e.g. docker://hello-world.
    • A new cache structure is used that is concurrency safe on a filesystem that supports atomic rename. If you downgrade to Singularity 3.5 or older after using 3.6 you will need to run singularity cache clean.
    • A plugin system rework adds new hook points that will allow the development of plugins that modify behavior of the runtime. An image driver concept is introduced for plugins to support new ways of handling image and overlay mounts. Plugins built for <=3.5 are not compatible with 3.6.
    • The --bind flag can now bind directories from a SIF or ext3 image into a container.
    • The --fusemount feature to mount filesystems to a container via FUSE drivers is now a supported feature (previously an experimental hidden flag).
    • This permits users to mount e.g. sshfs and cvmfs filesystems to the container at runtime.
    • A new -c/--config flag allows an alternative singularity.conf to be specified by the root user, or all users in an unprivileged installation.
    • A new --env flag allows container environment variables to be set via the Singularity command line.
    • A new --env-file flag allows container environment variables to be set from a specified file.
    • A new --days flag for cache clean allows removal of items older than a specified number of days. Replaces the --name flag which is not generally useful as the cache entries are stored by hash, not a friendly name.
  • Changed defaults / behaviours

  • New signature format (see security fixes above).

  • Fixed spacing of singularity instance list to be dynamically changing based off of input lengths instead of fixed number of spaces to account for long instance names.

  • Environment variables prefixed with SINGULARITYENV_ always take precedence over variables without SINGULARITYENV_ prefix.

  • The %post build section inherits environment variables from the base image.

  • %files from ... will now follow symlinks for sources that are directly specified, or directly resolved from a glob pattern. It will not follow symlinks found through directory traversal. This mirrors Docker multi-stage COPY behaviour.

  • Restored the CWD mount behaviour of v2, implying that CWD path is not recreated inside container and any symlinks in the CWD path are not resolved anymore to determine the destination path inside container.

  • The %test build section is executed the same manner as singularity test image. --fusemount with the container: default directive will foreground the FUSE process. Use container-daemon: for previous…

Record
openSUSE-SU-2020:1100-1
Updated
2026-11-02
OSVopenSUSE-SU-2024:11384-1 No score

singularity-3.8.3-1.2 on GA media

These are all security issues fixed in the singularity-3.8.3-1.2 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2024:11384-1
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
github.com/sylabs/singularity
Go
3.0.0 up to 3.6.0
3.6.0
singularity
Alpine:v3.19
3.0.0 up to 3.6.0-r0
3.6.0-r0
singularity
Alpine:v3.20
3.0.0 up to 3.6.0-r0
3.6.0-r0
singularity
Alpine:v3.21
3.0.0 up to 3.6.0-r0
3.6.0-r0
singularity
Alpine:v3.22
3.0.0 up to 3.6.0-r0
3.6.0-r0
singularity
Alpine:v3.23
3.0.0 up to 3.6.0-r0
3.6.0-r0
singularity
Alpine:v3.24
3.0.0 up to 3.6.0-r0
3.6.0-r0
singularity-container
Ubuntu:Pro:18.04:LTS
All versions, plus listed versions
2.3.1-22.3.2-12.4.1-12.4.2-22.4.2-32.4.2-42.4.2-4ubuntu0.1~esm1
None known
singularity-container
Ubuntu:Pro:24.04:LTS
All versions, plus listed versions
4.1.1+ds2-14.1.1+ds2-1build14.1.1+ds2-1ubuntu0.14.1.1+ds2-1ubuntu0.24.1.1+ds2-1ubuntu0.2+esm14.1.1+ds2-1ubuntu0.34.1.1+ds2-1ubuntu0.3+esm14.1.1+ds2-1ubuntu0.3+esm2
None known
singularity-container
Ubuntu:25.10
All versions, plus listed versions
4.1.5+ds4-1
None known
Show 5 moreShow less
Affected packages
PackageAffectedFixed
singularity-container
Ubuntu:26.04:LTS
All versions, plus listed versions
4.1.5+ds4-1
None known
singularity
openSUSE:Leap 15.2
before 3.6.0-lp152.2.3.1
3.6.0-lp152.2.3.1
singularity
openSUSE:Leap 15.1
before 3.6.0-lp151.2.6.1
3.6.0-lp151.2.6.1
singularity
SUSE:Package Hub 15 SP2
before 3.6.0-bp152.2.4.1
3.6.0-bp152.2.4.1
singularity
openSUSE:Tumbleweed
before 3.8.3-1.2
3.8.3-1.2

History

History
WhenChangedSources
2026-11-03affected, aliases, referencesOSV
2026-11-03aliasesEUVD
2026-11-02createdCVE List, GitHub Advisories, NVD, OSV

References

Show 25 moreShow less
This page doesn't list everything

Left out here: the rest of 3 source descriptions. The JSON record has them.

MoveEnter Open