iot-onboarding / iot-onboarding/mudcerts

Docker hardening: non-root user, distroless base, trimpath/static build

Open
#25 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
1
Forks
1
Avg merge
13h 20m
Merged PRs (30d)
3

Description

**Severity:** Medium
**Files:** `Dockerfile`, `docker-compose.yml`

Current final stage runs as root from `alpine:3.19` with `WORKDIR /root/`. Builder uses `go build -v web/mudzipserver.go` (file-mode build, no flags).

### Remediation
```dockerfile
FROM golang:1.23 AS builder
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download && go mod verify
COPY . .
RUN CGO_ENABLED=0 GOFLAGS=-trimpath go build -ldflags="-s -w" -o /out/mudzipserver ./web

FROM gcr.io/distroless/static-debian12:nonroot
COPY --from=builder /out/mudzipserver /mudzipserver
USER nonroot:nonroot
EXPOSE 8085
ENTRYPOINT [\"/mudzipserver\"]
```

In `docker-compose.yml`, add `read_only: true`, `cap_drop: [ALL]`, `security_opt: [no-new-privileges:true]`, and `user: \"65532:65532\"`.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.