Sitwazzjoni attwali: PHP2Shell. Żewġ vulnerabbiltajiet kritiċi ta' PHP (CVSS 9,2) jippermettu kodiċi malizzjuż mingħajr login. Patches mill-21/10/2026.X'għandu jsir issa →

CI/CD: ibni l-images ta' PHP mill-ġdid awtomatikament

Image jiskadi anke mingħajr bidla fil-kodiċi. Bi builds skedati, verifika tal-verżjoni u rollout permezz ta' digest, il-patches ta' PHP jaslu b'mod affidabbli fil-produzzjoni.

Stat 6 min. qariHosting u distribuzzjonijiet

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.

  1. Roll-out permezz ta' digest: Il-provvediment jirreferi għad-digest tal-image il-ġdid, mhux għal tag li jimxi.
  2. L-ewwel staging, imbagħad produzzjoni: Testijiet awtomatiċi fuq kopja jaqbdu ksur minn images bażi ġodda.
  3. Ivverifika fl-operat: Wara r-rollout esegwixxi php -v fil-container li qed jaħdem u qabbel id-digest mal-build.
  4. 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 --pull u --no-cache l-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.
Importanti

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.

Sorsi

Kuntatt immedjat

Kull siegħa tgħodd. Iktbu lilna issa.

Iddeskrivu fil-qosor is-sistema, il-verżjoni ta' PHP u dak li osservajtu. Nikkuntattjawkom, niċċaraw is-sitwazzjoni u naħdmu mill-bogħod sakemm l-inċident jingħalaq u jiġi ddokumentat.

Għajnuna immedjata