Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2ea54d15ba | ||
|
|
474d56779a | ||
|
|
94dcdbcfeb | ||
|
|
50471a5b0c | ||
|
|
3718556e29 |
+34
-1
@@ -86,6 +86,10 @@ USER root
|
|||||||
# anywhere. chromedp finds `chromium`/`chromium-browser` on PATH;
|
# anywhere. chromedp finds `chromium`/`chromium-browser` on PATH;
|
||||||
# chrome-launcher honours CHROME_PATH. font-noto so text renders
|
# chrome-launcher honours CHROME_PATH. font-noto so text renders
|
||||||
# (an empty font set makes layout/contrast audits meaningless).
|
# (an empty font set makes layout/contrast audits meaningless).
|
||||||
|
# openssh-keygen -> `ssh-keygen`: zegit's SSHSIG oracle test
|
||||||
|
# (TestSSHSIG_ChecksumsVerifyWithSSHKeygen_441) verifies release-checksum
|
||||||
|
# signatures with `ssh-keygen -Y verify` and fails under CI without it,
|
||||||
|
# so the v0.1.56 cut was refused on this runner (zegit#575).
|
||||||
# postgresql-client -> `psql`, so the lighthouse job can CREATE/DROP its own
|
# postgresql-client -> `psql`, so the lighthouse job can CREATE/DROP its own
|
||||||
# database on the runner's ci-postgres (ZEGIT_TESTPG_DSN) instead
|
# database on the runner's ci-postgres (ZEGIT_TESTPG_DSN) instead
|
||||||
# of migrating the shared maintenance database from under the
|
# of migrating the shared maintenance database from under the
|
||||||
@@ -111,7 +115,18 @@ RUN apk add --no-cache \
|
|||||||
jq \
|
jq \
|
||||||
chromium \
|
chromium \
|
||||||
font-noto \
|
font-noto \
|
||||||
postgresql-client
|
postgresql-client \
|
||||||
|
openssh-keygen
|
||||||
|
|
||||||
|
# ssh-keygen signs and verifies an SSHSIG in namespace "file", the form zegit's
|
||||||
|
# test uses, so a build without a working ssh-keygen fails here, not in CI.
|
||||||
|
RUN set -eu; d=$(mktemp -d); \
|
||||||
|
ssh-keygen -q -t ed25519 -N '' -f "$d/k"; \
|
||||||
|
echo smoke > "$d/f"; \
|
||||||
|
ssh-keygen -q -Y sign -n file -f "$d/k" "$d/f"; \
|
||||||
|
printf 'smoke %s\n' "$(cat "$d/k.pub")" > "$d/allowed"; \
|
||||||
|
ssh-keygen -Y verify -f "$d/allowed" -I smoke -n file -s "$d/f.sig" < "$d/f"; \
|
||||||
|
rm -rf "$d"
|
||||||
|
|
||||||
# CVE-2026-111497 (brotli decoder out-of-bounds write, CISA KEV, due 2026-11-10): the
|
# CVE-2026-111497 (brotli decoder out-of-bounds write, CISA KEV, due 2026-11-10): the
|
||||||
# forgejo/runner:12.11.1 base ships brotli-libs 1.2.0-r0, and `apk add` above never
|
# forgejo/runner:12.11.1 base ships brotli-libs 1.2.0-r0, and `apk add` above never
|
||||||
@@ -128,5 +143,23 @@ RUN set -eux; \
|
|||||||
# The patched binary replaces the stock one (see the runner-build stage).
|
# The patched binary replaces the stock one (see the runner-build stage).
|
||||||
COPY --from=runner-build /out/forgejo-runner /bin/forgejo-runner
|
COPY --from=runner-build /out/forgejo-runner /bin/forgejo-runner
|
||||||
|
|
||||||
|
# A passwd entry for uid 1000, the runner pod's runAsUser. Tools that look up
|
||||||
|
# the current user (getpwuid) refuse without one: ssh-keygen -Y verify answered
|
||||||
|
# "No user exists for uid 1000" (exit 255) once openssh-keygen was in the image,
|
||||||
|
# so zegit's SSHSIG oracle test still failed on this runner (zegit#575).
|
||||||
|
RUN grep -q ':x:1000:' /etc/passwd || echo 'runner:x:1000:1000:runner:/home/runner:/bin/sh' >> /etc/passwd; \
|
||||||
|
grep -q ':x:1000:' /etc/group || echo 'runner:x:1000:' >> /etc/group; \
|
||||||
|
mkdir -p /home/runner && chown 1000:1000 /home/runner
|
||||||
|
|
||||||
# Match the runner pod's runAsUser (1000); keep the image non-root by default.
|
# Match the runner pod's runAsUser (1000); keep the image non-root by default.
|
||||||
USER 1000
|
USER 1000
|
||||||
|
|
||||||
|
# As that user, ssh-keygen signs and verifies an SSHSIG, so a missing passwd
|
||||||
|
# entry fails the build here, not in CI.
|
||||||
|
RUN set -eu; d=$(mktemp -d); \
|
||||||
|
ssh-keygen -q -t ed25519 -N '' -f "$d/k"; \
|
||||||
|
echo smoke > "$d/f"; \
|
||||||
|
ssh-keygen -q -Y sign -n file -f "$d/k" "$d/f"; \
|
||||||
|
printf 'smoke %s\n' "$(cat "$d/k.pub")" > "$d/allowed"; \
|
||||||
|
ssh-keygen -Y verify -f "$d/allowed" -I smoke -n file -s "$d/f.sig" < "$d/f"; \
|
||||||
|
rm -rf "$d"
|
||||||
Reference in new issue
Block a user