Skip to content

[release-5.30] Fix CVE-2024-3727#2404

Merged
mtrmac merged 6 commits intocontainers:release-5.30from
mtrmac:digest-unmarshal-5.30
May 9, 2024
Merged

[release-5.30] Fix CVE-2024-3727#2404
mtrmac merged 6 commits intocontainers:release-5.30from
mtrmac:digest-unmarshal-5.30

Conversation

@mtrmac
Copy link
Collaborator

@mtrmac mtrmac commented May 9, 2024

Digest values used throughout this library were not always validated. That allowed attackers to trigger, when pulling untrusted images, unexpected authenticated registry accesses on behalf of a victim user.

In less common uses of this library (using other transports or not using the containers/image/v5/copy.Image API), an attacker could also trigger local path traversals or crashes.

mtrmac added 6 commits May 9, 2024 16:26
If doing it makes sense at all, it should happen before
the values are used.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
... to prevent panics if the value does not contain a :, or other unexpected
values (e.g. a path traversal).

Don't bother on paths where we computed the digest ourselves, or it is already trusted
for other reasons.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
Use defer() to remove the temporary file, instead
of duplicating the call.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
Use defer, a nested function, and early returns.

Besides being a bit more directly related to what
we want to achieve, this now does not call decompressed.Close()
on a nil value if DecompressStream fails.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
... to prevent unexpected behavior on invalid values.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
Signed-off-by: Miloslav Trmač <mitr@redhat.com>
@mtrmac
Copy link
Collaborator Author

mtrmac commented May 9, 2024

This is a backport of #2403 + #2380 .

@mheon
Copy link
Member

mheon commented May 9, 2024

LGTM

@mtrmac mtrmac merged commit 132678b into containers:release-5.30 May 9, 2024
@mtrmac mtrmac deleted the digest-unmarshal-5.30 branch May 9, 2024 15:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants