Īsi sakot: Mākoņa un PaaS sniedzējiem ielāpu automātiski neievieš sniedzējs. Ja viņš pārvalda PHP izpildes vidi, viņš to atjaunina, taču bieži tikai ar nākamo deployment. Ja attēlus vai būvējumus veidojat paši vai paši darbinat platformu, jums jāpārbūvē un jāizvieto no jauna. Izšķirošā vienmēr ir izpildes vide, ko jūsu vietne šobrīd piegādā.
PHP atjauninājums PaaS: kam pieder izpildes vide?
Platformas pakalpojumi, speciālistu valodā PaaS (Platform as a Service), uzņēmumiem noņem servera darbināšanas rūpes. Jūs augšupielādējat kodu, platforma to būvē un darbina. PHP2Shell gadījumā no tā rodas tipiska nenoteiktība: kam īsti jāatjaunina PHP?
Vercel savā PHP2Shell biļetenā to formulē precīzi: ar lokālās izstrādes vides, lietojumprogrammas koda vai spraudņu atjauninājumu nepietiek. Izšķirošā ir tā deployment PHP izpildes vide, kas patiešām atbild uz pieprasījumiem. Vai šī izpildes vide ir ielāpota, ir atkarīgs no tā, kas to nodrošina un kad tā pēdējoreiz tika būvēta.
Četru darbības modeļu salīdzinājums
Sniedzēju nosaukumi atšķiras. Ielāpa jautājuma ziņā lielāko daļu piedāvājumu var piesaistīt vienam no šiem modeļiem:
| Modelis | Kas atjaunina PHP? | Kas jums jādara |
|---|---|---|
| Sniedzēja pārvaldīta izpildes vide | Sniedzējs | Saņemt apstiprinājumu, vajadzības gadījumā veikt jaunu deployment, lai jaunā izpildes vide stātos spēkā |
| Būvējumos balstīta izpildes vide (buildpack) | Sniedzējs nodrošina jauno versiju, jūsu būvējums to nofiksē | Aktivizēt jaunu būvējumu, versiju pārbaudīt būvēšanas žurnālā |
| Savs konteineru attēls | Jūs | Pārbūvēt attēlu ar labotu PHP un izvietot |
| Pašu darbināta platforma | Jūs, platformai un lietojumprogrammām | Ielāpot platformu un katru lietojumprogrammu atsevišķi |
Daudzi uzņēmumi izmanto vairākus modeļus vienlaikus, piemēram, pārvaldītu izpildes vidi vietnei un savus konteinerus iekšējiem rīkiem. Katrai lietojumprogrammai tāpēc vajadzīga sava atbilde.
Lamatas slēpjas vārdā „pārvaldīts”. Pat ja sniedzējs izpildes vidi kopj, jau izvietota lietojumprogramma bieži turpina darboties ar stāvokli, ar kādu tā tika būvēta. Jaunā versija tad stājas spēkā tikai nākamajā būvējumā vai deployment. Dažas platformas turklāt uztur sasniedzamus vecākus deployment vai priekšskatījuma vides zem savām adresēm. Tāpēc jautājiet ne tikai, vai sniedzējs ir ielāpojis, bet arī, no kura brīža jūsu darbojošās instances ielāpu izmanto un kas notiek ar veciem deployment.
Ko Vercel un Coolify saka par PHP2Shell
Divi sniedzēji savus norādījumus ir publiskojuši. Tie ir pamācoši, jo skaidri nosauc paša aizsardzības pasākumu robežas.
Vercel saskaņā ar savu biļetenu pirms publicēšanas savā Web Application Firewall (WAF), tīmekļa pieprasījumu filtrā, aktivizēja aizsardzības noteikumus. Tie automātiski attiecas uz PHP funkcijām Vercel un uz pieprasījumiem, ko Vercel pārsūta uz ārējiem PHP serveriem. Vienlaikus Vercel prasa PHP izpildes vidi nekavējoties atjaunināt uz labotu versiju. Konteineru deployment jāpārbūvē ar atjauninātu PHP bāzes attēlu un jāizvieto. Pieprasījumus, kas apiet Vercel un iet tieši uz ārēju PHP serveri, WAF neaptver.
Coolify, pašu darbināma platforma, saskaņā ar savu advisory bija skarta pati: visi 4. versijas atzari. Kā pirmos labotos stāvokļus Coolify min 4.0.1, 4.1.3, 4.2.1, 4.3.24 un 4.4.7 un iesaka 4.4.7. Svarīgs ir papildinājums: Coolify atjauninājums neatjaunina PHP lietojumprogrammas, ko ar to darbinat. To izpildes vides vai attēli jāatjaunina atsevišķi un jāpārbūvē vai jāizvieto. Saskaņā ar Coolify tas attiecas arī uz Coolify Cloud klientiem un arī aiz Cloudflare, jo Cloudflare noteikumi pārbauda tikai satiksmi, kas iet caur Cloudflare.
Ko Cloudflare noteikumi spēj, izvērtē raksts Cloudflare aizsardzības noteikumi pret PHP2Shell.
Kā pārbaudīt piegādājošo izpildes vidi
Šie soļi darbojas neatkarīgi no sniedzēja. Tie vērsti uz pierādījumu, nevis uz sajūtu.
- Uzskaitīt visas vides: produkcija, staging, priekšskatījuma deployment un fona pakalpojumi, piemēram, queue worker. Katrai videi var būt cita izpildes vide.
- Nolasīt izpildes vides versiju katrai videi: sniedzēja konsolē, būvēšanas žurnālā vai projekta konfigurācijas failā.
- Pārbaudīt pēdējā deployment datumu: ja tas ir pirms 21.10.2026, ar lielu varbūtību vēl darbojas vecā izpildes vide, ja sniedzējs skaidri neapstiprina ko citu.
- Ielūkoties darbojošajā instancē: ja platforma piedāvā konsoli, nākamā komanda parāda instances versiju.
- Iekļaut ārējos PHP serverus: serveriem, uz kuriem platforma pārsūta pieprasījumus, vajadzīgs savs atjauninājums, un tiem nevajadzētu būt tieši sasniedzamiem no interneta.
# Darbojošās instances konsolē (ja sniedzējs to piedāvā)
php -v
php -r 'echo PHP_VERSION, " ", PHP_SAPI, PHP_EOL;'
Sagaidāmas ir 8.5.12, 8.4.27, 8.3.36 vai 8.2.35 vai sniedzēja apstiprināts backport. Ņemiet vērā, ka instances komandrinda ne vienmēr izmanto to pašu izpildes vidi, ko tīmekļa process. Pārbaudei neveidojiet publiski sasniedzamu phpinfo failu. Kā pareizi iztulkot versijas numuru un backport stāvokli, apraksta PHP versijas un ielāpa stāvokļa pārbaude.
Jauns deployment nenoņem ļaunprogrammatūru, kas iepriekš nonākusi pastāvīgajās krātuvēs, piemēram, augšupielāžu apjomos vai datubāzē. Šīs jomas pārbaudiet atsevišķi.
Atbildību nofiksēt rakstiski
PHP2Shell parāda, cik neskaidra bieži ir robeža starp platformu un klientu. Katrai lietojumprogrammai nofiksējiet, kas nodrošina izpildes vidi, kas pārbūvē pēc drošības paziņojumiem un kā sniedzējs ielāpus paziņo. Tur ietilpst arī tas, kam steidzamā gadījumā ir piekļuve platformas konsolei un kas ārpus darba laika drīkst aktivizēt jaunu būvējumu.
Pašu dokumentācijai pietiek ar īsu tabulu katrai lietojumprogrammai: platforma, darbības modelis, PHP atzars, pēdējā būvējuma datums, atbildīgais. Kam šis saraksts būs pie rokas nākamā paziņojuma brīdī, ietaupa dienas, ko daudzas komandas pēc 21. oktobra pavadīja meklējot. Konteineru lietojumprogrammām tur pieder arī tas, kas uztur bāzes attēlu; fonu izskaidro PHP konteineros.
Pārvaldītiem serveriem bez PaaS rakstura ir spēkā līdzīgi jautājumi, ko esam apkopojuši sadaļā Pārvaldīts serveris: noskaidrot atbildību.
Kā PHP SOS palīdz konkrēti?
- Piesaistīt: Mēs katru jūsu lietojumprogrammu piesaistām darbības modelim un noskaidrojam, kas nodrošina PHP izpildes vidi.
- Apliecināt: Mēs pārbaudām izpildes vidi, būvējuma datumu un deployment katrai videi un dokumentējam rezultātu.
- Pārbūvēt un izvietot: Ar PHP ielāpu pakalpojumu mēs atjauninām attēlus un būvējumus un kontrolēti tos izvietojam.
- Aizvērt robus: Mēs pārbaudām, vai ārējie PHP serveri ir tieši sasniedzami, un ierobežojam piekļuvi.
Biežāk uzdotie jautājumi
Vai mans PaaS sniedzējs PHP ielāpo automātiski?
Tas atkarīgs no modeļa. Ja sniedzējs pārvalda izpildes vidi, viņš to atjaunina, taču bieži tikai jauniem deployment. Ja attēlus vai būvējumus veidojat paši, jums jāpārbūvē un jāizvieto no jauna. Palūdziet apstiprināt stāvokli savai lietojumprogrammai.
Vai manas platformas sniedzēja WAF pret PHP2Shell pietiek?
Nē. Vercel un Coolify skaidri raksta, ka aizsardzības noteikumi PHP izpildes vides atjauninājumu neaizstāj. Turklāt tie darbojas tikai satiksmei, kas iet caur platformu.
Vai pēc ielāpa jāveic jauns deployment?
Bieži jā. Vercel konteineru deployment gadījumā min pārbūvi ar atjauninātu PHP bāzes attēlu un jaunu deployment. Platformās, kas balstās uz būvējumiem, izpildes vide tiek nofiksēta būvēšanas laikā; ielāpu pārņem tikai jauns būvējums.
Es izmantoju Coolify. Vai pietiek ar Coolify atjauninājumu?
Nē. Saskaņā ar Coolify advisory atjauninājums atjaunina tikai pašu Coolify. Jūsu lietojumprogrammu PHP izpildes vides vai konteineru attēli jāatjaunina atsevišķi un jāpārbūvē vai jāizvieto no jauna.