Skip to content

Commit c140ece

Browse files
committed
merge main
1 parent 9d759d0 commit c140ece

5 files changed

Lines changed: 40 additions & 15 deletions

File tree

.github/workflows/release-docker-image.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,14 @@ on:
4545

4646
jobs:
4747
Image:
48+
permissions:
49+
contents: write
50+
packages: write
51+
security-events: write
52+
pull-requests: write
53+
id-token: write
54+
attestations: write
55+
artifact-metadata: write
4856
uses: IABTechLab/uid2-shared-actions/.github/workflows/shared-publish-java-to-docker-versioned.yaml@v3
4957
with:
5058
release_type: ${{ inputs.release_type }}

.trivyignore

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,15 @@
22
# See https://aquasecurity.github.io/trivy/v0.35/docs/vulnerability/examples/filter/
33
# for more details
44

5-
# gnutls DoS vulnerability via crafted ClientHello - not impactful as gnutls is not used by our Java service
6-
# See: UID2-6655
7-
CVE-2026-1584 exp:2026-08-27
8-
95
# jackson-core async parser DoS - not exploitable, services only use synchronous ObjectMapper API
106
# See: UID2-6670
117
GHSA-72hv-8253-57qq exp:2026-09-01
128

13-
# libexpat NULL pointer dereference in Alpine base image - not exploitable, our Java services do not use libexpat
14-
# Fixed in libexpat 2.7.5, not yet available in eclipse-temurin Alpine 3.23 base image
15-
# See: UID2-6806
16-
CVE-2026-32776 exp:2026-04-25
17-
18-
# Trivy reports CVE-2026-32776 with transposed digits (32767 instead of 32776) - this is a known Trivy bug
19-
# See: https://github.com/aquasecurity/trivy/discussions/10412 and UID2-6806
20-
# This entry can be removed once Trivy fixes the typo
21-
CVE-2026-32767 exp:2026-04-25
9+
# CVE-2026-42577 — netty-transport-native-epoll DoS via RST on half-closed TCP connection.
10+
# Advisory: https://github.com/netty/netty/security/advisories/GHSA-rwm7-x88c-3g2p
11+
# Server-side bug; netty maintainers backported the fix only to 4.2.13.Final and we run on
12+
# vert.x 4 / netty 4.1.x. This service sits behind authenticated load balancers (mTLS / API
13+
# gateway) so anonymous external attackers cannot reach the netty epoll socket directly;
14+
# LB-level connection limits and idle timeouts further cap the blast radius. CVSS impact is
15+
# Availability only (C:N/I:N/A:H). Tracking via UID2-7035; revisit on vert.x 5 migration.
16+
CVE-2026-42577 exp:2026-06-08

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ COPY ./target/${JAR_NAME}-${JAR_VERSION}-sources.jar /app
1616
COPY ./conf/default-config.json /app/conf/
1717
COPY ./conf/*.xml /app/conf/
1818

19-
RUN apk add --no-cache --upgrade libpng libcrypto3 libssl3 musl musl-utils && adduser -D uid2-core && mkdir -p /app && chmod 705 -R /app && mkdir -p /app/file-uploads && chmod 777 -R /app/file-uploads && mkdir -p /app/pod_terminating && chmod 777 -R /app/pod_terminating
19+
RUN apk add --no-cache --upgrade libpng libcrypto3 libssl3 musl musl-utils gnutls && adduser -D uid2-core && mkdir -p /app && chmod 705 -R /app && mkdir -p /app/file-uploads && chmod 777 -R /app/file-uploads && mkdir -p /app/pod_terminating && chmod 777 -R /app/pod_terminating
2020
USER uid2-core
2121

2222
CMD java \

README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,25 @@ mvn clean compile exec:java -Dvertex-configpath=conf/local-config.json
3737
```
3838
mvn clean compile exec:java -Dvertx-config-path=conf/integ-config.json
3939
```
40+
41+
## Verifying image provenance
42+
43+
Every non-snapshot image published by this repo's release workflow ships with a [SLSA v1.0](https://slsa.dev/spec/v1.0/) build-provenance attestation, signed by GitHub's [Sigstore](https://www.sigstore.dev/) instance via the OIDC identity of the [shared publish workflow](https://github.com/IABTechLab/uid2-shared-actions). The attestation cryptographically binds the image digest to the source commit, the signing workflow, and the runner that built it.
44+
45+
To verify an image, install [`gh`](https://cli.github.com/) (≥ 2.49) and run:
46+
47+
```bash
48+
gh attestation verify oci://ghcr.io/iabtechlab/uid2-core:<tag> --owner IABTechLab --signer-repo IABTechLab/uid2-shared-actions
49+
```
50+
51+
`<tag>` refers to the **Docker image tag** — bare semantic version, no `v` prefix (e.g. `2.30.120`). Note that the corresponding GitHub release and git tag for the same build are named with a `v` (e.g. `v2.30.120`); the registry tag drops it by OCI convention.
52+
53+
**Where to find a tag:**
54+
55+
- **GitHub Packages** for this repo — [`uid2-core` package](https://github.com/IABTechLab/uid2-core/pkgs/container/uid2-core) lists every published image tag and its digest.
56+
- Or take a [release](https://github.com/IABTechLab/uid2-core/releases) name (e.g. `v2.30.120`) and drop the leading `v`.
57+
- To pin to an exact manifest instead of a mutable tag, use the digest form: `oci://ghcr.io/iabtechlab/uid2-core@sha256:<digest>` (visible on the Packages page, or via `gh api /orgs/IABTechLab/packages/container/uid2-core/versions`).
58+
59+
A successful run prints `✓ Verification succeeded!` followed by the SLSA provenance fields — including `sourceRepositoryDigest` (the source commit), `workflow.path` (the signing workflow), and the runner identity.
60+
61+
Snapshot tags (`-SNAPSHOT` suffix) deliberately skip attestation. `gh attestation verify` returns `no attestations found` against a snapshot — that's expected.

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<launcher.class>io.vertx.core.Launcher</launcher.class>
2626

2727
<uid2-shared.version>11.4.16</uid2-shared.version>
28-
<netty.version>4.1.132.Final</netty.version>
28+
<netty.version>4.1.133.Final</netty.version>
2929
<image.version>${project.version}</image.version>
3030
</properties>
3131

0 commit comments

Comments
 (0)