Aktuálna situácia: PHP2Shell. Dve kritické zraniteľnosti PHP (CVSS 9.2) umožňujú spustenie škodlivého kódu bez prihlásenia. Záplaty od 21. 10. 2026.Čo treba urobiť teraz →

Oficiálne obrazy PHP Docker: tagy, digesty a nové zostavenie

Tag oficiálneho obrazu PHP je ukazovateľ, ktorý sa časom presúva na nové stavy. Kto vie, čo znamená tag, variant a digest, vyberie správny obraz a vie doložiť stav záplat.

Stav 5 min čítaniaHosting a distribúcie

Stručne: Oficiálny obraz PHP na Docker Hub existuje v mnohých tagoch, ktoré kombinujú verziu, variant (napríklad cli, fpm, apache) a základný systém. Tag je ukazovateľ, ktorý sa po nových zostaveniach presúva na nové stavy; len digest označuje presne jeden stav. Proti PHP2Shell potrebujete obraz s PHP 8.5.12, 8.4.27, 8.3.36 alebo 8.2.35, overený pomocou php -v, a na ňom nové zostavenie vlastných obrazov.

Prečo samotný tag prezrádza málo

Mnohé tímy napíšu do svojho Dockerfile riadok ako FROM php:8.3-fpm a potom naň zabudnú. Funguje to, kým sa nikto nepýta, aká verzia PHP vlastne beží. Od PHP2Shell sa pýta každý.

Odpoveď nie je v Dockerfile. Tag ako 8.3-fpm ukazuje v čase sťahovania na najnovší stav tejto vetvy. Ak sa obraz stiahol pred 21. októbrom a odvtedy sa neobnovil, obsahuje zraniteľnú verziu, hoci tag dnes ukazuje na opravený stav. Podľa zásad Docker Official Images sa obrazy aktívne zostavujú nanovo, aj pri bezpečnostných opravách. Váš lokálny stav sa tým však nedotkne.

Kompletný postup od nového zostavenia až po novo vytvorený kontajner opisuje Záplatovanie PHP v kontajneroch Docker. Tu ide o predbežnú otázku: ktorý obraz je správny a ako doložíte jeho stav?

Tagy obrazov PHP Docker: ako sú postavené

Tagy sa skladajú z až troch častí. Docker Hub ukazuje príklady ako php:8.2-cli, php:8.2-fpm-alpine alebo php:8.4.27-zts-alpine3.24.

Súčasť Príklad Význam
Údaj o verzii 8.4.27 alebo 8.4 plná verzia ostáva pri tomto stave, údaj o vetve sa presúva s novými záplatami
Variant cli, fpm, apache, zts spôsob prevádzky PHP v kontajneri
Základný systém alpine3.24, bookworm, trixie podkladová verzia Alpine alebo Debianu

Varianty nie sú pri PHP2Shell rovnocenné. fpm prevádzkuje PHP-FPM, apache prevádzkuje PHP ako modul Apache, teda mod_php. Tento spôsob prevádzky tím PHP hodnotí najvyššie, pretože tam bol predvedený exploit ešte predtým, než sa vôbec spustí kód aplikácie. Viac v časti Prečo je mod_php obzvlášť ohrozený. Variant cli je určený na úlohy v príkazovom riadku.

Aj základný systém má dôsledky. Obrazy Alpine sú malé, no používajú inú knižnicu C než obrazy Debianu; niektoré rozšírenia alebo vopred skompilované knižnice sa tam správajú inak. Základný systém preto nemeňte mimochodom pri bezpečnostnej aktualizácii, ale ostaňte najprv pri tom, čo vaša aplikácia pozná.

Dôležité pre porozumenie: v oficiálnom obraze nepochádza PHP z balíkov základnej distribúcie. Docker Hub opisuje, že zdrojové kódy PHP sú v obraze a rozšírenia sa zabudovávajú pomocnými skriptmi ako docker-php-ext-install. Aktualizácia balíkov základného systému vo vlastnom Dockerfile preto na verzii PHP nič nemení. Rozhodujúce je jedine to, na akom stave oficiálneho obrazu stavíte.

Tag alebo digest: čo sa kedy mení

Digest je kontrolný súčet obsahu obrazu, zapísaný ako sha256: s dlhým reťazcom znakov. Mení sa s každým novým zostavením. Vďaka tomu sa hodí ako doklad: kto pozná digest, vie presne, ktorý stav beží.

V praxi sa osvedčuje rozdelenie úloh:

  • V Dockerfile použite tag vetvy, napríklad php:8.4-fpm, aby nové zostavenie automaticky dostalo najnovšiu záplatu tejto vetvy.
  • Pri nasadení použite digest hotového vlastného obrazu, aby bolo jednoznačné, čo sa dodáva.
  • V dokumentácii zaznamenajte obe: tag, digest a verziu overenú pomocou php -v.

Kto namiesto toho pevne zapíše tag s plnou verziou, ako 8.3.35-fpm, nikdy automaticky nedostane záplatu. To môže byť zámer, vyžaduje to však proces, ktorý tag pri každom bezpečnostnom hlásení zvýši.

PHP2Shell: overenie obrazu pred nasadením

Nasledujúce príkazy stiahnu obraz a načítajú informácie. Nemenia žiadne bežiace kontajnery.

# Stiahnuť aktuálny stav tagu vetvy
docker pull php:8.4-fpm

# Aká verzia PHP je v obraze?
docker run --rm php:8.4-fpm php -v

# Zobraziť digest stiahnutého obrazu
docker image inspect php:8.4-fpm --format '{{index .RepoDigests 0}}'

# Zistiť digest a platformy priamo v registri
docker buildx imagetools inspect php:8.4-fpm

Dopyt cez imagetools ukáže pri obrazoch pre viac platforiem nadradený digest a pod ním pre každú platformu, napríklad linux/amd64 alebo linux/arm64, vlastný. Zdokumentujte digest, ktorý vaše servery skutočne sťahujú, a majte na pamäti, že vývojárske počítače s inou architektúrou dostanú iný digest platformy.

Ak php -v neukazuje aspoň opravenú verziu vetvy, obraz je zastaraný alebo pochádza z medzipamäte. Skontrolujte potom, či vaše prostredie nepoužíva zrkadlo registra, ktoré dodáva staré stavy.

Pre PHP 8.1 a staršie projekt PHP už nevydáva oficiálne vydania. Oficiálny obraz týchto vetiev preto nemôže obsahovať riadnu opravenú verziu. Tagy, ktoré sa už neudržiavajú, ostávajú podľa zásad Dockeru dostupné, ale už sa neaktualizujú.

Tip

Obraz podľa Docker Hub obsahuje php.ini-development a php.ini-production a pre produkčnú prevádzku dôrazne odporúča produkčnú verziu. Vlastné nastavenia ukladajte ako súbor do $PHP_INI_DIR/conf.d/, aj prechodné hodnoty z php.net.

Typické chyby pri výbere obrazu

  • Variant z návyku: Zvolí sa variant apache, lebo sa jednoducho spúšťa, hoci by bol možný fpm so samostatným webovým serverom.
  • Žiadne nové zostavenie vlastných obrazov: Základný obraz je aktuálny, aplikačný obraz z neho zostavený nie.
  • Prehliadnuté viacstupňové zostavenia: V Dockerfile s viacerými riadkami FROM sa upraví len jeden.
  • Zabudnuté vedľajšie obrazy: Workery, kontajnery cronu a administračné nástroje používajú vlastné tagy.
  • Spoliehanie len na latest: Tag nehovorí nič o vetve a variante a pri novej hlavnej vetve môže neočakávane skočiť.

Ako nové zostavenia automatizovať, aby zastaraný obraz nebežal ani dlho, opisuje CI/CD: automatické nové zostavenie obrazov PHP. Základy PHP v kontajneroch vysvetľuje PHP v kontajneroch.

Ako konkrétne pomáha PHP SOS?

  • Skontrolovať stav: Zistíme, aké tagy, digesty a verzie PHP sú vo vašich obrazoch a bežiacich kontajneroch.
  • Zhodnotiť variant: Preveríme, či je mod_php potrebný, alebo či riziko zníži fpm so samostatným webovým serverom.
  • Zostaviť nanovo a doložiť: Prostredníctvom služby záplatovania PHP zostavíme obrazy nanovo na opravenom základe a zdokumentujeme tag, digest a verziu.
  • Zakotviť proces: Dockerfiles a nasadenia nastavíme tak, aby ďalšia záplata dorazila plánovane.

Časté otázky

Aký je rozdiel medzi tagom a digestom?

Tag ako php:8.4-fpm je názov, ktorý po každom novom zostavení môže ukazovať na nový stav. Digest je kontrolný súčet, ktorý označuje presne jeden nemenný stav. Pre doklady a reprodukovateľné nasadenia je digest spoľahlivejším údajom.

Ktorý tag obsahuje opravu PHP2Shell?

Opravené sú PHP 8.5.12, 8.4.27, 8.3.36 a 8.2.35. Tag s plným číslom verzie ukazuje stav priamo. Pri kratších tagoch, ako 8.4-fpm, po stiahnutí skontrolujte pomocou php -v, ktorá verzia je skutočne obsiahnutá.

Existuje zaplátaný oficiálny obraz pre PHP 8.1?

Projekt PHP už pre 8.1 a staršie nevydáva oficiálne vydania. Oficiálny obraz týchto vetiev preto nemôže obsahovať riadnu opravenú verziu. Naplánujte prechod na podporovanú vetvu.

Je variant apache riskantnejší než fpm?

Variant apache prevádzkuje PHP ako modul Apache, teda mod_php. Tento spôsob prevádzky tím PHP pri PHP2Shell hodnotí najvyššie. Oba varianty potrebujú aktualizáciu; pri mod_php je naliehavosť obzvlášť veľká.

Zdroje

Okamžitý kontakt

Každá hodina sa počíta. Napíšte nám hneď.

Stručne opíšte systém, verziu PHP a svoje pozorovanie. Ozveme sa, vyjasníme situáciu a budeme pracovať na diaľku, kým nebude incident uzavretý a zdokumentovaný.

Okamžitá pomoc