security: upgrade some package versions
This commit is contained in:
@@ -49,6 +49,14 @@ jobs:
|
|||||||
--no-progress \
|
--no-progress \
|
||||||
"gatehouse-api:${{ steps.sha.outputs.tag }}"
|
"gatehouse-api:${{ steps.sha.outputs.tag }}"
|
||||||
|
|
||||||
|
- name: Scan job image for vulnerabilities (Trivy)
|
||||||
|
run: |
|
||||||
|
trivy image \
|
||||||
|
--exit-code 0 \
|
||||||
|
--severity HIGH,CRITICAL \
|
||||||
|
--no-progress \
|
||||||
|
"gatehouse-api-job:${{ steps.sha.outputs.tag }}"
|
||||||
|
|
||||||
# ── 2. Deploy ─────────────────────────────────────────────────────────────────
|
# ── 2. Deploy ─────────────────────────────────────────────────────────────────
|
||||||
deploy:
|
deploy:
|
||||||
name: Deploy
|
name: Deploy
|
||||||
|
|||||||
@@ -48,6 +48,14 @@ jobs:
|
|||||||
--no-progress \
|
--no-progress \
|
||||||
"gatehouse-api:${{ steps.sha.outputs.tag }}"
|
"gatehouse-api:${{ steps.sha.outputs.tag }}"
|
||||||
|
|
||||||
|
- name: Scan job image for vulnerabilities (Trivy)
|
||||||
|
run: |
|
||||||
|
trivy image \
|
||||||
|
--exit-code 0 \
|
||||||
|
--severity HIGH,CRITICAL \
|
||||||
|
--no-progress \
|
||||||
|
"gatehouse-api-job:${{ steps.sha.outputs.tag }}"
|
||||||
|
|
||||||
# ── 2. Deploy ─────────────────────────────────────────────────────────────────
|
# ── 2. Deploy ─────────────────────────────────────────────────────────────────
|
||||||
deploy:
|
deploy:
|
||||||
name: Deploy
|
name: Deploy
|
||||||
|
|||||||
+7
-2
@@ -19,14 +19,19 @@ COPY requirements/base.txt requirements/base.txt
|
|||||||
COPY requirements/production.txt requirements/production.txt
|
COPY requirements/production.txt requirements/production.txt
|
||||||
|
|
||||||
# Install dependencies
|
# Install dependencies
|
||||||
RUN pip install --no-cache-dir --upgrade pip wheel && \
|
# Upgrade build tooling too: clears CVE-2026-24049 (wheel) and CVE-2026-23949 (jaraco.context)
|
||||||
|
RUN pip install --no-cache-dir --upgrade pip setuptools wheel && \
|
||||||
pip install --no-cache-dir -r requirements/production.txt
|
pip install --no-cache-dir -r requirements/production.txt
|
||||||
|
|
||||||
# Production stage
|
# Production stage
|
||||||
FROM python:3.11-slim
|
FROM python:3.11-slim
|
||||||
|
|
||||||
# Install runtime dependencies
|
# Install runtime dependencies
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
# apt-get upgrade pulls patched openssl/openssh/etc. so the image isn't pinned to
|
||||||
|
# whatever was current when the base layer was published.
|
||||||
|
# NOTE: openssh-client carries 3 CVEs (CVE-2026-35385/35386/35414). SSH CA signing
|
||||||
|
# uses sshkey-tools (pure Python), so drop this line if nothing shells out to ssh/scp.
|
||||||
|
RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends \
|
||||||
libpq5 \
|
libpq5 \
|
||||||
curl \
|
curl \
|
||||||
openssh-client \
|
openssh-client \
|
||||||
|
|||||||
+2
-2
@@ -12,12 +12,12 @@ WORKDIR /app
|
|||||||
COPY requirements/base.txt requirements/base.txt
|
COPY requirements/base.txt requirements/base.txt
|
||||||
COPY requirements/production.txt requirements/production.txt
|
COPY requirements/production.txt requirements/production.txt
|
||||||
|
|
||||||
RUN pip install --no-cache-dir --upgrade pip wheel && \
|
RUN pip install --no-cache-dir --upgrade pip setuptools wheel && \
|
||||||
pip install --no-cache-dir -r requirements/production.txt
|
pip install --no-cache-dir -r requirements/production.txt
|
||||||
|
|
||||||
FROM python:3.11-slim
|
FROM python:3.11-slim
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends \
|
||||||
libpq5 \
|
libpq5 \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Core Flask
|
# Core Flask
|
||||||
Flask==3.0.0
|
Flask==3.0.0
|
||||||
Werkzeug==3.0.1
|
Werkzeug==3.0.6 # CVE-2024-34069 (debug-server RCE); stays <3.1 for Flask 3.0 compat
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
SQLAlchemy==2.0.23
|
SQLAlchemy==2.0.23
|
||||||
@@ -19,15 +19,17 @@ Flask-Bcrypt==1.0.1
|
|||||||
pyotp==2.9.0
|
pyotp==2.9.0
|
||||||
|
|
||||||
# WebAuthn / FIDO2
|
# WebAuthn / FIDO2
|
||||||
fido2==1.1.2
|
# fido2 removed: unused in the codebase (WebAuthn is parsed directly via cbor2),
|
||||||
cbor2==5.6.0
|
# and it pinned cryptography<44, blocking the CVE-2026-26007 fix. Re-add fido2>=2.2.0
|
||||||
|
# if migrating to the official library.
|
||||||
|
cbor2==5.9.0 # CVE-2024-26134, CVE-2026-26209 (DoS via recursion)
|
||||||
|
|
||||||
# JWT / OIDC
|
# JWT / OIDC
|
||||||
PyJWT==2.8.0
|
PyJWT==2.13.0 # CVE-2026-48526 (auth bypass via forged JWT), CVE-2026-32597
|
||||||
cryptography==42.0.7
|
cryptography==46.0.5 # CVE-2026-26007 (SECT subgroup attack)
|
||||||
|
|
||||||
# CORS
|
# CORS
|
||||||
Flask-CORS==4.0.0
|
Flask-CORS==6.0.0 # CVE-2024-6221 (ACAO handling)
|
||||||
|
|
||||||
# Environment variables
|
# Environment variables
|
||||||
python-dotenv==1.0.0
|
python-dotenv==1.0.0
|
||||||
|
|||||||
@@ -36,8 +36,8 @@ requests==2.31.0
|
|||||||
pytz==2023.3
|
pytz==2023.3
|
||||||
python-dotenv==1.0.0
|
python-dotenv==1.0.0
|
||||||
pydantic==2.5.0
|
pydantic==2.5.0
|
||||||
PyJWT==2.8.0
|
PyJWT==2.13.0
|
||||||
cryptography==42.0.7
|
cryptography==46.0.5
|
||||||
pycryptodome==3.20.0
|
pycryptodome==3.20.0
|
||||||
psycopg2-binary==2.9.9
|
psycopg2-binary==2.9.9
|
||||||
sshkey-tools==0.11.3
|
sshkey-tools==0.11.3
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
-r base.txt
|
-r base.txt
|
||||||
|
|
||||||
# Production WSGI server
|
# Production WSGI server
|
||||||
gunicorn==21.2.0
|
gunicorn==23.0.0 # CVE-2024-1135, CVE-2024-6827 (HTTP request smuggling)
|
||||||
|
|
||||||
# Monitoring & logging
|
# Monitoring & logging
|
||||||
sentry-sdk[flask]==1.39.1
|
sentry-sdk[flask]==1.39.1
|
||||||
|
|||||||
Reference in New Issue
Block a user