Na kratko: Če želite v changelogu preveriti CVE, v zapisu sprememb nameščenega paketa PHP poiščite CVE-2026-109618 in CVE-2026-109619: pri Debianu in Ubuntuju v /usr/share/doc/<paket>/changelog.Debian.gz, pri sistemih RPM z rpm -q --changelog. Zadetek skupaj s stanjem paketa, primerjavo z uradnim varnostnim obvestilom in časom ponovnega zagona je zanesljiv dokaz. Manjkajoč zadetek še ni dokaz o odprti ranljivosti.
Zakaj je dokaz več kot „popravili smo“
Po PHP2Shell mnogi želijo vedeti, ali so njihovi strežniki varni: vodstvo, pooblaščenec za varstvo podatkov, stranke z obdelavo po naročilu, včasih kibernetski zavarovalec. „Popravili smo“ je za to premalo. Zahtevan je dokaz, ki ga tretja oseba lahko preveri.
Številka različice je za to pogosto neuporabna, ker distribucije popravke vgradijo kot backport in številka ostane enaka. Boljša podlaga je changelog paketa. Napiše ga vzdrževalec paketa, pri varnostnih posodobitvah pa praviloma našteje odpravljene številke CVE.
Kje so changelogi
Vsaka oblika paketa ima svoje mesto. Spodnji pregled pomaga hitro priti na pravo mesto.
| Sistem | Mesto changeloga | Ukaz za iskanje |
|---|---|---|
| Debian, Ubuntu | /usr/share/doc/<paket>/changelog.Debian.gz |
zgrep |
| Debian, Ubuntu (na spletu) | Arhiv paketov distribucije | apt changelog <paket> |
| RHEL, AlmaLinux, Rocky, Fedora | Podatkovna baza paketov RPM | rpm -q --changelog <paket> |
| Slike vsebnikov | v sliki, enako kot pri osnovnem sistemu | ukaz izvedite v vsebniku |
Pri Debianu in Ubuntuju imenik z dokumentacijo nekaterih binarnih paketov s simbolično povezavo kaže na skupni paket, na primer php8.3-common. Če zgrep datoteke ne najde, si oglejte imenik z ls -l /usr/share/doc/ | grep php.
Preverjanje CVE v changelogu: kako postopati
Naslednji ukazi so zgolj za branje. Imena paketov prilagodite svoji namestitvi.
# Debian/Ubuntu: lokalno, brez omrežja
zgrep -n -E "CVE-2026-10961[89]|CVE-2026-115560" /usr/share/doc/php8.3-common/changelog.Debian.gz
# Debian/Ubuntu: glava najnovejšega vnosa s stanjem paketa in datumom
zcat /usr/share/doc/php8.3-common/changelog.Debian.gz | head -20
# Družina RHEL: vnos z datumom in stanjem paketa
rpm -q --changelog php-common | grep -n -B3 -E "CVE-2026-10961[89]"
Pri Debianu in Ubuntuju je stanje paketa v glavi vsakega vnosa, datum v zaključni vrstici. Pri RPM je oboje v vrstici nad vnosi. Tako vidite ne le, ali je CVE omenjena, ampak tudi, s katerim stanjem paketa. To stanje primerjajte z nameščenim, na primer z dpkg-query -W ali rpm -q. Če se ujemata, je popravek v tekočem paketu vsebovan.
Paketi nadzornih plošč in vsebniki
Nadzorne plošče za gostovanje prinašajo lastne pakete PHP, na primer Plesk ali cPanel. Tudi to so običajni paketi DEB ali RPM, njihov changelog je mogoče brati z enakimi orodji. Ali ponudniki v njem navajajo številke CVE ali samo novo različico PHP, je različno. Če paket navaja izvorno različico 8.5.12, 8.4.27, 8.3.36 ali 8.2.35, to kot dokaz zadošča; pri backportih s staro številko potrebujete odgovor ponudnika.
Pri vsebnikih dokaz sodi k sliki, ne h gostitelju. Preverite pakete v sliki, iz katere je bil zagnan tekoči vsebnik, in dodatno zabeležite izvleček (digest) slike. Tako je pozneje mogoče ugotoviti, katero stanje je dejansko teklo, tudi če je bila slika pod isto oznako medtem znova zgrajena.
Če CVE v changelogu manjka
Manjkajoč vnos ima lahko več vzrokov. Preglejte jih v tem vrstnem redu:
- Iskan napačen paket: Pri več vejah PHP ali virih na enem strežniku je odgovor pogosto v changelogu drugega paketa.
- Izvorna različica namesto CVE: Če vir dobavi novo izvorno različico, na primer 8.4.27, je v changelogu morda samo „New upstream version“. Tedaj je dokaz sama številka različice, ker php.net različice 8.5.12, 8.4.27, 8.3.36 in 8.2.35 navaja kot popravljene.
- Drugačno besedilo: Nekateri vzdrževalci namesto CVE navajajo številke hroščev ali oznake obvestil, kot sta GHSA-w8hw-w9fx-j79w in GHSA-6wmf-4rv5-p3rp.
- Primerjava z varnostnim obvestilom: Če uradno obvestilo vaše distribucije, na primer USN ali Debian Security Tracker, navaja popravljeno stanje paketa in je nameščeno to ali novejše, je tudi to dokaz. Stanja za Debian in Ubuntu najdete v prispevku Ali je moj paket PHP popravljen?, za družino RHEL pod RHEL, AlmaLinux in Rocky Linux.
- Vprašajte ponudnika: Pri paketih nadzornih plošč, gradnjah ponudnikov gostovanja ali virih tretjih oseb pomaga samo pisni odgovor. Predlogo ponuja vodnik Vprašajte ponudnika gostovanja po stanju popravkov.
Če po teh korakih dokaza ni, strežnik obravnavajte kot nepopravljen in uvedite prehodne ukrepe, dokler vprašanje ni razrešeno.
Od zadetka do dokaza
Zadetek v changelogu dokazuje, da paket vsebuje popravek. Ne dokazuje, da ga tekoči procesi tudi uporabljajo. Popoln dokaz zato vsebuje pet podatkov za vsak strežnik in namestitev PHP:
- strežnik, veja PHP in način delovanja, na primer PHP-FPM ali mod_php
- nameščeno stanje paketa in vir paketa
- mesto najdbe v changelogu ali sklic na uradno varnostno obvestilo
- čas posodobitve in čas zagona tekočih procesov PHP
- ime osebe, ki je preverjala, in datum preverjanja
Surove izpise ukazov shranite kot besedilno datoteko ob dokazu. Pozneje jih je lažje preveriti kot povzetek po spominu.
Dokaz odgovarja samo na vprašanje, ali je bila ranljivost od določenega trenutka zaprta. Za čas pred tem potrebujete dnevnike od 20. oktobra 2026 in po potrebi iskanje sledi. Splošni potek preverjanja različice opisuje stran Pravilno preverjanje različice PHP in stanja popravkov.
Kako PHP SOS pomaga konkretno?
- Preiščemo changelog vseh paketov PHP na vaših strežnikih in jih primerjamo z uradnimi varnostnimi obvestili.
- Kjer changelogi molčijo, stanje razjasnimo z distribucijo, ponudnikom nadzorne plošče ali ponudnikom gostovanja.
- Preverimo, ali so bili tekoči procesi po posodobitvi znova zagnani.
- S storitvijo popravljanja PHP dobite dokaz za vsak strežnik v obliki, ki jo lahko posredujete tretjim osebam.
Pogosta vprašanja
Zakaj številka različice PHP kot dokaz ne zadošča?
Številne distribucije varnostne popravke prevzamejo kot backport, ne da bi spremenile različico PHP. Številka različice potem o popravku ne pove ničesar. Changelog nameščenega paketa pa navaja odpravljene številke CVE.
Kaj pomeni, če CVE v changelogu manjka?
Lahko pomeni, da popravka ni. Lahko pa vzdrževalec paketa besedilo oblikuje drugače, na primer s številko hrošča ali izvorno različico. Tedaj stanje paketa primerjate z uradnim varnostnim obvestilom ali vprašate ponudnika.
Kako dolgo naj hranim dokaz?
Dokler je lahko pomemben za notranje preglede, zavarovalnice ali morebitna vprašanja glede varstva podatkov. Shranite ga skupaj z dnevniki od 20. oktobra 2026. Konkretne roke razjasnite s pooblaščencem za varstvo podatkov ali pravnim svetovalcem.
Ali lahko changelog preverim tudi brez dostopa do interneta?
Da. Debian in Ubuntu changelog vsakega paketa shranita lokalno pod /usr/share/doc, sistemi RPM ga hranijo v podatkovni bazi paketov. Oboje je mogoče brati brez omrežja.