CVE-2024-29903
Cosign vulnerable to machine-wide denial of service via malicious artifacts
Cosign provides code signing and transparency for containers and binaries. Prior to version 2.2.4, maliciously-crafted software artifacts can cause denial of service of the machine running Cosign thereby impacting all services on the machine. The root cause is that Cosign creates slices based on the number of signatures, manifests or attestations in untrusted artifacts. As such, the untrusted artifact can control the amount of memory that Cosign allocates. The exact issue is Cosign allocates excessive memory on the lines that creates a slice of the same length as the manifests. Version 2.2.4 contains a patch for the vulnerability.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- High
- User interaction
- Required
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
4.2
Cosign vulnerable to machine-wide denial of service via malicious artifacts
Cosign provides code signing and transparency for containers and binaries. Prior to version 2.2.4, maliciously-crafted software artifacts can cause denial of service of the machine running Cosign thereby impacting all services on the machine. The root cause is that Cosign creates slices based on the number of signatures, manifests or attestations in untrusted artifacts. As such, the untrusted artifact can control the amount of memory that Cosign allocates. The exact issue is Cosign allocates excessive memory on the lines that creates a slice of the same length as the manifests. Version 2.2.4 contains a patch for the vulnerability.
- Record
CVE-2024-29903- CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:H - Weakness
- CWE-770
- Updated
- 2026-11-02
EUVDEUVD-2024-1167
4.2
Cosign provides code signing and transparency for containers and binaries. Prior to version 2.2.4, maliciously-crafted software artifacts can cause denial of service of the machine running Cosign thereby impacting all services on the machine. The root cause is that Cosign creates slices based on the number of signatures, manifests or attestations in untrusted artifacts. As such, the untrusted artifact can control the amount of memory that Cosign allocates. The exact issue is Cosign allocates excessive memory on the lines that creates a slice of the same length as the manifests. Version 2.2.4 contains a patch for the vulnerability.
- Record
EUVD-2024-1167- CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:H - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-95pr-fxf5-86gv
4.2
Cosign malicious artifacts can cause machine-wide DoS
Maliciously-crafted software artifacts can cause denial of service of the machine running Cosign, thereby impacting all services on the machine. The root cause is that Cosign creates slices based on the number of signatures, manifests or attestations in untrusted artifacts. As such, the untrusted artifact can control the amount of memory that Cosign allocates.
As an example, these lines demonstrate the problem:
This Get() method gets the manifest of the image, allocates a slice equal to the length of the layers in the manifest, loops through the layers and adds a new signature to the slice.
The exact issue is Cosign allocates excessive memory on the lines that creates a slice of the same length as the manifests.
Remediation
Update to the latest version of Cosign, where the number of attestations, signatures and manifests has been limited to a reasonable value.
Cosign PoC
In the case of this API (also referenced above):
… The first line can contain a length that is safe for the system and will not throw a runtime panic or be blocked by other safety mechanisms. For the sake of argument, let’s say that the length of m, err := s.Manifest() is the max allowed (by the machine without throwing OOM panics) manifests minus 1. When Cosign then allocates a new slice on this line: signatures := make([]oci.Signature, 0, len(m.Layers)), Cosign will allocate more memory than is available and the machine will be denied of service, causing Cosign and all other services on the machine to be unavailable.
To illustrate the issue here, we run a modified version of TestSignedImageIndex() in pkg/oci/remote:
Here, wantLayers is the number of manifests from these lines:
To test this, we want to make wantLayers high enough to not cause a memory on its own but still trigger the machine-wide OOM when a slice gets create with the same length. On my local machine, it would take hours to create a slice of layers that fulfils that criteria, so instead I modify the Cosign production code to reflect a long list of manifests:
// Get implements oci.Signatures
func (s *sigs) Get() ([]oci.Signature, error) {
m, err := s.Manifest()
if err != nil {
return nil, err
}
// Here we imitate a long list of manifests
ms := make([]byte, 2600000000) // imitate a long list of manifests
signatures := make([]oci.Signature, 0, len(ms))
panic("Done")
//signatures := make([]oci.Signature, 0, len(m.Layers))
for _, desc := range m.Layers {
With this modified code, if we can cause an OOM without triggering the panic("Done"), we have succeeded.
- Record
GHSA-95pr-fxf5-86gv- CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:H - Weakness
- CWE-770
- Updated
- 2026-11-02
NVD
4.2
Cosign provides code signing and transparency for containers and binaries. Prior to version 2.2.4, maliciously-crafted software artifacts can cause denial of service of the machine running Cosign thereby impacting all services on the machine. The root cause is that Cosign creates slices based on the number of signatures, manifests or attestations in untrusted artifacts. As such, the untrusted artifact can control the amount of memory that Cosign allocates. The exact issue is Cosign allocates excessive memory on the lines that creates a slice of the same length as the manifests. Version 2.2.4 contains a patch for the vulnerability.
- Record
CVE-2024-29903- CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:H - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-770
- Updated
- 2026-11-02
OSV
4.2
Cosign vulnerable to machine-wide denial of service via malicious artifacts
Cosign provides code signing and transparency for containers and binaries. Prior to version 2.2.4, maliciously-crafted software artifacts can cause denial of service of the machine running Cosign thereby impacting all services on the machine. The root cause is that Cosign creates slices based on the number of signatures, manifests or attestations in untrusted artifacts. As such, the untrusted artifact can control the amount of memory that Cosign allocates. The exact issue is Cosign allocates excessive memory on the lines that creates a slice of the same length as the manifests. Version 2.2.4 contains a patch for the vulnerability.
- Record
CVE-2024-29903- CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:H - Weakness
- CWE-770
- Updated
- 2026-11-02
OSVGHSA-95pr-fxf5-86gv
4.2
Cosign malicious artifacts can cause machine-wide DoS
Maliciously-crafted software artifacts can cause denial of service of the machine running Cosign, thereby impacting all services on the machine. The root cause is that Cosign creates slices based on the number of signatures, manifests or attestations in untrusted artifacts. As such, the untrusted artifact can control the amount of memory that Cosign allocates.
As an example, these lines demonstrate the problem:
This Get() method gets the manifest of the image, allocates a slice equal to the length of the layers in the manifest, loops through the layers and adds a new signature to the slice.
The exact issue is Cosign allocates excessive memory on the lines that creates a slice of the same length as the manifests.
Remediation
Update to the latest version of Cosign, where the number of attestations, signatures and manifests has been limited to a reasonable value.
Cosign PoC
In the case of this API (also referenced above):
… The first line can contain a length that is safe for the system and will not throw a runtime panic or be blocked by other safety mechanisms. For the sake of argument, let’s say that the length of m, err := s.Manifest() is the max allowed (by the machine without throwing OOM panics) manifests minus 1. When Cosign then allocates a new slice on this line: signatures := make([]oci.Signature, 0, len(m.Layers)), Cosign will allocate more memory than is available and the machine will be denied of service, causing Cosign and all other services on the machine to be unavailable.
To illustrate the issue here, we run a modified version of TestSignedImageIndex() in pkg/oci/remote:
Here, wantLayers is the number of manifests from these lines:
To test this, we want to make wantLayers high enough to not cause a memory on its own but still trigger the machine-wide OOM when a slice gets create with the same length. On my local machine, it would take hours to create a slice of layers that fulfils that criteria, so instead I modify the Cosign production code to reflect a long list of manifests:
// Get implements oci.Signatures
func (s *sigs) Get() ([]oci.Signature, error) {
m, err := s.Manifest()
if err != nil {
return nil, err
}
// Here we imitate a long list of manifests
ms := make([]byte, 2600000000) // imitate a long list of manifests
signatures := make([]oci.Signature, 0, len(ms))
panic("Done")
//signatures := make([]oci.Signature, 0, len(m.Layers))
for _, desc := range m.Layers {
With this modified code, if we can cause an OOM without triggering the panic("Done"), we have succeeded.
- Record
GHSA-95pr-fxf5-86gv- CVSS 3.1
- 4.2 Medium
CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:H - Weakness
- CWE-770
- Updated
- 2026-11-02
Show 6 moreShow less
OSVRHEA-2024:4022
7.5
Red Hat Enhancement Advisory: Red Hat OpenShift Pipelines Client tkn for 1.15.0 release
- Record
RHEA-2024:4022- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVBIT-cosign-2024-29903 No score
Cosign vulnerable to machine-wide denial of service via malicious artifacts
Cosign provides code signing and transparency for containers and binaries. Prior to version 2.2.4, maliciously-crafted software artifacts can cause denial of service of the machine running Cosign thereby impacting all services on the machine. The root cause is that Cosign creates slices based on the number of signatures, manifests or attestations in untrusted artifacts. As such, the untrusted artifact can control the amount of memory that Cosign allocates. The exact issue is Cosign allocates excessive memory on the lines that creates a slice of the same length as the manifests. Version 2.2.4 contains a patch for the vulnerability.
- Record
BIT-cosign-2024-29903- Updated
- 2026-11-02
OSVGO-2024-2719 No score
Cosign malicious artifacts can cause machine-wide DoS in github.com/sigstore/cosign
Cosign malicious artifacts can cause machine-wide DoS in github.com/sigstore/cosign
- Record
GO-2024-2719- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:13863-1 No score
cosign-2.2.4-1.1 on GA media
These are all security issues fixed in the cosign-2.2.4-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:13863-1- Updated
- 2026-11-02
OSVSUSE-SU-2024:1486-1 No score
Security update for cosign
This update for cosign fixes the following issues:
- CVE-2024-29902: Fixed denial of service on host machine via remote image with a malicious attachments (bsc#1222835)
- CVE-2024-29903: Fixed denial of service on host machine via malicious software artifacts (bsc#1222837)
Other fixes:
- Updated to 2.2.4 (jsc#SLE-23879)
- Fixes for GHSA-88jx-383q-w4qc and GHSA-95pr-fxf5-86gv (#3661)
- ErrNoSignaturesFound should be used when there is no signature attached to an image. (#3526)
- fix semgrep issues for dgryski.semgrep-go ruleset (#3541)
- Honor creation timestamp for signatures again (#3549)
- Features
- Adds Support for Fulcio Client Credentials Flow, and Argument to Set Flow Explicitly (#3578)
- Record
SUSE-SU-2024:1486-1- Updated
- 2026-11-02
OSVSUSE-SU-2024:1486-2 No score
Security update for cosign
This update for cosign fixes the following issues:
- CVE-2024-29902: Fixed denial of service on host machine via remote image with a malicious attachments (bsc#1222835)
- CVE-2024-29903: Fixed denial of service on host machine via malicious software artifacts (bsc#1222837)
Other fixes:
- Updated to 2.2.4 (jsc#SLE-23879)
- Fixes for GHSA-88jx-383q-w4qc and GHSA-95pr-fxf5-86gv (#3661)
- ErrNoSignaturesFound should be used when there is no signature attached to an image. (#3526)
- fix semgrep issues for dgryski.semgrep-go ruleset (#3541)
- Honor creation timestamp for signatures again (#3549)
- Features
- Adds Support for Fulcio Client Credentials Flow, and Argument to Set Flow Explicitly (#3578)
- Record
SUSE-SU-2024:1486-2- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
github.com/sigstore/cosignGo |
through 2.2.3 | None known |
github.com/sigstore/cosign/v2Go |
through 2.2.3 | 2.2.4 |
cosignBitnami |
before 2.2.4 | 2.2.4 |
github.com/sigstore/cosign/v2Go |
before 2.2.4 | 2.2.4 |
github.com/sigstore/cosignGo |
All versions | None known |
openshift-pipelines-clientRed Hat:openshift_pipelines:1.15::el8 |
before 0:1.15.0-11496.el8 | 0:1.15.0-11496.el8 |
openshift-pipelines-client-redistributableRed Hat:openshift_pipelines:1.15::el8 |
before 0:1.15.0-11496.el8 | 0:1.15.0-11496.el8 |
cosignSUSE:Linux Enterprise Module for Basesystem 15 SP5 |
before 2.2.4-150400.3.20.1 | 2.2.4-150400.3.20.1 |
cosignopenSUSE:Leap 15.5 |
before 2.2.4-150400.3.20.1 | 2.2.4-150400.3.20.1 |
cosignSUSE:Linux Enterprise Module for Basesystem 15 SP6 |
before 2.2.4-150400.3.20.1 | 2.2.4-150400.3.20.1 |
cosignopenSUSE:Leap 15.6 |
before 2.2.4-150400.3.20.1 | 2.2.4-150400.3.20.1 |
cosignopenSUSE:Tumbleweed |
before 2.2.4-1.1 | 2.2.4-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases, published | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2024-29903 is a medium vulnerability (CVSS 4.2) in Sigstore Cosign, published April 10, 2024. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.85%, the 58th percentile. Fixed in github.com/sigstore/cosign/v2 2.2.4.
References
github.com/sigstore/cosign/security/advisories/GHSA-95pr-fxf5-86gv
github.com/sigstore/cosign/commit/629f5f8fa672973503edde75f84dcd984637629e
github.com/sigstore/cosign/blob/14795db16417579fac0c00c11e166868d7976b61/pkg/cosign/verify.go
github.com/sigstore/cosign/blob/286a98a4a99c1b2f32f84b0d560e324100312280/pkg/oci/remote/signatures.go
github.com/sigstore/cosign/releases/tag/v2.2.4
nvd.nist.gov/vuln/detail/CVE-2024-29903
Show 38 moreShow less
github.com/advisories/GHSA-95pr-fxf5-86gv
github.com/CVEProject/cvelistV5/tree/main/cves/2024/29xxx/CVE-2024-29903.json
github.com/sigstore/cosign
access.redhat.com/errata/RHEA-2024:4022
docs.openshift.com/container-platform/4.14/cli_reference/tkn_cli/installing-tkn.html
issues.redhat.com/browse/SRVKP-3124
security.access.redhat.com/data/csaf/v2/advisories/2024/rhea-2024_4022.json
access.redhat.com/security/cve/CVE-2023-45288
bugzilla.redhat.com/show_bug.cgi?id=2268273
cve.org/CVERecord?id=CVE-2023-45288
nvd.nist.gov/vuln/detail/CVE-2023-45288
nowotarski.info/http2-continuation-flood
pkg.go.dev/vuln/GO-2024-2687
kb.cert.org/vuls/id/421644
access.redhat.com/security/cve/CVE-2024-28110
bugzilla.redhat.com/show_bug.cgi?id=2268372
cve.org/CVERecord?id=CVE-2024-28110
nvd.nist.gov/vuln/detail/CVE-2024-28110
github.com/cloudevents/sdk-go/security/advisories/GHSA-5pf6-2qwx-pxm2
access.redhat.com/security/cve/CVE-2024-28180
bugzilla.redhat.com/show_bug.cgi?id=2268854
cve.org/CVERecord?id=CVE-2024-28180
nvd.nist.gov/vuln/detail/CVE-2024-28180
github.com/go-jose/go-jose/security/advisories/GHSA-c5q2-7r4c-mv6g
access.redhat.com/security/cve/CVE-2024-29902
bugzilla.redhat.com/show_bug.cgi?id=2274508
cve.org/CVERecord?id=CVE-2024-29902
nvd.nist.gov/vuln/detail/CVE-2024-29902
github.com/sigstore/cosign/security/advisories/GHSA-88jx-383q-w4qc
access.redhat.com/security/cve/CVE-2024-29903
bugzilla.redhat.com/show_bug.cgi?id=2274504
cve.org/CVERecord?id=CVE-2024-29903
suse.com/support/update/announcement/2024/suse-su-20241486-1
bugzilla.suse.com/1222835
bugzilla.suse.com/1222837
suse.com/security/cve/CVE-2024-29902
suse.com/security/cve/CVE-2024-29903
suse.com/support/update/announcement/2024/suse-su-20241486-2