Fil-qosor: Image ta' Docker fih PHP fl-istat tal-mument tal-bini u jiskadi anke mingħajr bidla fil-kodiċi. Min jibni l-images mill-ġdid awtomatikament, skedat u f'avviżi tas-sigurtà, jivverifika l-verżjoni ta' PHP fil-pipeline u jroll-out-ja permezz ta' digest, iġib patches bħal dik kontra PHP2Shell fil-produzzjoni b'mod ippjanat. Build aħdar waħdu mhuwiex prova; jgħodd il-verżjoni fil-container li qed jaħdem.
Għaliex images jiskadu mingħajr bidla fil-kodiċi
F'ħafna timijiet il-pipeline tal-build tibda biss meta xi ħadd ibiddel il-kodiċi. Għall-applikazzjoni dan huwa loġiku. Għas-sigurtà huwa problema, għax il-PHP fl-image ġej mill-image bażi mit-tag tal-aħħar build.
PHP2Shell għamel dan viżibbli. Il-verżjonijiet irranġati 8.5.12, 8.4.27, 8.3.36 u 8.2.35 dehru fil-21 ta' Ottubru 2026. Proġett li f'dawn il-jiem ħadd ma ħadem fuqu ma rċieva l-ebda build ġdid u baqa' jaħdem bil-PHP il-qadim, għalkemm l-image bażi kien ilu aġġornat. It-triq manwali minn din is-sitwazzjoni tiddeskriviha Kif tippatcja PHP f'containers ta' Docker. Dan l-artikolu juri kif timmekkanizzaha.
Ibni l-images Docker mill-ġdid awtomatikament: tliet attivaturi
Proċess robust jgħaqqad diversi attivaturi, biex ebda wieħed ma jkollu jġorr waħdu.
| Attivatur | Implimentazzjoni | X'għandek tqis |
|---|---|---|
| Skeda | workflow skedat, pereżempju kull ġimgħa | jiġbor patches anke mingħajr bidla fil-kodiċi |
| Image bażi ġdid | għodda li tissorvelja images bażi u tipproponi bidliet | taħdem l-aktar f'tags fissi tal-verżjoni |
| Avviż tas-sigurtà | bidu manwali tal-pipeline mit-tim tal-operat | teħtieġ persuna responsabbli ċara |
F'GitHub Actions l-avveniment schedule jieħu ħsieb l-iskeda. Skont id-dokumentazzjoni ta' GitHub juża s-sintassi cron b'ħames oqsma, jaħdem f'UTC u biss fuq il-branch standard. Orarji jistgħu jibdew bi dewmien meta t-tagħbija hija għolja, u f'repositories pubbliċi GitHub jiddiżattivahom wara 60 jum mingħajr attività. Dan l-aħħar jolqot proprju proġetti kwieti, jiġifieri eżattament dawk li l-aktar għandhom bżonn il-bini awtomatiku mill-ġdid.
Għat-tieni attivatur Dependabot, skont id-dokumentazzjoni ta' GitHub, jappoġġja l-ekosistema docker u jipproponi stati ġodda ta' images bażi bħala pull request. Għandek tkun taf żewġ restrizzjonijiet. L-ewwel, xi ħadd irid jivverifika u jgħaqqad il-pull request, inkella jibqa' mimdud. It-tieni, f'tag ta' fergħa bħal php:8.3-fpm fid-Dockerfile ma jinbidel xejn meta l-image bażi jinbena mill-ġdid. Għodda li tipproponi bidliet fit-test mbagħad m'għandha xejn x'tipproponi. Eżattament għalhekk għandek bżonn addizzjonalment il-bini skedat mill-ġdid.
It-tielet attivatur jinstema banali, imma fil-prattika spiss jonqos fuq il-mistoqsija min jattivah. Iddeċiedi min isegwi l-avviżi tas-sigurtà dwar PHP u min jista' jibda l-pipeline, anke fil-weekend. F'PHP2Shell bejn l-avviż bil-quddiem u l-patch kien hemm jum wieħed biss.
Pipeline li taqbad PHP skaduta
L-eżempju li ġej għal GitHub Actions jibni l-image kull ġimgħa u fuq talba, jivverifika l-verżjoni ta' PHP u jwaqqaf jekk tkun taħt l-istat irranġat. Registry, ismijiet u verżjoni minima adattahom.
name: php-image-rebuild
on:
schedule:
- cron: "0 3 * * 1" # it-Tnejn 03:00 UTC
workflow_dispatch: {} # bidu manwali f'avviżi tas-sigurtà
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Image ohne Cache und mit frischem Basis-Image bauen
run: docker build --pull --no-cache -t app:${{ github.run_id }} .
- name: PHP-Version prüfen (Mindeststand des Zweigs 8.3)
run: |
docker run --rm app:${{ github.run_id }} php -v
docker run --rm app:${{ github.run_id }} \
php -r 'exit(version_compare(PHP_VERSION, "8.3.36", ">=") ? 0 : 1);'
Il-verifika tal-verżjoni taħdem f'images uffiċjali ta' PHP, li n-numru tal-verżjoni tagħhom jindika l-istat reali. Jekk l-image tiegħek juża pakketti ta' PHP ta' distribuzzjoni, in-numru spiss jibqa' l-istess wara backport. Imbagħad minflok in-numru iċċekkja l-changelog tal-pakkett għan-numri CVE, kif deskritt fl-artikolu Kif tipprova n-numri CVE fil-changelog tal-pakkett.
Wara l-verifika, fil-prattika jsegwu tliet passi oħra: skennja l-image għal dgħufijiet magħrufa, imbuttah fir-registry bid-data u d-digest u għaddi d-digest lill-provvediment. Liema tags u varjanti jaqblu bħala bażi tispjegah Images uffiċjali Docker ta' PHP.
Mill-build sal-container li qed jaħdem
L-iżball l-aktar komuni tal-ħsieb: il-pipeline hija ħadra, allura kollox huwa ppatchjat. Fil-fatt l-image il-ġdid biss qiegħed fir-registry. Il-patch isir effettiv biss meta kull container jinħoloq mill-ġdid mill-image il-ġdid.
- Roll-out permezz ta' digest: Il-provvediment jirreferi għad-digest tal-image il-ġdid, mhux għal tag li jimxi.
- L-ewwel staging, imbagħad produzzjoni: Testijiet awtomatiċi fuq kopja jaqbdu ksur minn images bażi ġodda.
- Ivverifika fl-operat: Wara r-rollout esegwixxi
php -vfil-container li qed jaħdem u qabbel id-digest mal-build. - Illimita t-triq lura: L-image il-qadim jibqa' disponibbli għal triq qasira lura, imma fih il-PHP vulnerabbli.
F'Kubernetes japplikaw regoli proprji, pereżempju dwar il-pull policy; jinsabu taħt Kif tippatcja PHP f'Kubernetes.
Lakuni tipiċi fil-katina
- Cache tal-build fuq ir-runner: Mingħajr
--pullu--no-cachel-image bażi l-qadim terġa' tintuża. - Mirror tar-registry: Cache intern għadu jservi l-istat l-antik tal-image bażi.
- Builds b'diversi stadji: Tgħodd il-verżjoni ta' PHP tal-aħħar stadju, imma spiss jiġi vverifikat biss l-ewwel.
- Images sekondarji: Queue workers, containers tal-cron u għodod interni għandhom pipelines proprji jew xejn.
- Digests miktuba fissi: Digest tal-image bażi miktub darba qatt ma jiġi aġġornat jekk l-ebda għodda ma tissorveljah.
Bini mill-ġdid jissostitwixxi PHP, mhux id-data. Kodiċi malizzjuż li daħal qabel il-patch f'volumes, folders tal-upload jew fid-database jibqa' u jrid jiġi vverifikat separatament.
Min jirreaġixxi meta l-bini mill-ġdid jonqos?
Bini awtomatiku mill-ġdid huwa tajjeb daqs ir-reazzjoni għall-falliment tiegħu. Jekk il-verifika tal-verżjoni tindika jew il-build jinqata' minħabba image bażi mibdul, xi ħadd irid jinduna. F'ħafna timijiet messaġġi bħal dawn jispiċċaw f'kaxxa tal-posta li ħadd ma jaqra, jew f'kanal fejn builds ħomor ilhom parti mill-ħajja ta' kuljum.
Regola ċara taħdem tajjeb: bini mill-ġdid tas-sigurtà li jfalli huwa ticket b'persuna responsabbli u terminu, mhux avviż fost ħafna. Żomm ukoll għal kull image imwassal id-data, id-digest u l-verżjoni ta' PHP vverifikata. Din il-lista twieġeb fl-avviż li jmiss fi ftit minuti liema applikazzjonijiet huma affettwati, u isservi lil awdituri jew assiguraturi bħala prova. Kif minn dan joħroġ proċess permanenti jiddeskrivih Ġestjoni tal-patches bħala proċess minflok tifi n-nar.
Kif tgħin PHP SOS b'mod konkret?
- Niċċekkjaw il-pipelines: Inħarsu lejn il-ktajjen tal-build u tar-rollout tagħkom u nuru fejn patch jista' jibqa' mwaqqaf.
- Nimmekkanizzaw il-bini mill-ġdid: Nissettjaw builds skedati, verifika tal-verżjoni u rollout permezz ta' digest.
- Nirreġistraw l-images kollha: Nassenjaw lil kull container li qed jaħdem il-pipeline tiegħu, anke images sekondarji u qodma.
- Nieħdu ħsieb fit-tul: Fil-Kuntratt ta' manutenzjoni tas-sigurtà insegwu l-avviżi tas-sigurtà u nattivaw bini mill-ġdid.
Mistoqsijiet frekwenti
Kemm-il darba għandu jinbena mill-ġdid image ta' PHP?
Numru fiss ma jeżistix. Taħdem tajjeb build regolari skedat, pereżempju kull ġimgħa, flimkien ma' build immedjat f'avviżi tas-sigurtà. Deċiżiv huwa li patch ġdid ma jkollux bżonn jistenna l-bidla tal-kodiċi li jmiss.
Build b'suċċess huwa biżżejjed bħala prova?
Le. Build jippruva biss li jeżisti image ġdid. Biss meta l-containers li qed jaħdmu jinħolqu mill-ġdid minn dan l-image u php -v fih juri l-verżjoni rranġata, il-patch ikun effettiv.
Għaliex wara l-bini mill-ġdid xorta tidher il-verżjoni l-qadima ta' PHP?
Kawżi komuni huma cache tal-build li terġa' tuża l-image bażi l-qadim, mirror tar-registry b'stat qadim jew it-tieni linja FROM f'build b'diversi stadji. Ibni b'--pull u --no-cache u ivverifika kull stadju.
Dependabot jista' jaġġorna images bażi?
Skont id-dokumentazzjoni ta' GitHub, Dependabot jappoġġja l-ekosistema Docker għal aġġornamenti tal-verżjonijiet u tas-sigurtà. Jipproponi bidliet fl-images bażi bħala pull request. Il-bini mill-ġdid b'tag li jibqa' l-istess dan ma jissostitwihx.