PHP отстрани уязвимост в сигурността, която можеше да разкрие данни за вход, бисквитки и данни за удостоверяване пред прокси сървър на непредвиден сървър при пренасочвания на HTTP.
Уязвимостта, проследявана като CVE-2026-91766 и GHSA-fpwc-w8rq-cr92, засяга HTTP stream wrapper на PHP и е оценена със средна степен на опасност.
Проблемът възниква, когато дадено PHP приложение използва http:// или https:// stream wrapper за заявка на отдалечено съдържание и автоматично последва пренасочване.
При уязвими условия PHP препраща чувствителни заглавни части (headers) от заявката, предоставени от потребителя, към крайната дестинация на пренасочването, без да потвърди дали тя все още е същият доверен произход (origin).
Това поведение би могло да разкрие заглавните части Authorization, Cookie и Proxy-Authorization. Тези заглавни части могат да съдържат потребителски имена и пароли, безименни токени (bearer tokens), сесийни бисквитки, API ключове или идентификационни данни за прокси.
Например дадено приложение може да направи удостоверена заявка към https://api.example.com/data със заглавна част Authorization.
PHP Fixed a Bug
Ако отдалеченият сървър отговори с пренасочване към друг хост, контролиран от атакуващ, по-старите версии на PHP биха могли да изпратят същата заглавна част за удостоверяване към домейна под контрола на киберпрестъпника. Рискът включва също пренасочвания към различен порт или пренасочвания, които понижават заявката от HTTPS към некриптиран HTTP.
Уязвимостта е особено актуална за приложения, които извличат външни ресурси чрез PHP stream функции като file_get_contents(), fopen(), readfile() или персонализиран код, изграден около HTTP stream контексти. Уязвимото приложение трябва както да предоставя чувствителни заглавни части, така и да последва пренасочване, контролирано или повлияно от атакуващ.
Не е необходимо киберпрестъпникът да компрометира оригиналния доверен сървър във всеки сценарий. Той може да успее да се възползва от проблема, ако контролира URL адрес, поискан от PHP приложението, управлява услуга на трета страна, която може да издава пренасочвания, или може да манипулира пътя на пренасочване чрез отделен слаб пункт в приложението.
В бюлетина за сигурност на PHP проблемът се описва като изтичане на идентификационни данни между различни произходи (cross-origin credential leak). „Cross-origin“ означава, че пренасочената заявка преминава извън оригиналната комбинация от схема, хост и порт.
Идентификационните данни, предназначени за един сървър, не трябва автоматично да се изпращат на друг сървър само защото отговорът с пренасочване е указал на клиента да направи това.
Грешката е подобна на по-стара уязвимост за препращане на идентификационни данни, отстранена в libcurl. Разработчиците на PHP вече са променили поведението на HTTP stream wrapper, за да предотвратят пренасянето на чувствителни заглавни части през ненадеждни граници на пренасочване.
Организациите трябва да обновят PHP до версия, съдържаща корекцията за сигурност възможно най-скоро. Официалният дневник на промените за PHP 8 потвърждава, че поддържаните клонове на изданията са получили корекция за GHSA-fpwc-w8rq-cr92, идентифицирана като CVE-2026-91766.
Екипите по сигурност трябва също така да прегледат приложенията, които правят удостоверени изходящи HTTP заявки. Разработчиците трябва да избягват прикачването на многократно използваеми идентификационни данни към заявки за недоверени URL адреси, да валидират дестинациите на пренасочване, да ограничават изходящите връзки, където е възможно, и да предотвратяват пренасочвания с понижаване от HTTPS към HTTP.
Въпреки че уязвимостта изисква условие, свързано с пренасочване, въздействието може да бъде значително. Изтекъл bearer токен или сесийна бисквитка биха могли да позволят на атакуващ да достъпи вътрешни API интерфейси, облачни услуги, акаунти в приложения или прокси инфраструктура, използвайки идентификационни данни, които никога не са били предназначени да напускат оригиналния сървър.