Skip to content

Commit d12ef12

Browse files
committed
fix: Only accept signed metadata uniget-org/backlog#97
1 parent af8af04 commit d12ef12

4 files changed

Lines changed: 418 additions & 0 deletions

File tree

cmd/uniget/update.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"gitlab.com/uniget-org/cli/pkg/archive"
1515
"gitlab.com/uniget-org/cli/pkg/containers"
1616
"gitlab.com/uniget-org/cli/pkg/logging"
17+
"gitlab.com/uniget-org/cli/pkg/security"
1718
"gitlab.com/uniget-org/cli/pkg/tool"
1819
)
1920

@@ -118,6 +119,19 @@ func downloadMetadata() error {
118119

119120
func loadMetadata() error {
120121
var err error
122+
123+
_, err = security.VerifySigstoreBundle(
124+
viper.GetString("prefix")+"/"+metadataFile,
125+
viper.GetString("prefix")+"/"+metadataFile+".sigstore.json",
126+
"https://token.actions.githubusercontent.com",
127+
"",
128+
"",
129+
"https://github\\.com/uniget-org/tools/\\.github/workflows/[^.]+\\.yml@refs/heads/main",
130+
)
131+
if err != nil {
132+
return fmt.Errorf("error verifying sigstore bundle for metadata: %s", err)
133+
}
134+
121135
tools, err = tool.LoadFromFile(viper.GetString("prefix") + "/" + metadataFile)
122136
if err != nil {
123137
return fmt.Errorf("failed to load metadata from file %s: %s", viper.GetString("prefix")+"/"+metadataFile, err)

go.mod

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ require (
2222
github.com/opencontainers/go-digest v1.0.0
2323
github.com/pterm/pterm v0.12.83
2424
github.com/regclient/regclient v0.11.3
25+
github.com/sigstore/sigstore-go v1.1.4
2526
github.com/spf13/cobra v1.10.2
2627
github.com/spf13/pflag v1.0.10
2728
github.com/spf13/viper v1.21.0
29+
github.com/theupdateframework/go-tuf/v2 v2.4.1
2830
go.yaml.in/yaml/v3 v3.0.4
2931
golang.org/x/sys v0.43.0
3032
k8s.io/api v0.36.0
@@ -39,10 +41,12 @@ require (
3941
github.com/Microsoft/go-winio v0.6.3-0.20251027160822-ad3df93bed29 // indirect
4042
github.com/Microsoft/hcsshim v0.15.0-rc.1 // indirect
4143
github.com/alecthomas/chroma/v2 v2.24.1 // indirect
44+
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
4245
github.com/atotto/clipboard v0.1.4 // indirect
4346
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
4447
github.com/aymerick/douceur v0.2.0 // indirect
4548
github.com/beorn7/perks v1.0.1 // indirect
49+
github.com/blang/semver v3.5.1+incompatible // indirect
4650
github.com/bshuster-repo/logrus-logstash-hook v1.1.0 // indirect
4751
github.com/catppuccin/go v0.3.0 // indirect
4852
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
@@ -69,6 +73,9 @@ require (
6973
github.com/containerd/ttrpc v1.2.8 // indirect
7074
github.com/containerd/typeurl/v2 v2.2.3 // indirect
7175
github.com/coreos/go-systemd/v22 v22.7.0 // indirect
76+
github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 // indirect
77+
github.com/digitorus/pkcs7 v0.0.0-20230818184609-3a137a874352 // indirect
78+
github.com/digitorus/timestamp v0.0.0-20231217203849-220c5c2851b7 // indirect
7279
github.com/distribution/reference v0.6.0 // indirect
7380
github.com/dlclark/regexp2 v1.12.0 // indirect
7481
github.com/docker/docker-credential-helpers v0.9.6 // indirect
@@ -84,9 +91,32 @@ require (
8491
github.com/fxamacker/cbor/v2 v2.9.2 // indirect
8592
github.com/go-logr/logr v1.4.3 // indirect
8693
github.com/go-logr/stdr v1.2.2 // indirect
94+
github.com/go-openapi/analysis v0.24.3 // indirect
95+
github.com/go-openapi/errors v0.22.7 // indirect
96+
github.com/go-openapi/jsonpointer v0.22.5 // indirect
97+
github.com/go-openapi/jsonreference v0.21.5 // indirect
98+
github.com/go-openapi/loads v0.23.3 // indirect
99+
github.com/go-openapi/runtime v0.29.2 // indirect
100+
github.com/go-openapi/spec v0.22.4 // indirect
101+
github.com/go-openapi/strfmt v0.26.1 // indirect
102+
github.com/go-openapi/swag v0.25.4 // indirect
103+
github.com/go-openapi/swag/cmdutils v0.25.4 // indirect
104+
github.com/go-openapi/swag/conv v0.25.5 // indirect
105+
github.com/go-openapi/swag/fileutils v0.25.5 // indirect
106+
github.com/go-openapi/swag/jsonname v0.25.5 // indirect
107+
github.com/go-openapi/swag/jsonutils v0.25.5 // indirect
108+
github.com/go-openapi/swag/loading v0.25.5 // indirect
109+
github.com/go-openapi/swag/mangling v0.25.5 // indirect
110+
github.com/go-openapi/swag/netutils v0.25.4 // indirect
111+
github.com/go-openapi/swag/stringutils v0.25.5 // indirect
112+
github.com/go-openapi/swag/typeutils v0.25.5 // indirect
113+
github.com/go-openapi/swag/yamlutils v0.25.5 // indirect
114+
github.com/go-openapi/validate v0.25.2 // indirect
87115
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
88116
github.com/gogo/protobuf v1.3.2 // indirect
89117
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
118+
github.com/google/certificate-transparency-go v1.3.2 // indirect
119+
github.com/google/go-containerregistry v0.20.7 // indirect
90120
github.com/google/uuid v1.6.0 // indirect
91121
github.com/gookit/color v1.6.1 // indirect
92122
github.com/gorilla/css v1.0.1 // indirect
@@ -95,6 +125,8 @@ require (
95125
github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect
96126
github.com/hashicorp/golang-lru/arc/v2 v2.0.7 // indirect
97127
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
128+
github.com/in-toto/attestation v1.1.2 // indirect
129+
github.com/in-toto/in-toto-golang v0.10.0 // indirect
98130
github.com/inconshreveable/mousetrap v1.1.0 // indirect
99131
github.com/json-iterator/go v1.1.12 // indirect
100132
github.com/klauspost/compress v1.18.6 // indirect
@@ -123,6 +155,7 @@ require (
123155
github.com/muesli/reflow v0.3.0 // indirect
124156
github.com/muesli/termenv v0.16.0 // indirect
125157
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
158+
github.com/oklog/ulid/v2 v2.1.1 // indirect
126159
github.com/opencontainers/image-spec v1.1.1 // indirect
127160
github.com/opencontainers/runtime-spec v1.3.0 // indirect
128161
github.com/pelletier/go-toml/v2 v2.3.1 // indirect
@@ -139,11 +172,20 @@ require (
139172
github.com/rivo/uniseg v0.4.7 // indirect
140173
github.com/sagikazarmark/locafero v0.12.0 // indirect
141174
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect
175+
github.com/secure-systems-lab/go-securesystemslib v0.10.0 // indirect
142176
github.com/sergi/go-diff v1.4.0 // indirect
177+
github.com/shibumi/go-pathspec v1.3.0 // indirect
178+
github.com/sigstore/protobuf-specs v0.5.0 // indirect
179+
github.com/sigstore/rekor v1.5.0 // indirect
180+
github.com/sigstore/rekor-tiles/v2 v2.0.1 // indirect
181+
github.com/sigstore/sigstore v1.10.4 // indirect
182+
github.com/sigstore/timestamp-authority/v2 v2.0.3 // indirect
143183
github.com/sirupsen/logrus v1.9.4 // indirect
144184
github.com/spf13/afero v1.15.0 // indirect
145185
github.com/spf13/cast v1.10.0 // indirect
146186
github.com/subosito/gotenv v1.6.0 // indirect
187+
github.com/transparency-dev/formats v0.0.0-20251017110053-404c0d5b696c // indirect
188+
github.com/transparency-dev/merkle v0.0.2 // indirect
147189
github.com/ulikunitz/xz v0.5.15 // indirect
148190
github.com/x448/float16 v0.8.4 // indirect
149191
github.com/xhit/go-str2duration/v2 v2.1.0 // indirect
@@ -178,6 +220,7 @@ require (
178220
go.yaml.in/yaml/v2 v2.4.4 // indirect
179221
go.yaml.in/yaml/v4 v4.0.0-rc.4 // indirect
180222
golang.org/x/crypto v0.50.0 // indirect
223+
golang.org/x/mod v0.35.0 // indirect
181224
golang.org/x/net v0.53.0 // indirect
182225
golang.org/x/sync v0.20.0 // indirect
183226
golang.org/x/term v0.42.0 // indirect

0 commit comments

Comments
 (0)