PHP fissato alla 8.3.36 (CVE-2026-109618, CVE-2026-109619)
- Dockerfile: ARG PHP_VERSION=8.3.36 e FROM php:${PHP_VERSION}-fpm al posto
del tag mobile php:8.3-fpm, che la cache di Docker poteva risolvere sulla
8.3.35 vulnerabile. Una build ora prende la versione corretta o fallisce.
- phpredis da GitHub (versione fissata) invece di pecl.php.net, che il
giorno della patch rispondeva 504 e bloccava la build.
- Test contro il ritorno a un tag mobile o a una versione vulnerabile.
- PHP_VERSION passabile dal compose solo per prove locali.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,21 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
# Versione di PHP, fissata alla patch. Va dichiarata prima del primo FROM per
|
||||
# poterla usare nel FROM dello stage `base`.
|
||||
#
|
||||
# Fissata e non "8.3": quel tag si sposta, ma Docker tiene in cache la base già
|
||||
# scaricata, e una ricostruzione senza --pull (anche su Dokploy) poteva uscire
|
||||
# con un PHP vecchio senza che nessuno se ne accorgesse. Con la patch scritta
|
||||
# qui, una build o prende questa versione o fallisce.
|
||||
#
|
||||
# 8.3.36: corregge CVE-2026-109618 e CVE-2026-109619 (esecuzione di codice da
|
||||
# remoto nel core di PHP, CVSS 9.2, rilascio del 21/10/2026). Non scendere
|
||||
# sotto. Aggiornala a ogni rilascio di sicurezza del ramo 8.3.
|
||||
#
|
||||
# Solo per provare in locale prima che l'immagine corretta sia su Docker Hub:
|
||||
# PHP_VERSION=8.3.35 docker compose ... (mai per un deploy).
|
||||
ARG PHP_VERSION=8.3.36
|
||||
|
||||
# =============================================================================
|
||||
# Stage 1 — PHP dependencies (no dev, production autoloader)
|
||||
# =============================================================================
|
||||
@@ -65,7 +81,7 @@ RUN npm run build
|
||||
# estensioni e sullo stesso php.ini della produzione: un test che passa qui
|
||||
# non puo' passare grazie a un ambiente diverso da quello vero.
|
||||
# =============================================================================
|
||||
FROM php:8.3-fpm AS base
|
||||
FROM php:${PHP_VERSION}-fpm AS base
|
||||
|
||||
# nginx + supervisor run in-image alongside php-fpm: a separate nginx container
|
||||
# would need its own copy of public/ plus the storage volume just to serve
|
||||
@@ -76,6 +92,11 @@ FROM php:8.3-fpm AS base
|
||||
# are named per Debian release (libicu72 vs libicu76, libzip4 vs libzip5), so
|
||||
# purging means pinning package names that break whenever the php base image
|
||||
# moves to a new Debian. A few tens of MB is worth not having that breakage.
|
||||
#
|
||||
# phpredis si scarica da GitHub, versione fissata, e non con `pecl install`:
|
||||
# il 21/10/2026, giorno della patch di sicurezza di PHP, pecl.php.net
|
||||
# rispondeva 504 e la build falliva proprio quando bisognava aggiornare.
|
||||
ARG PHPREDIS_VERSION=6.3.0
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
curl \
|
||||
netcat-openbsd \
|
||||
@@ -101,8 +122,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
intl \
|
||||
zip \
|
||||
opcache \
|
||||
&& pecl install redis \
|
||||
&& docker-php-ext-enable redis \
|
||||
&& mkdir -p /usr/src/php/ext/redis \
|
||||
&& curl -fsSL --retry 5 --retry-delay 5 \
|
||||
"https://github.com/phpredis/phpredis/archive/refs/tags/${PHPREDIS_VERSION}.tar.gz" \
|
||||
| tar xz --strip-components=1 -C /usr/src/php/ext/redis \
|
||||
&& echo redis >> /usr/src/php-available-exts \
|
||||
&& docker-php-ext-install -j"$(nproc)" redis \
|
||||
&& docker-php-source delete \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
|
||||
Reference in New Issue
Block a user