Изследовател по сигурността, известен в интернет пространството като killa, спечели публично биткойн предизвикателство, използвайки две критични уязвимости в PHP за компрометиране на тестов сървър. Успешният опит отне 19,28 часа. Наградният фонд беше 0,02511679 BTC, на стойност 2021,22 долара към момента на победата на 25 октомври 2026 г. в 15:47 UTC. След това изследователят публикува работещ прототип за експлоатация (PoC) в GitHub.
Предизвикателството се проведе на stealmybitcoin.com. Сайтът използваше версия на PHP без инсталирани корекции за сигурност и съхраняваше ключ от портфейл зад тест за отдалечено изпълнение на код (RCE), което означава, че целта беше изпълнение на команди на сървъра отвън.
Дарения увеличиха наградата от 500 долара до над 2000 долара по време на провеждането на теста. Създателят заяви, че първоначалните опити са били неуспешни, тъй като сървърът първоначално е обслужвал статични файлове през режима на командния ред на PHP, при което уязвимостите са се заобикаляли. След като сайтът премина към реална PHP страница, тестът стана възможен.
Експлоатирани уязвимости PHP2Shell
Уязвимостите се проследяват като CVE-2026-109618 и CVE-2026-109619, като групата е наречена PHP2Shell. И двете имат оценка по CVSS v4.0 от 9.2, което се определя като критично ниво. Първата уязвимост може да доведе до повреждане на паметта при почистване след състояние на недостиг на оперативна памет (out-of-memory). Втората позволява данни, останали от по-ранна заявка в споделен работен процес (worker), да бъдат повторно използвани от последваща заявка.
PHP пусна корекции за сигурност на 21 октомври 2026 г. във версии 8.5.12, 8.4.27, 8.3.36 и 8.2.35. Указанията на Google посочват, че засегнатият диапазон обхваща PHP от 5.4 до 8.5.11. По-стари клонове като 8.1 и по-ранни вече не получават официални обновления, така че тези сайтове трябва да преминат към поддържана версия.
Публикуваният скрипт използва две изтичания на памет. Първото изтичане разкрива heap адрес, а второто разкрива адрес на PHP код. С помощта на двата адреса финална заявка поставя фалшифицирана структура в паметта, която кара PHP да извика своята системна функция system. След това скриптът извежда случаен тестов маркер, потребителския идентификатор (ID) и хеша на програмата за флага.
Анализът показва и ограниченията на разработката. Скриптът е бил създаден и тестван върху локално тестово копие, а не срещу реалния сайт, като е успял в около седем от десет лабораторни изпълнения. Авторът признава, че пълната заявка към реалната среда не е била прихваната. Извлеченият ключ също така не съвпада с обявения адрес на наградата, като авторът определя това като грешка от страна на създателя.
Публичният експлойт код вече е наличен, а злонамерената активност започна още преди пускането на корекциите за сигурност. Amazon съобщи за опити, датиращи от 17 октомври – четири дни преди официалните обновления. Sophos посочи, че е блокирал опити за разпространение на Potassium, вероятен вариант на ботнета Mirai, но не откри доказателства за успешен пробив.
Надграждането до обновена версия на PHP с включени корекции за сигурност е единственото пълно решение. Правилата в защитните стени и промените в конфигурацията могат да намалят риска, но не отстраняват уязвимостите. След обновяване рестартирайте услугите и се уверете, че активните работни процеси изпълняват новата компилация, тъй като вградените среди за изпълнение и контейнерите може все още да използват стар код.