Praegune olukord: PHP2Shell. Kaks kriitilist PHP turvaauku (CVSS 9,2) lubavad kahjulikku koodi ilma sisselogimata. Paigad alates 21.10.2026.Mida nüüd teha →

Ametlikud PHP Dockeri pildid: sildid, digestid ja uuesti ehitamine

Ametliku PHP pildi silt on osuti, mis liigub ajaga uutele seisudele. Kes teab, mida tähendavad silt, variant ja digest, valib õige pildi ja saab paigatud seisu tõendada.

Seis Lugemisaeg 5 minVeebimajutus ja distributsioonid

Lühidalt: Docker Hubi ametlikku PHP pilti on palju silte, mis ühendavad versiooni, variandi (näiteks cli, fpm, apache) ja baassüsteemi. Silt on osuti, mis liigub pärast uuesti ehitamist uutele seisudele; ainult digest tähistab täpselt ühte seisu. PHP2Shelli vastu vajate pilti, milles on PHP 8.5.12, 8.4.27, 8.3.36 või 8.2.35, kontrollituna käsuga php -v, ning oma piltide uuesti ehitamist sellele.

Miks silt üksi vähe ütleb

Paljud meeskonnad kirjutavad oma Dockerfile'i rea nagu FROM php:8.3-fpm ja unustavad selle seejärel. See töötab seni, kuni keegi ei küsi, milline PHP versioon tegelikult töötab. Alates PHP2Shellist küsivad kõik.

Vastus ei seisa Dockerfile'is. Silt nagu 8.3-fpm osutab tõmbamise hetkel selle haru uusimale seisule. Kui pilt tõmmati enne 21. oktoobrit ja seda pole sestsaadik uuendatud, sisaldab see haavatavat versiooni, kuigi silt osutab täna parandatud seisule. Docker Official Images juhiste kohaselt ehitatakse pilte aktiivselt uuesti, ka turvaparanduste puhul. Teie kohalikku seisu see aga ei puuduta.

Kogu protsessi uuesti ehitamisest uuesti loodud konteinerini kirjeldab leht PHP paikamine Dockeri konteinerites. Siin on jutt eelküsimusest: milline pilt on õige ja kuidas selle seisu tõendate?

PHP Dockeri pildi sildid: nii need on üles ehitatud

Sildid koosnevad kuni kolmest osast. Docker Hub näitab näiteid nagu php:8.2-cli, php:8.2-fpm-alpine või php:8.4.27-zts-alpine3.24.

Osa Näide Tähendus
Versiooni näit 8.4.27 või 8.4 täisversioon jääb selle seisu juurde, haru näit liigub uute paikadega kaasa
Variant cli, fpm, apache, zts PHP töörežiim konteineris
Baassüsteem alpine3.24, bookworm, trixie aluseks olev Alpine'i või Debiani versioon

Variandid ei ole PHP2Shelli mõttes võrdväärsed. fpm käitab PHP-FPM-i, apache käitab PHP-d Apache'i moodulina ehk mod_php-na. Selle töörežiimi hindab PHP meeskond kõige kõrgemaks, sest seal näidati ekspluateerimist enne, kui rakenduse kood üldse käivitub. Lähemalt artiklis Miks mod_php on eriti ohustatud. Variant cli on mõeldud käsurea ülesannete jaoks.

Ka baassüsteemil on tagajärjed. Alpine'i pildid on väikesed, kuid kasutavad teistsugust C-teeki kui Debiani pildid; mõned laiendused või eelkompileeritud teegid käituvad seal teisiti. Ärge vahetage baassüsteemi seetõttu turvauuenduse kõrvalt, vaid jääge esialgu selle juurde, mida teie rakendus tunneb.

Mõistmiseks oluline: ametlikus pildis ei pärine PHP baasdistributsiooni pakettidest. Docker Hub kirjeldab, et PHP lähtekood asub pildis ja laiendused ehitatakse sisse abiskriptidega nagu docker-php-ext-install. Baassüsteemi paketiuuendus teie enda Dockerfile'is ei muuda PHP versiooni seetõttu midagi. Määrav on ainult see, millise ametliku pildi seisu peale ehitate.

Silt või digest: mis millal muutub

Digest on pildi sisu kontrollsumma, kirjutatud kujul sha256: koos pika märgijadaga. See muutub iga uuesti ehitamisega. Seetõttu sobib see tõendiks: kes digesti teab, teab täpselt, milline seis töötab.

Praktikas on end tõestanud tööjaotus:

  • Dockerfile'is kasutage haru silti, näiteks php:8.4-fpm, et uuesti ehitamine saaks automaatselt selle haru uusima paiga.
  • Juurutuses kasutage valmis ehitatud oma pildi digesti, et oleks üheselt selge, mida tarnitakse.
  • Dokumentatsioonis märkige mõlemad: silt, digest ja käsuga php -v kontrollitud versioon.

Kes fikseerib hoopis täisversiooni sildi nagu 8.3.35-fpm, ei saa kunagi automaatselt paika. See võib olla soovitud, kuid nõuab protsessi, mis tõstab sildi iga turvateate korral.

PHP2Shell: pildi kontroll enne kasutuselevõttu

Järgmised käsud tõmbavad pildi ja loevad teavet. Need ei muuda töötavaid konteinereid.

# Haru sildi praeguse seisu tõmbamine
docker pull php:8.4-fpm

# Milline PHP versioon pildis on?
docker run --rm php:8.4-fpm php -v

# Tõmmatud pildi digesti kuvamine
docker image inspect php:8.4-fpm --format '{{index .RepoDigests 0}}'

# Digesti ja platvormide päring otse registrist
docker buildx imagetools inspect php:8.4-fpm

imagetools päring näitab mitme platvormiga piltide puhul ülemist digesti ja selle all iga platvormi, näiteks linux/amd64 või linux/arm64, oma. Dokumenteerige digest, mille teie serverid tegelikult tõmbavad, ja arvestage, et teistsuguse arhitektuuriga arendusarvutid saavad teise platvormi digesti.

Kui php -v ei näita vähemalt haru parandatud versiooni, on pilt aegunud või pärineb vahemälust. Kontrollige siis, kas teie keskkond kasutab registri peegelt, mis annab välja vanu seisusid.

Versioonidele 8.1 ja vanemad PHP projekt ametlikke väljalaskeid enam ei anna. Nende harude ametlik pilt ei saa seetõttu sisaldada tavalist parandatud versiooni. Sildid, mida enam ei hooldata, jäävad Dockeri juhiste kohaselt kättesaadavaks, kuid neid enam ei uuendata.

Näpunäide

Pilt toob Docker Hubi andmetel kaasa php.ini-development ja php.ini-production ning soovitab tootmiskeskkonnas tungivalt tootmisversiooni. Oma sätted paigutage failina kataloogi $PHP_INI_DIR/conf.d/, ka php.net-i üleminekuväärtused.

Tüüpilised vead pildi valikul

  • Variant harjumusest: valitakse apache-variant, sest see käivitub lihtsalt, kuigi fpm eraldi veebiserveriga oleks võimalik.
  • Oma piltide uuesti ehitamata jätmine: baaspilt on ajakohane, sellest ehitatud rakenduse pilt mitte.
  • Mitmeastmelised ehitused märkamata: mitme FROM-reaga Dockerfile'is kohandatakse ainult üks.
  • Kõrvalpildid unustatud: töölised, cron-konteinerid ja haldustööriistad kasutavad oma silte.
  • Ainult latest peale lootmine: silt ei ütle midagi haru ja variandi kohta ning võib uue põhiharu korral ootamatult hüpata.

Kuidas uuesti ehitamist automatiseerida, et aegunud pilt ei jääks pikalt tööle, kirjeldab CI/CD: PHP piltide automaatne uuesti ehitamine. PHP põhitõdesid konteinerites selgitab PHP konteinerites.

Kuidas PHP SOS konkreetselt aitab?

  • Varude kontroll: Loeme välja, millised sildid, digestid ja PHP versioonid teie piltides ja töötavates konteinerites sisalduvad.
  • Variandi hindamine: Kontrollime, kas mod_php on vajalik või kas fpm eraldi veebiserveriga vähendab riski.
  • Uuesti ehitamine ja tõendamine: PHP-paigateenusega ehitame pildid parandatud alusel uuesti ja dokumenteerime sildi, digesti ja versiooni.
  • Protsessi kinnistamine: Seadistame Dockerfile'id ja juurutused nii, et järgmine paik jõuab kohale planeeritavalt.

Korduma kippuvad küsimused

Mis vahe on sildil ja digestil?

Silt nagu php:8.4-fpm on nimi, mis võib pärast iga uuesti ehitamist osutada uuele seisule. Digest on kontrollsumma, mis tähistab täpselt ühte muutumatut seisu. Tõendite ja reprodutseeritavate juurutuste jaoks on digest usaldusväärsem näitaja.

Milline silt sisaldab PHP2Shelli parandust?

Parandatud on PHP 8.5.12, 8.4.27, 8.3.36 ja 8.2.35. Täieliku versiooninumbriga silt näitab seisu otse. Lühemate siltide nagu 8.4-fpm puhul kontrollige pärast tõmbamist käsuga php -v, milline versioon tegelikult sisaldub.

Kas PHP 8.1 jaoks on olemas paigatud ametlik pilt?

PHP projekt ei anna versioonidele 8.1 ja vanemad enam ametlikke väljalaskeid. Nende harude ametlik pilt ei saa seetõttu sisaldada tavalist parandatud versiooni. Planeerige üleminek toetatud harule.

Kas apache-variant on riskantsem kui fpm?

Apache-variant käitab PHP-d Apache'i moodulina ehk mod_php-na. Selle töörežiimi hindab PHP meeskond PHP2Shelli puhul kõige kõrgemaks. Mõlemad variandid vajavad uuendust; mod_php puhul on kiirustamine eriti vajalik.

Allikad

Kohene kontakt

Iga tund loeb. Kirjutage meile kohe.

Kirjeldage lühidalt süsteemi, PHP versiooni ja tähelepanekut. Võtame teiega ühendust, selgitame olukorra välja ja töötame kaugtööna, kuni intsident on lõpetatud ja dokumenteeritud.

Kohene abi