Trenutno stanje: PHP2Shell. Dvije kritične PHP ranjivosti (CVSS 9.2) omogućuju zlonamjerni kod bez prijave. Zakrpe od 21. 10. 2026.Što sada učiniti →

Službeni PHP Docker image-i: tagovi, digesti i ponovna izgradnja

Tag službenog PHP image-a pokazivač je koji s vremenom prelazi na nova stanja. Tko zna što znače tag, varijanta i digest, bira pravi image i može dokazati stanje zakrpe.

Stanje 5 min čitanjaHosting i distribucije

Ukratko: Službeni PHP image na Docker Hubu postoji u mnogo tagova koji kombiniraju verziju, varijantu (primjerice cli, fpm, apache) i osnovni sustav. Tag je pokazivač koji nakon ponovnih izgradnji prelazi na nova stanja; samo digest označava točno jedno stanje. Protiv PHP2Shella treba Vam image s PHP-om 8.5.12, 8.4.27, 8.3.36 ili 8.2.35, provjeren naredbom php -v, te ponovna izgradnja Vaših vlastitih image-a na njemu.

Zašto tag sam govori malo

Mnogi timovi u svoj Dockerfile upišu redak poput FROM php:8.3-fpm i potom ga zaborave. To funkcionira dok nitko ne pita koja PHP verzija zapravo radi. Od PHP2Shella pita svatko.

Odgovor ne piše u Dockerfileu. Tag poput 8.3-fpm u trenutku povlačenja pokazuje na najnovije stanje te grane. Ako je image povučen prije 21. listopada i od tada nije obnovljen, sadrži ranjivu verziju, iako tag danas pokazuje na ispravljeno stanje. Prema smjernicama Docker Official Images image-i se aktivno iznova grade, i kod sigurnosnih ispravaka. Vaše lokalno stanje to ipak ne dotiče.

Cjelovit tijek od ponovne izgradnje do novo stvorenog kontejnera opisuje članak Zakrpati PHP u Docker kontejnerima. Ovdje je riječ o prethodnom pitanju: koji je image pravi i kako dokazati njegovo stanje?

Tagovi PHP Docker image-a: kako su građeni

Tagovi se sastoje od najviše tri dijela. Docker Hub prikazuje primjere poput php:8.2-cli, php:8.2-fpm-alpine ili php:8.4.27-zts-alpine3.24.

Sastavni dio Primjer Značenje
Oznaka verzije 8.4.27 ili 8.4 puna verzija ostaje na tom stanju, oznaka grane prelazi s novim zakrpama
Varijanta cli, fpm, apache, zts način rada PHP-a u kontejneru
Osnovni sustav alpine3.24, bookworm, trixie podložna verzija Alpinea ili Debiana

Varijante za PHP2Shell nisu ravnopravne. fpm pokreće PHP-FPM, apache pokreće PHP kao Apache modul, dakle mod_php. Taj način rada PHP tim ocjenjuje najvišim jer je tamo pokazan exploit prije nego što se uopće izvrši kod aplikacije. Više o tome pod Zašto je mod_php osobito ugrožen. Varijanta cli namijenjena je zadacima naredbenog retka.

I osnovni sustav ima posljedice. Alpine image-i su mali, ali koriste drugu C biblioteku od Debian image-a; neka proširenja ili unaprijed kompilirane biblioteke tamo se ponašaju drukčije. Osnovni sustav zato ne mijenjajte usput uz sigurnosno ažuriranje, nego najprije ostanite pri onome što Vaša aplikacija poznaje.

Važno za razumijevanje: u službenom image-u PHP ne potječe iz paketa osnovne distribucije. Docker Hub opisuje da se PHP izvori nalaze u image-u, a proširenja ugrađuju pomoćnim skriptama poput docker-php-ext-install. Ažuriranje paketa osnovnog sustava u vlastitom Dockerfileu stoga ništa ne mijenja u PHP verziji. Mjerodavno je isključivo na kojem stanju službenog image-a gradite.

Tag ili digest: što se kada mijenja

Digest je kontrolni zbroj sadržaja image-a, zapisan kao sha256: s dugim nizom znakova. Mijenja se sa svakom novom izgradnjom. Zato je prikladan kao dokaz: tko zna digest, zna točno koje stanje radi.

U praksi se dokazala podjela posla:

  • U Dockerfileu koristiti tag grane, primjerice php:8.4-fpm, kako bi nova izgradnja automatski dobila najnoviju zakrpu te grane.
  • U isporuci koristiti digest gotovo izgrađenog vlastitog image-a, kako bi bilo jednoznačno što se isporučuje.
  • U dokumentaciji zabilježiti oboje: tag, digest i verziju provjerenu naredbom php -v.

Tko umjesto toga učvrsti puni tag verzije poput 8.3.35-fpm, nikad automatski ne dobiva zakrpu. To može biti željeno, ali traži postupak koji tag podiže pri svakoj sigurnosnoj objavi.

PHP2Shell: provjeriti image prije uporabe

Sljedeće naredbe povlače image i čitaju informacije. Ne mijenjaju aktivne kontejnere.

# Povući aktualno stanje taga grane
docker pull php:8.4-fpm

# Koja se PHP verzija nalazi u image-u?
docker run --rm php:8.4-fpm php -v

# Prikazati digest povučenog image-a
docker image inspect php:8.4-fpm --format '{{index .RepoDigests 0}}'

# Digest i platforme upitati izravno u registryju
docker buildx imagetools inspect php:8.4-fpm

Upit s imagetools kod multiplatformskih image-a prikazuje nadređeni digest i ispod njega po platformi, primjerice linux/amd64 ili linux/arm64, vlastiti. Dokumentirajte digest koji Vaši poslužitelji doista povlače i imajte na umu da razvojna računala druge arhitekture dobivaju drugi digest platforme.

Ako php -v ne prikazuje barem ispravljenu verziju grane, image je zastario ili dolazi iz međuspremnika. Provjerite tada koristi li Vaše okruženje zrcalo registryja koje isporučuje stara stanja.

Za PHP 8.1 i starije PHP projekt više ne izdaje službena izdanja. Službeni image tih grana stoga ne može sadržavati redovitu ispravljenu verziju. Tagovi koji se više ne održavaju prema Docker smjernicama ostaju dostupni, ali se više ne ažuriraju.

Savjet

Image prema Docker Hubu donosi php.ini-development i php.ini-production te za produkciju izričito preporučuje produkcijsku varijantu. Vlastite postavke spremite kao datoteku u $PHP_INI_DIR/conf.d/, pa i privremene vrijednosti s php.net-a.

Tipične pogreške pri izboru image-a

  • Varijanta iz navike: Bira se varijanta apache jer se jednostavno pokreće, iako je fpm uz zasebni web-poslužitelj moguć.
  • Nema ponovne izgradnje vlastitih image-a: Osnovni image je aktualan, a iz njega izgrađen aplikacijski image nije.
  • Previđeni višestupanjski buildovi: U Dockerfileu s više redaka FROM prilagođen je samo jedan.
  • Zaboravljeni sporedni image-i: Workeri, cron kontejneri i administratorski alati koriste vlastite tagove.
  • Oslanjanje samo na latest: Tag ne govori ništa o grani i varijanti i kod nove glavne grane može neočekivano skočiti.

Kako automatizirati ponovne izgradnje da zastarjeli image uopće ne radi dugo, opisuje članak CI/CD: automatski ponovno graditi PHP image-e. Osnove o PHP-u u kontejnerima objašnjava stranica PHP u kontejnerima.

Kako PHP SOS konkretno pomaže?

  • Provjeriti postojeće stanje: Očitavamo koji tagovi, digesti i PHP verzije se nalaze u Vašim image-ima i aktivnim kontejnerima.
  • Procijeniti varijantu: Provjeravamo je li mod_php potreban ili fpm uz zasebni web-poslužitelj smanjuje rizik.
  • Ponovno izgraditi i dokazati: Uz PHP uslugu zakrpa ponovno gradimo image-e na ispravljenoj osnovi i dokumentiramo tag, digest i verziju.
  • Ukorijeniti postupak: Dockerfileove i isporuke postavljamo tako da sljedeća zakrpa stiže planirano.

Česta pitanja

Koja je razlika između taga i digesta?

Tag poput php:8.4-fpm je naziv koji nakon svake nove izgradnje može pokazivati na novo stanje. Digest je kontrolni zbroj koji označava točno jedno nepromjenjivo stanje. Za dokaze i ponovljive isporuke digest je pouzdaniji podatak.

Koji tag sadrži ispravak za PHP2Shell?

Ispravljeni su PHP 8.5.12, 8.4.27, 8.3.36 i 8.2.35. Tag s punim brojem verzije izravno prikazuje stanje. Kod kraćih tagova poput 8.4-fpm nakon povlačenja s php -v provjerite koja je verzija doista sadržana.

Postoji li zakrpani službeni image za PHP 8.1?

PHP projekt za 8.1 i starije više ne izdaje službena izdanja. Službeni image tih grana stoga ne može sadržavati redovitu ispravljenu verziju. Planirajte prelazak na podržanu granu.

Je li varijanta apache rizičnija od fpm?

Varijanta apache pokreće PHP kao Apache modul, dakle mod_php. Taj način rada PHP tim kod PHP2Shella ocjenjuje najvišim. Obje varijante trebaju ažuriranje; kod mod_php-a posebno je potrebna žurba.

Izvori

Hitni kontakt

Svaki sat se računa. Pišite nam odmah.

Ukratko opišite sustav, verziju PHP-a i opažanje. Javit ćemo Vam se, razjasniti situaciju i raditi na daljinu dok incident nije zaključen i dokumentiran.

Hitna pomoć