Skip to content

containerdstore: Initial push support#2

Merged
vvoland merged 3 commits into
rumpl:containerd-storefrom
vvoland:containerd-store
Jun 23, 2022
Merged

containerdstore: Initial push support#2
vvoland merged 3 commits into
rumpl:containerd-storefrom
vvoland:containerd-store

Conversation

@vvoland
Copy link
Copy Markdown
Collaborator

@vvoland vvoland commented Jun 15, 2022

kNote: With the current containerd's pull behaviour the object that get
tagged as the pulled tag is not an image manifest but manifest list.
This means that doing:

docker pull docker.io/library/ubuntu:latest
docker tag docker.io/library/ubuntu:latest newrepo/ubuntu:latest
docker push newrepo/ubuntu:latest

Will result in an error, because the pull downloads only the default
platform and the newrepo/ubuntu:latest is a manifest list that
references all original image's platforms - and those cannot be pushed
to a remote because the pusher doesn't have them.

This will will work in case of single-platform manifest lists or if you
pull the manifest list along with all the platforms via ctr:

ctr --address /run/docker/containerd/containerd.sock -n moby \
    image pull --all-platforms docker.io/library/ubuntu:latest
docker push newrepo/ubuntu:latest

Signed-off-by: Paweł Gronowski pawel.gronowski@docker.com

- What I did

- How I did it

- How to verify it

- Description for the changelog

- A picture of a cute animal (not mandatory but encouraged)

vvoland added 3 commits June 23, 2022 15:04
Note: With the current containerd's pull behaviour the object that get
tagged as the pulled tag is not an image manifest but manifest list.
This means that doing:
```
docker pull docker.io/library/ubuntu:latest
docker tag docker.io/library/ubuntu:latest newrepo/ubuntu:latest
docker push newrepo/ubuntu:latest
```

Will result in an error, because the pull downloads only the default
platform and the newrepo/ubuntu:latest is a manifest list that
references all original image's platforms - and those cannot be pushed
to a remote because the pusher doesn't have them.

This will will work in case of single-platform manifest lists or if you
pull the manifest list along with all the platforms via ctr:
```
ctr --address /run/docker/containerd/containerd.sock -n moby \
    image pull --all-platforms docker.io/library/ubuntu:latest
docker push newrepo/ubuntu:latest
```

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
For now this deletes all images and doesn't respect any filters

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
@vvoland vvoland force-pushed the containerd-store branch from 56b4d1a to 7c1efda Compare June 23, 2022 15:03
@vvoland vvoland merged commit 7c1efda into rumpl:containerd-store Jun 23, 2022
@thaJeztah
Copy link
Copy Markdown
Collaborator

thaJeztah commented Sep 1, 2022

When upstreaming:

combine with one or more of;

rumpl pushed a commit that referenced this pull request Jun 25, 2024
…f v1.5.4

full diffs:

- protocolbuffers/protobuf-go@v1.31.0...v1.33.0
- golang/protobuf@v1.5.3...v1.5.4

From the Go security announcement list;

> Version v1.33.0 of the google.golang.org/protobuf module fixes a bug in
> the google.golang.org/protobuf/encoding/protojson package which could cause
> the Unmarshal function to enter an infinite loop when handling some invalid
> inputs.
>
> This condition could only occur when unmarshaling into a message which contains
> a google.protobuf.Any value, or when the UnmarshalOptions.UnmarshalUnknown
> option is set. Unmarshal now correctly returns an error when handling these
> inputs.
>
> This is CVE-2024-24786.

In a follow-up post;

> A small correction: This vulnerability applies when the UnmarshalOptions.DiscardUnknown
> option is set (as well as when unmarshaling into any message which contains a
> google.protobuf.Any). There is no UnmarshalUnknown option.
>
> In addition, version 1.33.0 of google.golang.org/protobuf inadvertently
> introduced an incompatibility with the older github.com/golang/protobuf
> module. (golang/protobuf#1596) Users of the older
> module should update to github.com/golang/protobuf@v1.5.4.

govulncheck results in our code:

    govulncheck ./...
    Scanning your code and 1221 packages across 204 dependent modules for known vulnerabilities...

    === Symbol Results ===

    Vulnerability #1: GO-2024-2611
        Infinite loop in JSON unmarshaling in google.golang.org/protobuf
      More info: https://pkg.go.dev/vuln/GO-2024-2611
      Module: google.golang.org/protobuf
        Found in: google.golang.org/protobuf@v1.31.0
        Fixed in: google.golang.org/protobuf@v1.33.0
        Example traces found:
          #1: daemon/logger/gcplogs/gcplogging.go:154:18: gcplogs.New calls logging.Client.Ping, which eventually calls json.Decoder.Peek
          #2: daemon/logger/gcplogs/gcplogging.go:154:18: gcplogs.New calls logging.Client.Ping, which eventually calls json.Decoder.Read
          #3: daemon/logger/gcplogs/gcplogging.go:154:18: gcplogs.New calls logging.Client.Ping, which eventually calls protojson.Unmarshal

    Your code is affected by 1 vulnerability from 1 module.
    This scan found no other vulnerabilities in packages you import or modules you
    require.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants