Fil-qosor: FrankenPHP huwa server tal-applikazzjonijiet ibbażat fuq Caddy li jinkorpora lil PHP fil-programm proprju tiegħu. Għas-sigurtà ta' FrankenPHP wara PHP2Shell dan ifisser: ma jgħoddux il-pakketti ta' PHP tad-distribuzzjoni, imma l-verżjoni ta' PHP fil-binary ta' FrankenPHP jew fl-image tal-kontenitur. Ibnu jew niżżlu verżjoni b'PHP irranġat u erġgħu ibdew il-workers kollha.
Għaliex FrankenPHP jiġi ppatchjat b'mod differenti
F'setups klassiċi d-distribuzzjoni twassal lil PHP bħala pakkett, u aġġornament jibdel il-fajls. FrankenPHP, min-naħa l-oħra, fih lil PHP bħala librerija integrata. Min juża l-binary uffiċjali jew image ta' kontenitur ibbażat fuqu, jirċievi lil PHP magħhom. apt upgrade fuq l-host ma jibdel xejn minn dan.
PHP2Shell jinkludi CVE-2026-109618 u CVE-2026-109619, kull waħda b'CVSS v4.0 9,2. Il-proġett PHP jelenka espliċitament lil FrankenPHP fost il-modalitajiet tat-tħaddim affettwati. Irranġati huma PHP 8.5.12, 8.4.27, 8.3.36 u 8.2.35. Id-deċiżiv għalhekk huwa kontra liema verżjoni ta' PHP inbena l-FrankenPHP tagħkom.
Il-modalità worker u PHP2Shell
FrankenPHP jista' jħaddem applikazzjonijiet fil-modalità worker. Hemm l-applikazzjoni titgħabba darba u mbagħad tittratta ħafna talbiet wara xulxin fl-istess proċess. Dan iġib veloċità, imma jtawwal il-ħajja ta' kull proċess.
CVE-2026-109619 jiddeskrivi stat intern ta' talba li jista' jibqa' wara li l-memorja tiġi meħlusa; talba aktar tard fl-istess worker tista' tużah qabel ma jiġi reset. Fil-modalità worker l-interazzjoni ta' ħafna talbiet f'proċess wieħed hija n-normalità. Din mhijiex raġuni biex tirrinunzjaw għall-modalità worker, imma raġuni ċara biex l-aġġornamenti u r-restarts isiru b'attenzjoni partikolari. Dettalji tekniċi jinsabu f'CVE-2026-109619.
Sigurtà ta' FrankenPHP: nivverifikaw il-verżjoni
Iċċekkjaw il-verżjoni integrata ta' PHP direttament fis-sistema li taħdem. Il-kmandi li ġejjin jaqraw biss; l-ismijiet tas-servizzi u tal-kontenituri huma eżempji.
# Installiertes Binary
frankenphp version
# Im laufenden Container (Containername als Beispiel)
docker exec app frankenphp version
docker exec app php -v
# Welches Image läuft tatsächlich? (Digest zeigt den exakten Stand)
docker inspect --format '{{.Image}} {{.Config.Image}}' app
Innotaw il-verżjoni ta' PHP mill-output. Jekk tkun qabel l-istati rranġati, is-sistema hija vulnerabbli. Iċċekkjaw dejjem il-kontenitur li jaħdem, mhux biss l-aħħar image mibnija, għax image ġdida taħdem biss wara li l-kontenituri jiġu sostitwiti.
Installaw l-aġġornament u erġgħu ibdew il-workers kollha
Kif jidher l-aġġornament jiddependi mill-installazzjoni tagħkom:
- Binary fuq l-host: installaw release ġdid ta' FrankenPHP b'verżjoni ta' PHP irranġata, erġgħu ibdew is-servizz.
- Kontenitur: ġibu image bażi b'verżjoni ta' PHP irranġata, ibnu mill-ġdid l-image proprja mingħajr cache għas-saff bażi, issostitwixxu l-kontenitur.
- Ikkompilat minnkom: ibnu mill-ġdid kontra l-verżjoni ta' PHP irranġata, oħolqu mill-ġdid l-estensjonijiet kollha bl-istess verżjoni.
# Beispiel Host-Installation als systemd-Dienst
systemctl restart frankenphp
# Beispiel Docker Compose: neu bauen ohne Cache und Container ersetzen
docker compose build --pull --no-cache
docker compose up -d --force-recreate
Wara, iċċekkjaw mill-ġdid il-verżjoni ta' PHP fil-kontenitur li jaħdem u l-ħin tal-bidu tal-proċessi. Fil-modalità worker kull worker irid ikun inbeda mill-ġdid. Fil-każ ta' Kubernetes japplikaw passi addizzjonali, deskritti f'Patching ta' PHP f'Kubernetes, u għall-kontenituri b'mod ġenerali f'Patching ta' PHP fil-kontenituri Docker.
Tag bħal latest jew verżjoni prinċipali fl-isem tal-image ma jiggarantixxix li għandkom l-aħħar stat. Ġibu l-image bażi attivament mill-ġdid u wara iċċekkjaw il-verżjoni ta' PHP fil-kontenitur li jaħdem.
Miżuri temporanji u tisħiħ
Jekk l-aġġornament ma jistax isir minnufih, php.net jirrakkomanda miżuri temporanji li ma joffrux protezzjoni sħiħa. F'FrankenPHP tissettjaw il-valuri fil-php.ini li FrankenPHP iġorr, jew permezz tal-issettjar ta' PHP fil-konfigurazzjoni ta' Caddy, mhux b'ini_set() fl-applikazzjoni.
; php.ini im Container oder auf dem Host
session.upload_progress.enabled = 0
post_max_size = 8M
upload_max_filesize = 6M
Meta jkun hemm funzjoni ta' upload, php.net jissuġġerixxi post_max_size = 32M. Fuq PHP 8.5 jiżdied fatal_error_backtraces=0. Il-limitu tal-memorja jappartjeni fil-livell tal-kontenitur, pereżempju permezz tal-limitu tal-memorja tal-kontenitur, mhux permezz ta' RLIMIT_AS jew RLIMIT_DATA. Wara kull bidla erġgħu ibdew il-workers kollha.
Għat-tħaddim fit-tul jiswa li tirreferu għal images b'digest fiss, li tibnuhom mill-ġdid regolarment b'mod awtomatiku u li tqiegħdu skaner tal-images fil-katina tal-bini. Patch barra minn hekk ma jneħħix malware li tkun ġiet introdotta qabel. Żommu l-logs mill-20/10/2026 'il quddiem; fil-każ tal-kontenituri dan ifisser li jinżammu qabel ma jiġu sostitwiti.
Min juża FrankenPHP bħala binary mibni b'mod statiku għandu jkun jaf li fih, minbarra PHP, l-estensjonijiet kollha huma integrati fiss. Aġġornament għalhekk dejjem ifisser li tissostitwixxu l-binary kollu. Wara s-sostituzzjoni iċċekkjaw il-verżjoni u l-lista tal-estensjonijiet mgħobbija, biex tivverifikaw jekk kollox għadu disponibbli bħal qabel, u ittestjaw l-applikazzjoni qabel ma tarmu l-istat il-qadim. F'ambjenti tal-kontenituri huwa rakkomandabbli li kull image tiġi mmarkata bid-data tal-bini. B'hekk tistgħu fi kwalunkwe ħin tara liema stat kien jaħdem meta, u fil-każ ta' dubju terġgħu lura b'mod immirat, mingħajr ma terġgħu taqgħu fuq stat vulnerabbli. Żommu l-assenjazzjoni ta' image, verżjoni ta' PHP u mument fid-dokumentazzjoni tagħkom.
Kif tgħin PHP SOS b'mod konkret?
- Niċċekkjaw liema verżjoni ta' PHP tinsab verament fil-binaries ta' FrankenPHP u fil-kontenituri tagħkom li jaħdmu.
- Permezz tas-servizz ta' patch ta' PHP nibnu mill-ġdid l-images, nissostitwixxu l-kontenituri u nerġgħu nibdew il-workers kollha, bi prova.
- Nissalvaw il-logs qabel is-sostituzzjoni u niċċekkjaw l-applikazzjoni għal traċċi.
- Għat-tħaddim fit-tul inwaqqfu rebuilds awtomatizzati u verifiki tal-images fil-qafas tat-tisħiħ tas-server.
Mistoqsijiet frekwenti
Aġġornament b'apt jew dnf jgħin ma' FrankenPHP?
Biss jekk FrankenPHP innifsu jiġi minn dawn is-sorsi tal-pakketti u jkun mibni kontra l-PHP ippatchjat. Spiss PHP huwa inkluż fiss fil-binary ta' FrankenPHP jew fl-image tal-kontenitur. F'dak il-każ trid taġġorna l-binary jew l-image.
Għaliex il-modalità worker hija partikolarment importanti f'PHP2Shell?
Fil-modalità worker l-applikazzjoni tibqa' fil-memorja u tittratta ħafna talbiet wara xulxin fl-istess proċess. CVE-2026-109619 jikkonċerna preċiżament stat intern li jista' jibqa' bejn it-talbiet fl-istess worker. Restart tal-workers kollha wara l-aġġornament huwa għalhekk obbligatorju.
Kif nivverifika liema verżjoni ta' PHP hemm f'FrankenPHP?
Il-binary ta' FrankenPHP, meta jissejjaħ għall-verżjoni, juri l-verżjoni ta' PHP integrata. Fil-kontenitur tistgħu teżegwixxu l-kmand permezz ta' docker exec. Oqogħdu attenti li tivverifikaw il-verżjoni fil-kontenitur li verament qed jaħdem, mhux fl-image li għadu kemm inbena.
Hemm miżuri temporanji speċifiċi għal FrankenPHP?
Japplikaw l-indikazzjonijiet ġenerali ta' php.net. Tissettjaw il-valuri fil-php.ini li FrankenPHP iġorr, jew fil-konfigurazzjoni ta' PHP tal-fajl Caddy, mhux b'ini_set() fl-applikazzjoni. Wara erġgħu ibdew il-workers kollha.