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

FrankenPHP turvamine

FrankenPHP toob PHP kaasa oma programmis. Distributsiooni uuendusest seetõttu ei piisa: binaar või tõmmis tuleb uuesti ehitada ja kõik tööprotsessid uuesti käivitada.

Seis Lugemisaeg 4 minServer ja majutus

Lühidalt: FrankenPHP on Caddy-l põhinev rakendusserver, mis põimib PHP oma programmi. FrankenPHP turvalisuse jaoks pärast PHP2Shelli tähendab see: loevad mitte distributsiooni PHP paketid, vaid PHP versioon FrankenPHP binaaris või konteineri tõmmises. Ehitage või laadige versioon parandatud PHP-ga ja käivitage kõik tööprotsessid uuesti.

Miks FrankenPHP-d paigatakse teisiti

Klassikalistes seadistustes tarnib distributsioon PHP-d paketina ja uuendus vahetab failid välja. FrankenPHP seevastu sisaldab PHP-d sisseehitatud teegina. Kes kasutab ametlikku binaari või sellele tuginevat konteineri tõmmist, saab PHP kaasa. apt upgrade hostis seda ei muuda.

PHP2Shell hõlmab turvauke CVE-2026-109618 ja CVE-2026-109619, kummagi hinne CVSS v4.0 9,2. PHP projekt nimetab FrankenPHP selgesõnaliselt mõjutatud töörežiimide hulgas. Parandatud on PHP 8.5.12, 8.4.27, 8.3.36 ja 8.2.35. Otsustav on seega, millise PHP versiooni vastu teie FrankenPHP on ehitatud.

Worker-režiim ja PHP2Shell

FrankenPHP saab rakendusi käitada worker-režiimis. Seal laaditakse rakendus üks kord ja töötleb seejärel palju päringuid järjest samas protsessis. See toob kiirust, kuid pikendab iga protsessi eluiga.

CVE-2026-109619 kirjeldab päringu sisemist olekut, mis võib pärast mälu vabastamist alles jääda; hilisem päring samas tööprotsessis saab seda kasutada enne, kui see lähtestatakse. Worker-režiimis on paljude päringute koostoime ühes protsessis tavaline. See ei ole põhjus worker-režiimist loobuda, küll aga selge põhjus teha uuendused ja taaskäivitused eriti hoolikalt. Tehnilised üksikasjad leiate lehelt CVE-2026-109619.

FrankenPHP turvalisus: kontrollige versiooni

Kontrollige sisseehitatud PHP versiooni otse töötavas süsteemis. Järgmised käsud ainult loevad; teenuste ja konteinerite nimed on näited.

# Installiertes Binary
frankenphp version

# Töötavas konteineris (konteineri nimi on näide)
docker exec app frankenphp version
docker exec app php -v

# Milline tõmmis tegelikult töötab? (Digest näitab täpset seisu)
docker inspect --format '{{.Image}} {{.Config.Image}}' app

Märkige väljundist üles PHP versioon. Kui see on parandatud seisudest varasem, on süsteem haavatav. Kontrollige alati töötavat konteinerit, mitte ainult viimati ehitatud tõmmist, sest uus tõmmis hakkab mõjuma alles konteinerite väljavahetamisega.

Paigaldage uuendus ja käivitage kõik tööprotsessid uuesti

Milline uuendus välja näeb, sõltub teie paigaldusest:

  • Binaar hostis: paigaldage uus FrankenPHP väljalase parandatud PHP versiooniga, käivitage teenus uuesti.
  • Konteiner: tooge baastõmmis parandatud PHP versiooniga, ehitage oma tõmmis uuesti ilma baaskihi vahemäluta, asendage konteiner.
  • Ise kompileeritud: ehitage uuesti parandatud PHP versiooni vastu, looge kõik laiendused uuesti sama versiooniga.
# Näide: hosti paigaldus systemd-teenusena
systemctl restart frankenphp

# Näide Docker Compose: ehitada uuesti ilma vahemäluta ja asendada konteiner
docker compose build --pull --no-cache
docker compose up -d --force-recreate

Seejärel kontrollige uuesti PHP versiooni töötavas konteineris ja protsesside käivitusaega. Worker-režiimis peab iga tööprotsess olema uuesti käivitatud. Kubernetese puhul kehtivad lisasammud, mida kirjeldab leht PHP paikamine Kubernetesis, konteinerite kohta üldiselt leht PHP paikamine Dockeri konteinerites.

Oluline

Silt nagu latest või põhiversioon tõmmise nimes ei garanteeri, et teil on uusim seis. Tooge baastõmmis aktiivselt uuesti ja kontrollige seejärel PHP versiooni töötavas konteineris.

Ajutised meetmed ja karastamine

Kui uuendust ei saa kohe teha, soovitab php.net ajutisi meetmeid, mis ei paku täielikku kaitset. FrankenPHP puhul seadke väärtused php.ini-s, mille FrankenPHP laadib, või Caddy seadistuse PHP sätete kaudu, mitte rakenduses funktsiooniga ini_set().

; php.ini konteineris või hostis
session.upload_progress.enabled = 0
post_max_size = 8M
upload_max_filesize = 6M

Üleslaadimisfunktsiooniga nimetab php.net post_max_size = 32M. PHP 8.5 puhul lisandub fatal_error_backtraces=0. Mälupiirang kuulub konteineri tasemele, näiteks konteineri mälulimiidina, mitte RLIMIT_AS või RLIMIT_DATA kaudu. Käivitage pärast iga muudatust kõik tööprotsessid uuesti.

Püsivaks tööks tasub viidata tõmmistele kindla digestiga, ehitada neid regulaarselt automaatselt uuesti ja võtta ehitusahelasse tõmmiseskanner. Paik ei eemalda ka pahavara, mis toodi sisse varem. Säilitage logid alates 20.10.2026; konteinerite puhul tähendab see nende kindlustamist enne asendamist.

Kes kasutab FrankenPHP-d staatiliselt ehitatud binaarina, peaks teadma, et seal on PHP kõrval ka kõik laiendused kindlalt sisse ehitatud. Uuendus tähendab seetõttu alati kogu binaari asendamist. Kontrollige pärast vahetust versiooni ja laaditud laienduste loendit, kas kõik on nagu varem kättesaadav, ning testige rakendust, enne kui vana seisu kõrvale heidate. Konteinerikeskkondades soovitatakse märgistada iga tõmmis ehituse kuupäevaga. Nii saate alati jälgida, milline seis millal töötas, ja kahtluse korral sihipäraselt tagasi minna, langemata uuesti haavatavasse seisu. Pidage tõmmise, PHP versiooni ja ajahetke seos oma dokumentatsioonis kirjas.

Kuidas PHP SOS konkreetselt aitab?

  • Kontrollime, milline PHP versioon teie FrankenPHP binaarides ja töötavates konteinerites tegelikult asub.
  • PHP paikamisteenuse kaudu ehitame tõmmised uuesti, asendame konteinerid ja käivitame kõik tööprotsessid uuesti, koos tõendiga.
  • Kindlustame logid enne väljavahetamist ja kontrollime rakendust jälgede suhtes.
  • Püsivaks tööks seadistame serveri karastamise raames automatiseeritud uuesti ehitamise ja tõmmiste kontrolli.

Korduma kippuvad küsimused

Kas apt- või dnf-uuendus aitab FrankenPHP puhul?

Ainult siis, kui FrankenPHP ise pärineb neist paketiallikatest ja on ehitatud paigatud PHP vastu. Sageli on PHP kindlalt FrankenPHP binaaris või konteineri tõmmises (image). Siis peate uuendama binaari või tõmmise.

Miks on töötaja režiim (worker mode) PHP2Shelli puhul eriti oluline?

Worker-režiimis jääb rakendus mällu ja töötleb palju päringuid järjest samas protsessis. CVE-2026-109619 puudutab just sisemist olekut, mis võib päringute vahel samas tööprotsessis alles jääda. Kõigi tööprotsesside taaskäivitus pärast uuendust on seetõttu kohustuslik.

Kuidas ma kontrollin, milline PHP versioon FrankenPHP-s peitub?

FrankenPHP binaar väljastab versioonikäsu korral sisseehitatud PHP versiooni. Konteineris saate käsu käivitada docker exec kaudu. Jälgige, et kontrollite versiooni tegelikult töötavas konteineris, mitte äsja ehitatud tõmmises.

Kas FrankenPHP jaoks on olemas eraldi ajutised meetmed?

Kehtivad php.net-i üldised soovitused. Seadke väärtused php.ini-s, mille FrankenPHP laadib, või Caddy faili PHP seadistuses, mitte rakenduses funktsiooniga ini_set(). Seejärel käivitage kõik tööprotsessid uuesti.

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