Trumpai: Ar jūsų PHP paketas Debian ar Ubuntu pataisytas nuo PHP2Shell, atpažįstate pagal tikslią paketo būseną, o ne pagal PHP versiją. Ubuntu 2026 m. spalio 21 d. paskelbė ištaisytus paketus visiems palaikomiems leidimams, senesniems per Ubuntu Pro. Debian ištaisė php8.2 bookworm ir php8.4 trixie. Įdiegtą būseną palyginkite su dpkg --compare-versions ir po to iš naujo paleiskite visas PHP paslaugas.
Klausimas už klausimo
„Ar mano PHP paketas pataisytas?“ skamba kaip klausimas su atsakymu taip arba ne. Praktiškai atsakymas priklauso nuo trijų dalykų: iš kokio šaltinio paketas, kokia būsena įdiegta ir ar ta būsena iš tikrųjų veikia? Šis straipsnis atsako į pirmus du punktus oficialiems Debian ir Ubuntu paketams. Kaip apskritai patikrinti versiją ir veikiančius procesus, rasite skyrelyje Kaip teisingai patikrinti PHP versiją ir pataisų būseną.
Duomenis oficialiuose Ubuntu saugumo pranešimuose ir Debian Security Tracker peržiūrėjome 2026 m. spalio 25 d. Abi CVE, CVE-2026-109618 ir CVE-2026-109619, ten išvardytos su tomis pačiomis ištaisytomis būsenomis.
Ištaisytos paketų būsenos Ubuntu
Ubuntu taisymus paskelbė dviem pranešimais. USN-8948-1 apima aktualius leidimus, USN-8948-2 senesnius, kurie saugumo atnaujinimus gauna tik per Ubuntu Pro. Versijoms 16.04 ir 14.04 Ubuntu papildomai nurodo Legacy Support pasiūlymą.
| Ubuntu leidimas | Šaltinio paketas | Ištaisyta būsena |
|---|---|---|
| 26.10 | php8.5 | 8.5.9-0ubuntu2.1 |
| 26.04 LTS | php8.5 | 8.5.4-0ubuntu1.5 |
| 24.04 LTS | php8.3 | 8.3.6-0ubuntu0.24.04.13 |
| 22.04 LTS | php8.1 | 8.1.2-1ubuntu2.28 |
| 20.04 LTS (Ubuntu Pro) | php7.4 | 7.4.3-4ubuntu2.29+esm5 |
| 18.04 LTS (Ubuntu Pro) | php7.2 | 7.2.24-0ubuntu0.18.04.17+esm14 |
Krinta į akis, kad visos būsenos išlaiko pradinę PHP versiją. Ubuntu 24.04 lieka ties 8.3.6, nors taisymas perimtas iš 8.3.36. Kodėl taip yra ir kaip su tuo elgtis, paaiškina straipsnis Kodėl php -v rodo tą patį numerį. Paveikti, be kita ko, dvejetainiai paketai FPM, CLI, CGI ir Apache moduliui, pavyzdžiui, php8.3-fpm ir libapache2-mod-php8.3.
Ištaisytos paketų būsenos Debian
Debian čia renkasi kitą kelią ir pateikia naujas upstream versijas. Pasak Security Tracker, būsena atrodo taip:
| Debian leidimas | Šaltinio paketas | Ankstesnė būsena | Ištaisyta būsena | Pranešimas |
|---|---|---|---|---|
| 12 bookworm | php8.2 | 8.2.32-1~deb12u1 | 8.2.35-1~deb12u1 | DLA-4848-1 |
| 13 trixie | php8.4 | 8.4.24-1~deb13u1 | 8.4.27-1~deb13u1 | DSA-6574-1 |
| forky, sid | php8.4 | 8.4.27-1 |
Pranešimas bookworm pasirodė kaip DLA, t. y. per Debian LTS. Dėl php8.2 unstable Tracker peržiūros metu ištaisytos būsenos dar nenurodo. Kas eksploatuoja bandomąsias sistemas unstable, turėtų tai stebėti.
Senesni Debian leidimai abiejuose CVE įrašuose peržiūros metu nerodomi. Jei serveris dar veikia tokiame leidime, pavyzdžiui, Debian 11 su PHP 7.4, negalite pasikliauti oficialaus archyvo saugumo atnaujinimu. Tada lieka trys keliai: operacinę sistemą pakelti į palaikomą leidimą, naudoti komercinį ilgalaikės priežiūros pasiūlymą, kurio aprėptį PHP2Shell atžvilgiu paprašote patvirtinti raštu, arba iki migracijos serverį apsaugoti pereinamosiomis priemonėmis ir apriboti jo pasiekiamumą. Ilgalaikėje perspektyvoje tinkamas tik pirmasis kelias.
Kaip tiksliai palyginti įdiegtą būseną
Žvilgsnio į versijos numerį nepakanka, nes Debian versijos rūšiuojamos pagal savas taisykles. dpkg --compare-versions palygina teisingai. Toliau pateiktos komandos tik skaito; paketų pavadinimus ir tikslinę būseną pritaikykite savo leidimui.
# Įdiegta būsena ir paketo kilmė
apt policy php8.3-fpm
# Visi įdiegti PHP paketai su versija
dpkg-query -W -f='${Package}\t${Version}\n' 'php*' 'libapache2-mod-php*' 2>/dev/null
# Tikslus palyginimas su ištaisyta būsena (pavyzdys Ubuntu 24.04)
v=$(dpkg-query -W -f='${Version}' php8.3-fpm)
dpkg --compare-versions "$v" ge 8.3.6-0ubuntu0.24.04.13 && echo "korrigiert: $v" || echo "PRÜFEN: $v"
apt policy išvestyje atkreipkite dėmesį į eilutę su paketų šaltiniu. Jei ten nėra jūsų distribucijos saugumo archyvo, o, pavyzdžiui, packages.sury.org ar PPA, aukščiau pateiktos lentelės negalioja. Tada svarbi to trečiojo šaltinio būsena, kurią aptariame straipsnyje sury.org saugykla.
Papildomai verta pažvelgti į pridėtą pakeitimų žurnalą. Kaip ten rasti CVE numerius ir juos užfiksuoti kaip įrodymą, aprašo straipsnis CVE numerių įrodymas paketo pakeitimų žurnale.
Tipinės klaidos tikrinant
Patikrintas tik vienas paketas: PHP sudaro daug dvejetainių paketų. Jei php8.3-cli aktualus, o php8.3-fpm ne, svetainė lieka atvira. Tikrinkite visus šakos paketus, ypač FPM, CGI ir Apache modulį.
Paketas sulaikytas: paketai, sulaikyti per apt-mark hold, atnaujinant lieka vietoje. apt-mark showhold juos parodo.
Ubuntu Pro neaktyvuotas: 20.04 ir senesnėse versijose taisymai ateina tik tada, kai sukonfigūruotas Ubuntu Pro. Be Pro sistema nepaisant atnaujinimo vykdymo lieka pažeidžiama.
Pasenęs veidrodis: jei serveris paketus gauna per vidinį veidrodį ar tarpinį serverį (proxy), naujus saugumo atnaujinimus jis mato tik tada, kai šis atnaujintas. Abejojant patikrinkite, ar apt update iš tikrųjų pasiekia saugumo šaltinį.
Pamirštas paleidimas iš naujo: nauji paketai pradeda veikti tik iš naujo paleidus visas paslaugas, kurios yra įkėlusios PHP. needrestart, jei įdiegtas, parodo paslaugas su pasenusiu kodu.
Ištaisyta paketo būsena įrodo tik tai, kad spraga nuo dabar uždaryta. Ar serveris prieš tai buvo užpultas, ji neatsako. Išsaugokite žurnalus nuo spalio 20 d.
Kaip PHP SOS padeda konkrečiai?
- Nustatome kiekvieno serverio visų PHP paketų kilmę ir lyginame būseną su oficialiais pranešimais.
- Įdiegiame atnaujinimus, taip pat per Ubuntu Pro, ir iš naujo paleidžiame visas paveiktas paslaugas.
- Su PHP pataisų paslauga gaunate kiekvienam serveriui įrodymą su paketo būsena, pakeitimų žurnalo atitikmeniu ir paleidimo iš naujo laiku.
- Sistemose su trečiųjų šalių šaltiniais ar senomis versijomis išsiaiškiname, kuris kelias veda į įrodomai ištaisytą būseną.
Dažni klausimai
Kurioje Ubuntu versijoje yra PHP2Shell taisymas?
Pasak USN-8948-1, Ubuntu 22.04, 24.04, 26.04 ir 26.10 aprūpintos įprastais atnaujinimais. Versijoms 14.04, 16.04, 18.04 ir 20.04 Ubuntu taisymus pagal USN-8948-2 teikia per Ubuntu Pro.
Kodėl Ubuntu 24.04 ir toliau rodo PHP 8.3.6?
Ubuntu saugumo taisymus perima kaip atgalinį perkėlimą (backport) į esamą versiją. Upstream numeris lieka 8.3.6, keičiasi tik paketo būsena. Pasak USN-8948-1, ištaisyta būsena yra 8.3.6-0ubuntu0.24.04.13.
Ar Debian 12 bookworm dar prižiūrimas?
Taip. Pasak Debian Security Tracker, php8.2 bookworm yra ištaisyta būsena 8.2.35-1~deb12u1, paskelbta kaip DLA-4848-1 pagal Debian LTS.
Ar tai galioja ir PHP iš sury saugyklos?
Ne. Trečiųjų šalių šaltinių, tokių kaip sury.org, paketai turi savas versijų būsenas ir savus pakeitimų žurnalus. Debian ir Ubuntu duomenys galioja tik jų oficialiems paketams.
Ar pakanka apt upgrade?
Jis įdiegia naujus paketus, bet veikiantys PHP-FPM ar Apache procesai atmintyje išlaiko senąjį kodą. Pataisa pradeda veikti tik iš naujo paleidus visas paslaugas, kurios įkelia PHP.