Pe scurt: Pentru a verifica un CVE în changelog, căutați în jurnalul de modificări al pachetului PHP instalat CVE-2026-109618 și CVE-2026-109619: pe Debian și Ubuntu în /usr/share/doc/<paket>/changelog.Debian.gz, pe sistemele RPM cu rpm -q --changelog. O potrivire, împreună cu nivelul pachetului, compararea cu anunțul oficial de securitate și momentul repornirii, constituie o dovadă solidă. Lipsa unei potriviri nu este încă o dovadă a unei vulnerabilități deschise.
De ce o dovadă înseamnă mai mult decât „am făcut patch”
După PHP2Shell, mulți vor să știe dacă serverele lor sunt sigure: conducerea, responsabilul cu protecția datelor, clienții cu prelucrare în numele operatorului, uneori asigurătorul cibernetic. „Am făcut patch” este prea puțin pentru asta. Se cere o dovadă pe care o poate urmări un terț.
Numărul versiunii nu este adesea potrivit pentru aceasta, deoarece distribuțiile aplică corecțiile ca backport, iar numărul rămâne același. Changelog-ul pachetului este o bază mai bună. El este scris de responsabilul pachetului și, în cazul actualizărilor de securitate, enumeră de regulă numerele CVE remediate.
Unde se află changelog-urile
Fiecare format de pachet are propriul loc. Tabelul următor ajută să ajungeți rapid la locul potrivit.
| Sistem | Locul changelog-ului | Comandă de căutare |
|---|---|---|
| Debian, Ubuntu | /usr/share/doc/<paket>/changelog.Debian.gz |
zgrep |
| Debian, Ubuntu (online) | Arhiva de pachete a distribuției | apt changelog <paket> |
| RHEL, AlmaLinux, Rocky, Fedora | Baza de date a pachetelor RPM | rpm -q --changelog <paket> |
| Imagini de container | în imagine, ca la sistemul de bază | rulați comanda în container |
Pe Debian și Ubuntu, directorul de documentație al unor pachete binare trimite printr-un link simbolic către un pachet comun, de exemplu php8.3-common. Dacă zgrep nu găsește fișierul, priviți directorul cu ls -l /usr/share/doc/ | grep php.
Verificarea CVE în changelog: cum procedați
Comenzile următoare sunt exclusiv de citire. Adaptați numele pachetelor la instalarea dumneavoastră.
# Debian/Ubuntu: local, fără rețea
zgrep -n -E "CVE-2026-10961[89]|CVE-2026-115560" /usr/share/doc/php8.3-common/changelog.Debian.gz
# Debian/Ubuntu: antetul celei mai noi intrări cu nivelul pachetului și data
zcat /usr/share/doc/php8.3-common/changelog.Debian.gz | head -20
# Familia RHEL: intrarea cu data și nivelul pachetului
rpm -q --changelog php-common | grep -n -B3 -E "CVE-2026-10961[89]"
Pe Debian și Ubuntu, nivelul pachetului se află în antetul fiecărei intrări, iar data în linia de încheiere. Pe RPM, ambele se află în linia de deasupra intrărilor. Astfel vedeți nu doar dacă CVE este menționat, ci și cu ce nivel de pachet. Comparați acest nivel cu cel instalat, de exemplu prin dpkg-query -W sau rpm -q. Dacă ambele coincid, corecția este inclusă în pachetul care rulează.
Pachete de panou și containere
Panourile de hosting aduc propriile pachete PHP, de exemplu Plesk sau cPanel. Și acestea sunt pachete DEB sau RPM obișnuite, iar changelog-ul lor se poate citi cu aceleași unelte. Dacă furnizorii menționează acolo numere CVE sau doar noua versiune PHP diferă de la caz la caz. Dacă pachetul indică versiunea upstream 8.5.12, 8.4.27, 8.3.36 sau 8.2.35, aceasta este suficientă ca dovadă; în cazul backporturilor cu număr vechi aveți nevoie de informații de la furnizor.
La containere, dovada ține de imagine, nu de gazdă. Verificați pachetele din imaginea din care a fost pornit containerul care rulează și păstrați suplimentar digest-ul imaginii. Astfel se poate stabili ulterior ce nivel a rulat efectiv, chiar dacă imaginea a fost între timp reconstruită sub același tag.
Dacă CVE lipsește din changelog
O intrare lipsă are mai multe cauze posibile. Parcurgeți-le în această ordine:
- Pachet greșit căutat: Când pe un server există mai multe ramuri sau surse PHP, răspunsul se află adesea în changelog-ul altui pachet.
- Versiune upstream în loc de CVE: Dacă sursa livrează noua versiune upstream, de exemplu 8.4.27, în changelog poate apărea doar „New upstream version”. Atunci numărul versiunii este el însuși dovada, deoarece php.net indică versiunile 8.5.12, 8.4.27, 8.3.36 și 8.2.35 ca fiind corectate.
- Altă formulare: Unii responsabili menționează numere de bug sau identificatori de advisory, precum GHSA-w8hw-w9fx-j79w și GHSA-6wmf-4rv5-p3rp, în loc de CVE.
- Compararea cu anunțul de securitate: Dacă anunțul oficial al distribuției dumneavoastră, de exemplu un USN sau Debian Security Tracker, indică un nivel de pachet corectat, iar acesta sau unul mai nou este instalat, aceasta este de asemenea o dovadă. Pentru Debian și Ubuntu găsiți nivelurile în articolul Este pachetul meu PHP actualizat?, iar pentru familia RHEL la RHEL, AlmaLinux și Rocky Linux.
- Întrebați furnizorul: La pachetele de panou, build-urile furnizorilor de hosting sau sursele terțe ajută doar informația scrisă. Un model oferă ghidul Întrebați furnizorul de hosting despre starea patchului.
Dacă după acești pași nu rămâne nicio dovadă, tratați serverul ca neactualizat și aplicați măsuri provizorii până când întrebarea este clarificată.
De la potrivire la dovadă
O potrivire în changelog dovedește că pachetul conține corecția. Nu dovedește că procesele care rulează o folosesc. O dovadă completă conține de aceea cinci date pentru fiecare server și fiecare instalare PHP:
- serverul, ramura PHP și modul de operare, de exemplu PHP-FPM sau mod_php
- nivelul pachetului instalat și sursa pachetului
- locul din changelog sau trimiterea la anunțul oficial de securitate
- momentul actualizării și ora de pornire a proceselor PHP care rulează
- numele persoanei care a verificat și data verificării
Salvați ieșirile brute ale comenzilor ca fișier text lângă dovadă. Ele sunt mai ușor de urmărit ulterior decât un rezumat din memorie.
O dovadă răspunde doar la întrebarea dacă vulnerabilitatea era închisă de la un anumit moment. Pentru perioada anterioară aveți nevoie de logurile începând din 20 octombrie 2026 și, dacă este cazul, de o căutare de urme. Desfășurarea generală a verificării versiunii o descrie pagina Verificarea corectă a versiunii PHP și a nivelului de patch.
Cum ajută PHP SOS concret?
- Căutăm în changelog-urile tuturor pachetelor PHP de pe serverele dumneavoastră și le comparăm cu anunțurile oficiale de securitate.
- Acolo unde changelog-urile tac, clarificăm nivelul cu distribuția, cu furnizorul panoului sau cu furnizorul de hosting.
- Controlăm că procesele care rulează au fost repornite după actualizare.
- Prin serviciul de patch PHP primiți dovada pentru fiecare server într-o formă pe care o puteți transmite terților.
Întrebări frecvente
De ce nu este suficientă versiunea PHP ca dovadă?
Multe distribuții preiau corecțiile de securitate ca backport, fără a schimba versiunea PHP. Numărul versiunii nu spune atunci nimic despre patch. Changelog-ul pachetului instalat menționează în schimb numerele CVE remediate.
Ce înseamnă dacă CVE lipsește din changelog?
Poate însemna că lipsește corecția. Se poate însă și ca responsabilul pachetului să formuleze altfel, de exemplu cu un număr de bug sau cu versiunea upstream. În acest caz comparați nivelul pachetului cu anunțul oficial de securitate sau întrebați furnizorul.
Cât timp ar trebui să păstrez dovada?
Atât timp cât poate fi relevantă pentru verificări interne, asigurători sau eventuale întrebări privind protecția datelor. Arhivați-o împreună cu logurile începând din 20 octombrie 2026. Termenele concrete le clarificați cu responsabilul cu protecția datelor sau cu consultanța juridică.
Pot verifica changelog-ul și fără acces la internet?
Da. Debian și Ubuntu păstrează local changelog-ul fiecărui pachet în /usr/share/doc, iar sistemele RPM îl stochează în baza de date a pachetelor. Ambele se pot citi fără rețea.