Skip to content

Commit f2332a6

Browse files
committed
sec(docker): rodar o nginx sem root (USER nginx)
Svalinn/semgrep missing-user (CWE-250). A imagem rodava como root. A premissa antiga da frota era que :80 obrigava root e que sair disso exigiria porta alta + remapear o Traefik. Nao e mais verdade: o container tem net.ipv4.ip_unprivileged_port_start=0 (default do Docker >= 20.10), confirmado no proprio surtr, entao o uid 101 binda a :80 direto. Verificado com a imagem construida deste Dockerfile: - `ps` dentro do container: master E workers como `nginx`, nenhum root - GET / e GET /health -> 200 - (imagine-decor) o entrypoint segue escrevendo /etc/nginx/conf.d via sed, e a tranca `location /rest/ { return 404 }` continua respondendo 404 chown em /var/cache/nginx, /usr/share/nginx/html, /etc/nginx/conf.d e no /var/run/nginx.pid — o que o nginx precisa escrever. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent a4caa64 commit f2332a6

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

Dockerfile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,15 @@ RUN pnpm build
1313
FROM nginx:alpine
1414
COPY --from=build /app/site/dist /usr/share/nginx/html
1515
COPY site/nginx.conf /etc/nginx/conf.d/default.conf
16+
# ── Rodar sem root (Svalinn/semgrep missing-user, CWE-250) ───────────────────
17+
# Verificado no surtr: o container tem net.ipv4.ip_unprivileged_port_start=0
18+
# (default do Docker >= 20.10), entao o nginx BINDA a :80 como uid 101 — nao
19+
# foi preciso trocar de porta nem remapear o Traefik. Testado em nginx:alpine:
20+
# master E workers como `nginx`, GET / -> 200.
21+
RUN chown -R nginx:nginx /var/cache/nginx /usr/share/nginx/html /etc/nginx/conf.d \
22+
&& touch /var/run/nginx.pid && chown nginx:nginx /var/run/nginx.pid
23+
USER nginx
24+
1625
EXPOSE 80
1726
HEALTHCHECK --interval=30s --timeout=4s --start-period=8s --retries=3 \
1827
CMD wget -qO- http://127.0.0.1/ >/dev/null 2>&1 || exit 1

0 commit comments

Comments
 (0)