Și o cerere HTTP de ieșire trece o limită de încredere
Remedierile PHP din martie 2025 separă actualizarea runtime-ului de politica destinațiilor. Verificați redirecționările și antetele integrărilor externe.
O cerere de ieșire are nevoie de o decizie explicită despre destinațiile permise și antetele care o pot însoți. Folosirea mecanismului standard PHP pentru fluxuri HTTP nu furnizează această politică a aplicației. Actualizarea runtime-ului și restrângerea destinațiilor rezolvă probleme diferite: prima repară implementarea care interpretează HTTP, iar a doua limitează serviciile pe care integrarea este autorizată să le contacteze.
Privită din noiembrie 2026, arhiva de știri PHP consemnează versiunile de securitate 8.1.32, 8.2.28, 8.3.19 și 8.4.5 la 13 martie 2025. Jurnalul versiunii 8.4.5 include remedieri ale mecanismului de fluxuri HTTP. Sunt identificatori istorici, nu versiuni recomandate pentru o instalare actuală. Lecția privește limitele cererilor, nu bugetarea ciclului de suport PHP sau configurarea JIT.
Defectele din martie priveau interpretarea
Alerta PHP pentru CVE-2025-1861, publicată la 13 martie 2025, descrie trunchierea destinațiilor redirecționării de către un buffer fix de 1024 de octeți. Un URI trunchiat putea pierde informații importante din interogare sau indica altă resursă. Alerta enumeră versiunile remediate 8.1.32, 8.2.28, 8.3.19 și 8.4.5. Defectul nu susținea afirmația generală că fiecare redirecționare dezvăluia credențiale.
O alertă separată, CVE-2025-1736, publicată în aceeași zi, privește verificarea antetelor și terminatorii de linie. Descrie situații în care conținutul furnizat într-un antet putea împiedica trimiterea antetului de autorizare generat automat sau afecta alte verificări. Lista versiunilor remediate indică aceleași patru versiuni. Tabelul versiunilor afectate are un prag 8.3 inconsecvent; lista remedierilor și anunțul oficial identifică 8.3.19.
A treia alertă relevantă, CVE-2025-1734, publicată tot la 13 martie, privește antete de răspuns incorecte, inclusiv linii fără două puncte. Returnarea lor ca antete putea deruta interpretarea din aplicație. Versiunile remediate enumerate sunt din nou 8.1.32, 8.2.28, 8.3.19 și 8.4.5. Mecanismele merită descrise separat, fără o etichetă largă care sugerează efecte identice.
Un parser corect are în continuare nevoie de o regulă pentru destinații
Să luăm un portal ipotetic pentru clienți care descarcă un document de la un partener. Relația dorită este între portal și o adresă cunoscută a partenerului. Dacă adresa răspunde cu o redirecționare, cererea următoare poate reprezenta altă relație. Poate schimba gazda sau schema, iar aplicația are nevoie să decidă dacă schimbarea este permisă.
Un parser întreținut poate interpreta corect adresa nouă, în timp ce destinația rămâne nepotrivită operației comerciale. Invers, o regulă strictă pentru destinații nu repară un defect al parserului. Separarea ajută analiza incidentelor: integrarea a urmat un traseu neautorizat, a interpretat incorect datele sau s-au întâmplat amândouă? Fiecare concluzie are nevoie de alte dovezi.
Manualul actual al contextului HTTP, consultat separat în noiembrie 2026, documentează controale precum follow_location și max_redirects. Avertizează și că antetele configurate le pot suprascrie pe cele generate, inclusiv la redirecționare. Controalele sunt opțiuni de implementare, nu un sistem complet de autorizare a traficului de ieșire. Numărul maxim limitează repetările; nu stabilește că gazda următoare este acceptabilă.
Pentru o integrare restrânsă propusă, interziceți redirecționările dacă afacerea nu are nevoie de ele. Dacă sunt necesare, definiți tranzițiile permise și decideți ce antete pot fi trimise după fiecare tranziție. Reevaluați destinația fără să presupuneți că primul URL acceptat autorizează întregul lanț. Sunt recomandări de proiectare, nu o remediere testată pentru o anumită aplicație.
Dați credențialelor și erorilor contracte proprii
Credențialele ar trebui să aparțină unei destinații și unui scop definite. Acceptarea de text arbitrar pentru antete de la utilizator mărește numărul modurilor în care credențialele pot fi schimbate sau combinate. Preferați construirea antetelor necesare din câmpuri validate ale aplicației. Tratați adresa furnizată de partener drept intrare nouă, chiar dacă cererea inițială către partener era autorizată.
Politica URL-urilor are nevoie să țină cont și de traseul real în rețea. O verificare a numelui gazdei nu exprimă toate restricțiile privind serviciile interne ori intervalele de adrese. Unde diferența contează, combinați politica aplicației cu restricții potrivite în rețea și analizați rezolvarea numelor în instalarea efectivă. Articolul nu oferă o rețetă universală de filtrare sau o garanție împotriva cererilor falsificate pe server.
Tratarea erorilor merită aceeași precizie. Depășirea timpului, respingerea unei redirecționări și un răspuns HTTP valid care anunță un eșec sunt rezultate diferite. Integrarea ar trebui să decidă dacă repetarea este sigură pentru operație și ce vede utilizatorul când aceasta se oprește. Repetarea fără discernământ a unei operații care schimbă stare externă poate crea o problemă nouă, separată de defectul inițial al parserului.
Jurnalele pot înregistra categoria erorii și identificatorul destinației permise fără să copieze automat credențiale ori interogări complete. Este o limită propusă pentru observabilitate. Informația necesară diagnosticării unei descărcări eșuate diferă de arhivarea fără restricții a cererii, mai ales dacă URL-urile conțin valori sensibile.
Un client mai bogat poate justifica dependența
Obiecția cea mai puternică este că o politică de integrare complicată, construită în jurul unui mecanism mic, poate produce cod mai fragil decât adoptarea unui client HTTP întreținut. Dacă aplicația cere componente intermediare structurate, decizii consecvente despre redirecționări sau tratare detaliată a erorilor, un client mai bogat poate face comportamentul dorit mai ușor de verificat.
Alegerea nu elimină actualizările runtime-ului sau politica destinațiilor. Mută o parte din mecanisme în spatele altei dependențe, cu propriile obligații de configurare și întreținere. Pentru o cerere simplă către un serviciu fix, mecanismul standard poate rămâne potrivit dacă răspunde cerinței. Decizia ar trebui să urmeze complexitatea integrării, nu presupunerea că biblioteca standard sau un pachet adăugat este automat sigur.
În dezvoltarea software la comandă, cereți urmărirea unei cereri prin deciziile despre redirecționare, credențiale și erori. Consemnați runtime-ul întreținut separat de reguli. Remedierile din martie arată de ce contează interpretarea HTTP; aplicația răspunde în continuare de ceea ce are voie să facă cererea interpretată corect.
Paul