Aktuális helyzet: PHP2Shell. Két kritikus PHP-rés (CVSS 9,2) lehetővé teszi kártékony kód futtatását bejelentkezés nélkül. Javítások 2026. 10. 21. óta.Mi a teendő most →

Hivatalos PHP Docker image-ek: címkék, digestek és újraépítés

A hivatalos PHP image egy címkéje olyan mutató, amely idővel új állapotokra vándorol. Aki tudja, mit jelent a címke, a változat és a digest, a megfelelő image-et választja, és igazolni tudja a javítási állapotot.

Állapot 5 perc olvasási időTárhely és disztribúciók

Röviden: A Docker Hubon a hivatalos PHP image sok tagben létezik, amelyek a verziót, a változatot (például cli, fpm, apache) és az alaprendszert kombinálják. A tag olyan mutató, amely az újraépítések után új állapotokra vándorol; csak a digest jelöl pontosan egy állapotot. A PHP2Shell ellen olyan image-re van szüksége, amelyben PHP 8.5.12, 8.4.27, 8.3.36 vagy 8.2.35 van, php -v-vel ellenőrizve, és a saját image-ei újraépítésére erre alapozva.

Miért mond keveset önmagában a tag

Sok csapat egy olyan sort ír a Dockerfile-jába, mint a FROM php:8.3-fpm, majd elfelejti. Ez addig működik, amíg senki sem kérdezi, melyik PHP-verzió fut valójában. A PHP2Shell óta mindenki megkérdezi.

A válasz nem a Dockerfile-ban áll. Egy olyan tag, mint a 8.3-fpm, a letöltés időpontjában az ág legújabb állapotára mutat. Ha az image-et október 21. előtt töltötték le, és azóta nem újították meg, sebezhető verziót tartalmaz, noha a tag ma egy kijavított állapotra mutat. A Docker Official Images irányelvei szerint az image-eket aktívan újraépítik, biztonsági javításoknál is. A helyi állapotát ez azonban nem érinti.

A teljes folyamatot az újraépítéstől az újonnan létrehozott konténerig a PHP javítása Docker-konténerekben írja le. Itt az előkérdésről van szó: melyik a megfelelő image, és hogyan igazolja az állapotát?

PHP Docker image címkék: így épülnek fel

A tagek legfeljebb három részből állnak. A Docker Hub olyan példákat mutat, mint a php:8.2-cli, a php:8.2-fpm-alpine vagy a php:8.4.27-zts-alpine3.24.

Összetevő Példa Jelentés
Verziómegjelölés 8.4.27 vagy 8.4 a teljes verzió ezen az állapoton marad, az ágmegjelölés új javításokkal együtt vándorol
Változat cli, fpm, apache, zts a PHP üzemmódja a konténerben
Alaprendszer alpine3.24, bookworm, trixie az alapul szolgáló Alpine- vagy Debian-verzió

A változatok a PHP2Shell szempontjából nem egyenértékűek. Az fpm PHP-FPM-et üzemeltet, az apache a PHP-t Apache-modulként, vagyis mod_php-ként. Ezt az üzemmódot a PHP-csapat értékeli a legmagasabbra, mert ott még az alkalmazáskód futása előtt bemutattak egy exploitot. Erről többet a Miért különösen veszélyeztetett a mod_php oldalon olvashat. A cli változat parancssori feladatokra szolgál.

Az alaprendszernek is vannak következményei. Az Alpine image-ek kicsik, de más C-könyvtárat használnak, mint a Debian image-ek; egyes bővítmények vagy előre lefordított könyvtárak ott másként viselkednek. Ezért az alaprendszert ne a biztonsági frissítés mellékeként cserélje, hanem először maradjon annál, amit az alkalmazása ismer.

A megértéshez fontos: a hivatalos image-ben a PHP nem az alap disztribúció csomagjaiból származik. A Docker Hub leírása szerint a PHP forráskódja az image-ben van, a bővítményeket pedig segédszkriptek, például a docker-php-ext-install építik be. Az alaprendszer csomagfrissítése a saját Dockerfile-ban ezért nem változtat a PHP-verzión. Egyedül az számít, a hivatalos image melyik állapotára épít.

Tag vagy digest: mi mikor változik

A digest egy image tartalmára számított ellenőrző összeg, sha256: formában, hosszú karaktersorozattal. Minden újraépítéssel megváltozik. Ezáltal alkalmas igazolásra: aki ismeri a digestet, pontosan tudja, melyik állapot fut.

A gyakorlatban a következő munkamegosztás vált be:

  • A Dockerfile-ban az ágtag használata, például php:8.4-fpm, hogy egy újraépítés automatikusan megkapja az ág legújabb javítását.
  • A kiadásnál a kész saját image digestjének használata, hogy egyértelmű legyen, mi kerül kiszállításra.
  • A dokumentációban mindkettő rögzítése: tag, digest és a php -v-vel ellenőrzött verzió.

Aki ehelyett teljes verziótaget ír elő, például a 8.3.35-fpm-et, az sosem kap automatikusan javítást. Ez lehet szándékos, de olyan folyamatot igényel, amely a taget minden biztonsági közleménynél felemeli.

PHP2Shell: egy image ellenőrzése használat előtt

Az alábbi parancsok letöltenek egy image-et, és információt olvasnak ki. Futó konténereket nem módosítanak.

# Az ágtag aktuális állapotának letöltése
docker pull php:8.4-fpm

# Melyik PHP-verzió van az image-ben?
docker run --rm php:8.4-fpm php -v

# A letöltött image digestjének megjelenítése
docker image inspect php:8.4-fpm --format '{{index .RepoDigests 0}}'

# Digest és platformok lekérdezése közvetlenül a registryből
docker buildx imagetools inspect php:8.4-fpm

Az imagetools lekérdezés több platformos image-eknél egy felső szintű digestet mutat, alatta pedig platformonként, például linux/amd64 vagy linux/arm64, egy-egy sajátot. Dokumentálja azt a digestet, amelyet a szerverei ténylegesen letöltenek, és vegye figyelembe, hogy a más architektúrájú fejlesztői gépek más platform-digestet kapnak.

Ha a php -v nem mutatja legalább az ág kijavított verzióját, az image elavult, vagy gyorsítótárból származik. Ellenőrizze ilyenkor, hogy a környezete nem használ-e olyan registry-tükröt, amely régi állapotokat szolgáltat.

A PHP 8.1-hez és a régebbiekhez a PHP-projekt már nem ad ki hivatalos kiadásokat. Ezért ezeknek az ágaknak a hivatalos image-e nem tartalmazhat rendes kijavított verziót. A már nem gondozott tagek a Docker irányelvei szerint továbbra is letölthetők maradnak, de már nem frissülnek.

Tipp

Az image a Docker Hub szerint php.ini-development és php.ini-production fájlt hoz magával, és éles üzemben határozottan az éles változatot ajánlja. Saját beállításait fájlként tegye a $PHP_INI_DIR/conf.d/ könyvtárba, a php.net átmeneti értékeit is.

Tipikus hibák az image kiválasztásánál

  • Változat megszokásból: Az apache változatot azért választják, mert egyszerűen indul, noha az fpm külön webszerverrel is lehetséges lenne.
  • A saját image-ek nincsenek újraépítve: Az alapimage friss, az abból épített alkalmazás-image nem.
  • Többlépcsős buildek figyelmen kívül hagyása: Egy több FROM sort tartalmazó Dockerfile-ban csak az egyiket igazítják.
  • Mellékimage-ek elfelejtése: A workerek, a cron-konténerek és az admin eszközök saját tageket használnak.
  • Kizárólag a latest használata: A tag nem mond semmit az ágról és a változatról, és új főág esetén váratlanul átugorhat.

Hogyan automatizálja az újraépítéseket, hogy egy elavult image egyáltalán ne fusson sokáig, azt a CI/CD: PHP-image-ek automatikus újraépítése írja le. A PHP alapjait konténerekben a PHP konténerekben oldal magyarázza.

Hogyan segít konkrétan a PHP SOS?

  • Állomány ellenőrzése: Kiolvassuk, mely tagek, digestek és PHP-verziók vannak az image-eiben és a futó konténereiben.
  • Változat értékelése: Megvizsgáljuk, szükség van-e a mod_php-ra, vagy az fpm külön webszerverrel csökkenti a kockázatot.
  • Újraépítés és igazolás: A PHP-javítási szolgáltatással kijavított alapra építjük újra az image-eket, és dokumentáljuk a tagot, a digestet és a verziót.
  • A folyamat rögzítése: Úgy alakítjuk ki a Dockerfile-okat és a kiadásokat, hogy a következő javítás tervezhetően érkezzen meg.

Gyakori kérdések

Mi a különbség a tag és a digest között?

Egy olyan tag, mint a php:8.4-fpm, név, amely minden újraépítés után új állapotra mutathat. A digest ellenőrző összeg, amely pontosan egy változatlan állapotot jelöl. Igazoláshoz és reprodukálható kiadásokhoz a digest a megbízhatóbb adat.

Melyik tag tartalmazza a PHP2Shell javítását?

Kijavítottak a PHP 8.5.12, 8.4.27, 8.3.36 és 8.2.35. A teljes verziószámú tag közvetlenül mutatja az állapotot. Rövidebb tagek, például a 8.4-fpm esetén a letöltés után a php -v paranccsal ellenőrizze, melyik verzió van ténylegesen benne.

Van javított hivatalos image a PHP 8.1-hez?

A PHP-projekt a 8.1-hez és régebbiekhez már nem ad ki hivatalos kiadásokat. Ezért ezeknek az ágaknak a hivatalos image-e nem tartalmazhat rendes kijavított verziót. Tervezze meg a váltást egy támogatott ágra.

Kockázatosabb az apache változat, mint az fpm?

Az apache változat a PHP-t Apache-modulként, vagyis mod_php-ként üzemelteti. Ezt az üzemmódot a PHP-csapat a PHP2Shellnél a legmagasabbra értékeli. Mindkét változatnak szüksége van a frissítésre; a mod_php-nál különösen sürgős.

Források

Azonnali kapcsolat

Minden óra számít. Írjon nekünk most.

Ismertesse röviden a rendszert, a PHP-verziót és a megfigyelését. Jelentkezünk, tisztázzuk a helyzetet, és távolról dolgozunk, amíg az incidens le nem zárul és dokumentálva nem lesz.

Azonnali segítség