prometheus / prometheus/node_exporter

Recent container images published to quay.io lack signatures

Open
#1,424 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
13.8k
Forks
2.7k
Avg merge
1d 23h
Merged PRs (30d)
8

Description

Problem Description

The recent container images for the Prometheus Node Exporter published to the quay.io registry are lacking signatures. The images for versions 0.16.0 and 0.17.0 are signed as expected by rkt, but the images for versions 0.18.0 and 0.18.1 are not signed.

It's not possible to use rkt fetch against these latter two images without employing the --insecure-options=image command-line flag.

Details

Host operating system: output of uname -a
Linux ip-10-132-114-217 4.19.50-coreos-r1 #1 SMP Mon Jul 1 19:07:03 -00 2019 x86_64 Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz GenuineIntel GNU/Linux
node_exporter version: output of node_exporter --version
node_exporter, version 0.18.1 (branch: HEAD, revision: 3db77732e925c08f675d7404a8c46466b2ece83e)
  build user:       root@b50852a1acba
  build date:       20190604-16:41:18
  go version:       go1.12.5
node_exporter command line flags

(Not applicable)

Are you running node_exporter in Docker?

No, but with rkt.

What did you do that produced an error?

rkt fetch quay.io/prometheus/node-exporter:v0.18.1

What did you expect to see?

rkt should be able to download both the image layers and an accompanying signature, as we see here when downloading the image for version 0.17.0:

% rkt --debug fetch quay.io/prometheus/node-exporter:v0.17.0
image: searching for app image quay.io/prometheus/node-exporter
image: remote fetching from URL "https://quay.io/c1/aci/quay.io/prometheus/node-exporter/v0.17.0/aci/linux/amd64/"
image: fetching image from https://quay.io/c1/aci/quay.io/prometheus/node-exporter/v0.17.0/aci/linux/amd64/
image: keys already exist for prefix "quay.io/prometheus/node-exporter", not fetching again
image: downloading signature from https://quay.io/c1/aci/quay.io/prometheus/node-exporter/v0.17.0/aci.asc/linux/amd64/
Downloading signature: [=======================================] 473 B/473 B
Downloading ACI: [=============================================] 10.5 MB/10.5 MB
image: signature verified:
  Quay.io ACI Converter (ACI conversion signing key) <support@quay.io>
sha512-8c4949449e3eabfbcd272d40e196f739
What did you see instead?

rkt is unable to download the accompanying signature, which doesn't exist for the images published for versions 0.18.0 and 0.18.1.

Version 0.18.1:

% rkt --debug fetch quay.io/prometheus/node-exporter:v0.18.1
image: searching for app image quay.io/prometheus/node-exporter
image: remote fetching from URL "https://quay.io/c1/aci/quay.io/prometheus/node-exporter/v0.18.1/aci/linux/amd64/"
image: fetching image from https://quay.io/c1/aci/quay.io/prometheus/node-exporter/v0.18.1/aci/linux/amd64/
image: keys already exist for prefix "quay.io/prometheus/node-exporter", not fetching again
image: downloading signature from https://quay.io/c1/aci/quay.io/prometheus/node-exporter/v0.18.1/aci.asc/linux/amd64/
image: server requested deferring the signature download
Downloading ACI: [=============================================] 11.7 MB/11.7 MB
image: downloading signature from https://quay.io/c1/aci/quay.io/prometheus/node-exporter/v0.18.1/aci.asc/linux/amd64/
image: server requested deferring the signature download
fetch: 
  └─error downloading the signature file: server asked to defer the download again

Version 0.18.0:

rkt --debug fetch quay.io/prometheus/node-exporter:v0.18.0
image: searching for app image quay.io/prometheus/node-exporter
image: remote fetching from URL "https://quay.io/c1/aci/quay.io/prometheus/node-exporter/v0.18.0/aci/linux/amd64/"
image: fetching image from https://quay.io/c1/aci/quay.io/prometheus/node-exporter/v0.18.0/aci/linux/amd64/
image: keys already exist for prefix "quay.io/prometheus/node-exporter", not fetching again
image: downloading signature from https://quay.io/c1/aci/quay.io/prometheus/node-exporter/v0.18.0/aci.asc/linux/amd64/
image: server requested deferring the signature download
Downloading ACI: [=============================================] 11.7 MB/11.7 MB
image: downloading signature from https://quay.io/c1/aci/quay.io/prometheus/node-exporter/v0.18.0/aci.asc/linux/amd64/
image: server requested deferring the signature download
fetch: 
  └─error downloading the signature file: server asked to defer the download again

Did the maintainers of this project decide to stop signing these images, or is this an oversight that we can correct, even if only for future images?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by comparing the quay.io tags and rkt fetch output for node-exporter versions 0.17.0, 0.18.0, and 0.18.1, including the ACI and signature URLs shown in the report. Determine whether the release process omitted signatures; done means future or corrected images provide an accompanying signature that rkt can download and verify without insecure options.

Written by the indexing model from the issue text.

Assessment

Domain
devops, release, security
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.