Pažeidžiamumų šalinimo ataskaita
PHP2Shell pataisų įdiegimo patikra
Būklės įvertinimas
GeraiReikia gerintiRizika
Prieš 48
Prieš 31
Prieš 58
Prieš 38
Prieš 92
Įvertinimai apibendrina šios ataskaitos patikras: saugumas sudaro 40 %, atsarginės kopijos 25 %, atnaujinimai 20 %, našumas 15 %. Jie apibūdina riziką užfiksuotu metu ir nėra sertifikatas.
1Santrauka
Gamybiniame žiniatinklio serveryje veikė PHP 8.3.35, kurią paveikia abu PHP2Shell pažeidžiamumai. Suderintu priežiūros laiku atnaujinome PHP iki 8.3.36, iš naujo paleidome visus PHP-FPM procesus ir patvirtinome, kad programą dabar aptarnauja atnaujinta vykdymo aplinka. Visos sutartos funkcinės patikros sėkmingos, naujų klaidų neužfiksuota.
Peržiūros metu taip pat nustatyta už sutartos apimties ribų veikianti nebepalaikoma PHP 7.4 procesų grupė, laukiantis branduolio perkrovimas ir atsarginių kopijų spragos. Jos neturi įtakos PHP2Shell pataisai, tačiau turėtų būti pašalintos. Kiekviena jų su prioritetu nurodyta rekomendacijose.
- PHP2Shell būsena
- Atnaujinta
- Funkcinės patikros
- Sėkmingos 8 iš 8
- Prastovos
- Nenustatyta
- Tolesni veiksmai
- 6, iš jų 2 aukšto prioriteto
2Apimtis ir metodika
Įtraukta į apimtį
- Vienas gamybinis serveris,
web-01 - PHP-FPM procesų grupė
wwwaptarnaujanti parduotuvės programą - PHP CLI, naudojama suplanuotoms užduotims
- Sutartos prisijungimo, paieškos, atsiskaitymo, formų, failų įkėlimo ir suplanuotų užduočių patikros
Neįtraukta į apimtį
- PHP 7.4 procesų grupė
legacy(nurodyta ataskaitoje, nekeista) - Duomenų bazės serverio vidinė konfigūracija ir programos kodas
- Kenkėjiškų programų ar įsilaužimo tyrimas
- Testavimo ir kūrimo aplinkos
Metodika
Inventorizacija tik skaitymo režimu per SSH, naudojant ribotos galiojimo trukmės raktą; paketų kilmė patikrinta pagal tiekėjo saugyklą ir PHP saugumo pranešimą; prieš bet kokį pakeitimą sukurtas momentinis vaizdas ir patikrintas jo paleidimas; atnaujinimas įdiegtas per sistemos paketų tvarkyklę; procesai paleisti iš naujo; funkcinės patikros atliktos su kliento testinėmis paskyromis. Laikina prieiga panaikinta 22:31.
3Serverio inventorizacija
Užfiksuota darbų laiko pradžioje, prieš bet kokius pakeitimus.
| Serverio vardas | web-01.example-retail.test |
|---|---|
| Paskirtis | Gamybinis žiniatinklio ir programų serveris |
| Priegloba | Virtualusis privatusis serveris, 4 vCPU, 8 GB atminties |
| Operacinė sistema | Ubuntu 24.04.3 LTS |
| Veikiantis branduolys | 6.8.0-85-generic Įdiegtas naujesnis branduolys, laukiama perkrovimo |
| Veikimo laikas | 142 dienos |
| Diskas | 80 GB sistemos tomas, užimta 61 % |
| Žiniatinklio serveris | nginx 1.24.0 |
| PHP-FPM procesų grupės | www (PHP 8.3), legacy (PHP 7.4) |
| Duomenų bazė | MySQL 8.0.43 atskirame valdomame serveryje |
| PHP paketų šaltinis | ppa:ondrej/php |
| Automatiniai saugumo atnaujinimai | Išjungta |
| Laiko sinchronizavimas | Veikia |
| Stebėsena | Tik pasiekiamumo tikrinimas; įspėjimų dėl išteklių ar programos klaidų nėra |
4PHP vykdymo aplinkos
Nustatyti visi serveryje esantys PHP vykdomieji failai ir procesų grupės, įskaitant nepatenkančius į sutartą apimtį.
| Vykdymo aplinka | Aptarnauja | Prieš | Po | Būsena |
|---|---|---|---|---|
php8.3-fpm / www | Parduotuvės programa | 8.3.35 | 8.3.36 | Atnaujinta |
php8.3-cli | Suplanuotos užduotys | 8.3.35 | 8.3.36 | Atnaujinta |
php7.4-fpm / legacy | Archyvinė parduotuvė adresu /old-shop | 7.4.33 | 7.4.33 | Reikia veiksmų |
PHP 7.4 palaikymas baigėsi 2022 m. lapkritį, ir PHP projektas jai nebeteikia saugumo pataisų. Vien pagal versijos duomenis negalima atmesti, kad senoji procesų grupė yra pažeidžiama; žr. rekomendaciją R1.
Konfigūracijos pastebėjimai
expose_phpišjungtas irdisplay_errorsgamybinėje aplinkoje išjungtas.- OPcache įjungtas, jam skirta 128 MB atminties – programai to pakanka.
session.upload_progress.enabledįjungtas, tačiau programa jo nenaudoja.- Kiekviena procesų grupė veikia atskiro sistemos naudotojo teisėmis ir naudoja atskirą lizdą.
5Pažeidžiamumų būsena
| Saugumo pranešimas | Pažeidžiama aplinka | Prieš | Po | Įrodymai |
|---|---|---|---|---|
CVE-2026-109618 | php8.3 | Pažeidžiama | Pataisyta | Paketo pakeitimų žurnalas ir veikianti versija |
CVE-2026-109619 | php8.3 | Pažeidžiama | Pataisyta | Paketo pakeitimų žurnalas ir veikianti versija |
CVE-2026-109618, CVE-2026-109619 | php7.4 | Nevertinta | Nevertinta | Už sutartos apimties ribų |
Tiekėjo į senesnę versiją perkelta pataisa gali turėti kitą versijos numerį. Tikrojoje ataskaitoje remiamasi atitinkamu tiekėjo saugumo pranešimu. Sėkminga pataisos patikra neįrodo, kad į aplinką niekada nebuvo įsilaužta.
6Atsarginės kopijos ir atkūrimas
Prieš bet kokius pakeitimus peržiūrėtos atsarginės kopijos. Atnaujinti buvo galima tik turint patikrintą momentinį vaizdą.
| Atsarginė kopija | Grafikas | Paskutinė sėkminga | Saugojimas | Vieta | Atkūrimo bandymas |
|---|---|---|---|---|---|
| Duomenų bazės kopija | Kasdien, 03:15 | 2026-10-22 03:16 | 14 dienų | Kitoje vietoje, šifruota | Niekada |
| Programos failai | Kasdien, 03:40 | 2026-10-22 03:52 | 14 dienų | Tas pats teikėjas, atskiras tomas | Niekada |
| Serverio momentinis vaizdas prieš pakeitimus | Sukurtas šiems darbams | 2026-10-22 21:04 | 7 dienos | Prieglobos teikėjas | Paleidimas patikrintas |
Išvados
- Į failų atsarginę kopiją neįtrauktas katalogas
/var/www/shop/uploads, kuriame saugoma apie 6,2 GB klientų dokumentų. - Nė vienos suplanuotos atsarginės kopijos atkūrimo bandymas neužfiksuotas. Atsargine kopija, kurios niekada nebandyta atkurti, negalima pasikliauti atkuriant sistemą.
- Duomenų bazės kopijos šifruojamos ir saugomos pas kitą teikėją, todėl jos išliktų praradus serverį ar prieglobos paskyrą.
Šio pakeitimo grąžinimo į ankstesnę būseną planas
Iš vietinės paketų talpyklos iš naujo įdiegti ankstesnius PHP paketus ir perkrauti PHP-FPM arba paleisti prieš pakeitimus sukurtą momentinį vaizdą. Numatoma atkūrimo trukmė – 15 minučių. Grąžinti į ankstesnę būseną neprireikė.
7Pakeitimų žurnalas
| Laikas | Veiksmas | Rezultatas |
|---|---|---|
21:00 | Suteikta prieiga; užfiksuota pradinė versijų, paslaugų ir atsako laikų būsena | Atlikta |
21:04 | Sukurtas serverio momentinis vaizdas prieš pakeitimus, patikrintas jo paleidimas | Atlikta |
21:12 | Atliktos pradinės funkcinės patikros | Sėkmingos 8 iš 8 |
21:18 | PHP 8.3 paketai atnaujinti iš 8.3.35 į 8.3.36 | Atlikta |
21:20 | PHP-FPM paleistas iš naujo; senos versijos procesų neliko | Atlikta |
21:24 | Veikianti versija patvirtinta per žiniatinklio serverį ir CLI | Atlikta |
21:31 | Atliktos funkcinės patikros po pakeitimų | Sėkmingos 8 iš 8 |
21:55 | 20 minučių stebėti klaidų žurnalai ir atsako laikai | Naujų klaidų nėra |
22:31 | Laikinas prieigos raktas panaikintas, sesija uždaryta | Atlikta |
8Patikra po pakeitimų
| Patikra | Metodika | Rezultatas |
|---|---|---|
| Žiniatinklio užklausoms naudojama PHP versija | Laikinas diagnostikos skriptas, pašalintas po naudojimo | 8.3.36 |
| PHP-FPM procesai | Procesų sąrašas ir paslaugos būsena | Sėkminga |
| Pirkėjo prisijungimas | Kliento testinė paskyra | Sėkminga |
| Administratoriaus prisijungimas | Kliento testinė paskyra | Sėkminga |
| Prekių paieška | Trys su klientu suderinti paieškos žodžiai | Sėkminga |
| Atsiskaitymas | Bandomasis užsakymas mokėjimų teikėjo testiniu režimu | Sėkminga |
| Kontaktų forma | Bandomasis pateikimas, gavimą patvirtino klientas | Sėkminga |
| Failų įkėlimas | Bandomasis dokumentas įkeltas ir atsisiųstas | Sėkminga |
| Slaptažodžio atkūrimo laiškas | Testinė paskyra, laiškas gautas | Sėkminga |
| Suplanuotos užduotys | Kitas suplanuotas vykdymas patikrintas žurnaluose | Sėkminga |
| Klaidų žurnalas | Palyginta po 30 minučių prieš pakeitimą ir po jo | Naujų klaidų nėra |
| Pagrindinio puslapio atsako laikas | 20 užklausų mediana | 182 ms → 176 ms |
9Išvados ir rekomendacijos
Surikiuota pagal prioritetą. Nė vienas iš šių punktų netrukdo PHP2Shell pataisai.
| ID | Prioritetas | Išvada | Rekomendacija |
|---|---|---|---|
R1 | Aukštas | PHP 7.4 procesų grupė veikia nebepalaikoma versija ir gali būti pažeidžiama. | Išjunkite archyvinę parduotuvę arba palikite prieigą tik autentifikuotiems naudotojams. Jei ji turi likti pasiekiama, perkelkite ją į palaikomą PHP versiją. Įkainojama atskirai. |
R2 | Aukštas | Įdiegtas naujesnis branduolys neveikia; serveris nebuvo perkrautas 142 dienas. | Suplanuokite perkrovimą artimiausiu priežiūros laiku ir po jo patikrinkite veikiantį branduolį. |
R3 | Vidutinis | Laukia 23 operacinės sistemos atnaujinimai, įskaitant OpenSSL ir nginx. | Įdiekite juos suplanuotu laiku ir įjunkite automatinius saugumo atnaujinimus. |
R4 | Vidutinis | Atsarginių kopijų atkūrimas niekada nebandytas, o į failų atsarginę kopiją neįtraukti klientų įkelti failai. | Įtraukite įkėlimų katalogą į failų atsarginę kopiją ir kas ketvirtį atlikite dokumentuotą atkūrimo bandymą. |
R5 | Žemas | Įkėlimo eigos sekimas įjungtas, bet nenaudojamas. | Išjunkite nustatymą session.upload_progress.enabled atakos paviršiui sumažinti. |
R6 | Žemas | Stebėsena apima tik pasiekiamumą. | Įdiekite įspėjimus dėl disko vietos, PHP-FPM procesų išnaudojimo ir programos klaidų. |
10Įrodymai ir perdavimas
- Aplinkos identifikatoriai ir sutartas darbų laikas
- Paketo šaltinis, visa versija ir taikomas tiekėjo saugumo pranešimas
- Atsarginės kopijos nuoroda, pakeitimų žurnalas ir procesų paleidimo iš naujo įrodymai
- Sutartos funkcinės patikros, rezultatai ir apribojimai
- Visas komandų įrašas ir paketų pakeitimų žurnalo ištraukos
11Apribojimai
Ataskaita apima sutartą aplinką ir nurodytu laiku atliktas patikras. Ji nėra saugumo sertifikatas, garantija nuo būsimų pažeidžiamumų ar išvada, kad anksčiau nebuvo įsilaužta. Įtariamam įsilaužimui reikia atskiro tyrimo.