НОВИНА
Checkout Files Upload за WooCommerce приема файлове от всеки. Вижте дали Вашият е засегнат
Сигурност

Какво значи уязвимостта HTTP2Shell за сайтовете с WordPress?

# ЕтикетиСигурностХостинг
Екипът на WPhost10 мин четене

HTTP2Shell е името, под което се разпространи уязвимостта CVE-2026-111497 в Brotli, библиотеката на Google за компресиране на данни. Грешката е в частта, която разкомпресира данните, и засяга версиите от 1.0.3 до 1.2.0. На 21 октомври 2026 г. проектът пусна поправките 1.0.10, 1.1.1 и 1.2.1, а на 27 октомври американската агенция за киберсигурност CISA добави уязвимостта в каталога си с пробиви, които вече се използват в атаки. Самият WordPress не съдържа Brotli, но сървърът, на който работи сайтът Ви, може да го има, и WordPress го използва, когато тегли данни от други сайтове.

Въпреки името грешката не е в протокола HTTP/2. Тя няма връзка и с PHP2Shell, двете критични уязвимости в самия PHP от същия месец, за които писахме в отделна новина. По-долу ще разберете къде точно е грешката, кой трябва да я поправи и какво да попитате хостинга.

Какво е Brotli и къде е грешката

Brotli е формат за компресия. Когато браузърът на посетителя съобщи, че го разбира, сървърът може да изпрати страницата, стиловете и скриптовете компресирани с Brotli, за да пътуват по-бързо. За това служат модули като mod_brotli за Apache и ngx_brotli за nginx. Според документацията им те само компресират отговорите, тоест използват кодера на библиотеката.

Уязвимостта е в обратната посока, в декодера, който разкомпресира получени данни (файлът c/dec/decode.c). Подготвен поток с Brotli кара декодера да пише извън паметта, заделена за него (out-of-bounds write). Според записа в CVE така нападател без акаунт може да повреди паметта на програмата, да прочете части от нея, да я срине или евентуално да изпълни свой код. Red Hat уточнява, че атака е възможна само когато засегнатата програма разкомпресира данни с Brotli, подадени от нападателя.

Google отговаря за записите в CVE за Brotli и оценява уязвимостта с 9.2 от 10 по CVSS 4.0, „критична“. Red Hat я оценява като „важна“ (Important). Какво значат тези числа, е обяснено в ръководството за CVSS.

Защо HTTP2Shell засяга WordPress, без в него да има Brotli

Освен че отговаря на посетителите, WordPress и сам тегли данни от други сайтове, например когато вгражда видео по адрес (oEmbed), чете RSS емисия или проверява pingback от друг блог. За тези заявки използва curl, библиотеката за мрежови заявки на сървъра. В кода на WordPress curl се настройва с празна стойност за CURLOPT_ENCODING. Според документацията на curl това значи, че WordPress приема всяка компресия, която curl познава, включително Brotli, а curl сам разкомпресира отговора.

За Brotli curl използва системната библиотека. В Debian например пакетът на libcurl зависи от libbrotli1, а libbrotli1 съдържа и кодера, и декодера. Така WordPress стига до уязвимия код, без в него да има и ред от Brotli.

Patchstack описва най-краткия път. Нападателят изпраща до xmlrpc.php на сайта заявка pingback.ping с адрес на свой сървър. WordPress отваря този адрес, за да провери връзката, а сървърът на нападателя връща подготвен поток с Brotli. По същия начин до декодера стигат oEmbed, четенето на RSS и всеки плъгин или тема, които теглят адрес, подаден от посетител. Защитната стена за уеб приложения (WAF) не вижда нищо подозрително във входящата заявка, защото опасното съдържание пристига в отговора на чуждия сървър.

Използва ли се вече уязвимостта в атаки?

CISA добави CVE-2026-111497 в каталога Known Exploited Vulnerabilities на 27 октомври 2026 г. и даде срок до 10 ноември на американските държавни институции. Изследователите са стигнали до изпълнение на код срещу определени компилации на Node.js и Bun.

За WordPress картината засега е по-спокойна. Според Patchstack към 30 октомври няма публична атака, която да изпълнява код през PHP под Apache или PHP-FPM. Публикуван лабораторен опит показва, че през pingback процесът на PHP може да бъде сринат, а с много малък поток и да натовари процесора докрай. Затова Patchstack смята, че основният риск за сайтовете с WordPress е срив и недостъпност (denial of service). Грешката обаче поврежда паметта и записът в CVE не изключва изпълнение на код, затова не отлагайте поправката.

Засегнат ли е Вашият сайт?

Уязвимостта е в сървъра. Обновяването на WordPress, на темата или на плъгините не я поправя, и в Plugins > Installed Plugins няма какво да откриете. Засегнат е всеки сайт, чийто сървър още има стара библиотека Brotli, която curl или друг софтуер използва за разкомпресиране.

Отвън можете да видите само дали сървърът компресира с Brotli. Командата по-долу се пуска в терминала на Mac или Linux или в Terminal на cPanel и само чете заглавките на отговора. Сменете primer.bg с адреса на Вашия сайт.

Bash
# Терминал на Вашия компютър или cPanel > Terminal
# Само чете. Показва дали отговорът идва компресиран с Brotli.
curl -s -o /dev/null -D - -H 'Accept-Encoding: br' \
  https://primer.bg/ | grep -i -E '^(content-encoding|server):'

Ред content-encoding: br значи, че сайтът отговаря с Brotli. Това показва само, че Brotli е включен, а не че сървърът е уязвим, защото компресията използва кодера, а грешката е в декодера. Ако редът server показва cloudflare или друг CDN, отговорът идва от него и проверката не казва нищо за Вашия сървър. Ако br го няма, това също не е знак, че сте в безопасност, защото curl на сървъра може да разкомпресира Brotli и когато сайтът не компресира с него. Сигурен отговор може да Ви даде само този, който поддържа сървъра.

Какво да попитате хостинга

Изпратете на хостинга, или на човека, който поддържа сървъра Ви, тези въпроси:

  • Обновен ли е пакетът на Brotli в операционната система (в Debian и Ubuntu той се казва libbrotli1) до версия с поправката за CVE-2026-111497?
  • Рестартирани ли са след това PHP-FPM, уеб сървърът и другите услуги, които използват библиотеката? Процесите, пуснати преди обновлението, работят със старото копие, докато не бъдат рестартирани.
  • Има ли на сървъра PHP разширението brotli и ако има, обновено ли е до версия 0.21.1, която идва с Brotli 1.2.1?
  • Блокиран ли е xmlrpc.php за сайтове, които не го използват?
  • Има ли в логовете сривове (segfault) на Apache или PHP-FPM след 21 октомври?

Дистрибуциите често добавят поправката към старата версия, без да сменят номера ѝ. Затова в Debian 13 поправеният пакет пак започва с 1.1.0 и хостингът трябва да провери пълната версия на пакета, а не номера на библиотеката.

СофтуерВерсия с поправката
Brotli на Google1.0.10, 1.1.1, 1.2.1
Debian 131.1.0-2+deb13u1
Debian 121.0.9-2+deb12u1
Ubuntu 26.04 LTS1.2.0-3ubuntu0.1
Ubuntu 24.04 LTS1.1.0-2ubuntu0.1
Ubuntu 22.04 LTS1.0.9-2ubuntu0.1
PHP разширението brotli0.21.1
Node.js22.23.4, 24.22.1, 26.12.1

Какво да направите

  1. Пишете на хостинга с въпросите по-горе и поискайте писмен отговор, че пакетът е обновен и услугите са рестартирани. Това е единствената стъпка, която поправя самата грешка.
  2. Докато чакате, затворете пътя през pingback. Ако сайтът не използва XML-RPC, помолете хостинга да блокира xmlrpc.php на ниво сървър или разработчика да махне методите pingback.ping и pingback.extensions.getPingbacks през филтъра xmlrpc_methods. Преди това проверете с разработчика дали нещо на сайта не разчита на XML-RPC.
  3. Ако магазинът Ви е headless и витрината работи на Node.js, например с Next.js, обновете Node.js до 22.23.4, 24.22.1 или 26.12.1 и пуснете приложението отново. Ако Node.js използва системната библиотека Brotli, както отбелязва Ubuntu за версиите от 22.04 нататък, трябва да се обнови и системният пакет. Ако сайтът работи в Docker, обновете libbrotli1 в образа и го изградете наново, защото по данни на Patchstack официалният образ wordpress:latest към 30 октомври още съдържа уязвимата версия.
  4. Ако сайтът започне да връща грешки 502 или 503 без видима причина, кажете на хостинга веднага. Сривът на процесите на PHP е точно това, което показват досегашните опити срещу WordPress.

Какво правим ние

Brotli е системна библиотека, а не плъгин, затова не влиза в ежедневната проверка на плъгините, темата и WordPress при наблюдението на уязвимостите. Когато поддържаме и сървъра на сайта, обновленията за сигурност на сървъра от поддръжката на WordPress включват и системни библиотеки като Brotli, заедно с рестарта на услугите, които ги използват. На споделен хостинг пакетите се обновяват от хостинга. Ако искате да прегледаме Вашия сървър, пишете ни през формата за запитване.

Често задавани въпроси

Какво е HTTP2Shell?

HTTP2Shell е името, под което се разпространи CVE-2026-111497, уязвимост в декодера на Brotli, библиотеката на Google за компресия. Засегнати са версиите от 1.0.3 до 1.2.0, а поправките 1.0.10, 1.1.1 и 1.2.1 излязоха на 21 октомври 2026 г. Въпреки името грешката не е в протокола HTTP/2 и няма връзка с PHP2Shell, двете уязвимости в самия PHP от октомври 2026 г.

Засегнат ли е сайтът ми с WordPress, щом WordPress не съдържа Brotli?

Може да е. Когато WordPress тегли данни от друг сайт, например при pingback, oEmbed или RSS, използва curl на сървъра, а curl разкомпресира Brotli със системната библиотека. Ако тя е от уязвима версия, сайтът е засегнат, без в WordPress да има ред от Brotli.

Кои версии на Brotli поправят HTTP2Shell?

Brotli 1.0.10, 1.1.1 и 1.2.1 от 21 октомври 2026 г. поправят CVE-2026-111497. Дистрибуциите добавят поправката в своите пакети, например 1.1.0-2+deb13u1 в Debian 13, 1.0.9-2+deb12u1 в Debian 12 и 1.1.0-2ubuntu0.1 в Ubuntu 24.04 LTS. Поправеното PHP разширение brotli е версия 0.21.1, а при Node.js това са 22.23.4, 24.22.1 и 26.12.1.

Защо поправеният пакет на Brotli пак е с версия 1.1.0?

Debian и Ubuntu не сменят библиотеката с нова версия, а добавят поправката към старата и променят само края на номера на пакета. Затова Brotli в Debian 13 пак отчита 1.1.0, но пакетът 1.1.0-2+deb13u1 е поправен. Хостингът трябва да провери версията на пакета, а не номера, който библиотеката съобщава.

Поправя ли HTTP2Shell обновяването на плъгините или на WordPress?

Не. CVE-2026-111497 е в системната библиотека Brotli на сървъра, затова поправката е обновяване на пакета на операционната система и рестарт на услугите, които използват библиотеката. На споделен хостинг това прави хостингът, а на собствен сървър човекът, който го поддържа.

Как да разбера дали сървърът ми използва Brotli?

Командата curl -s -o /dev/null -D - -H 'Accept-Encoding: br' https://primer.bg/ показва заглавките на отговора, и ако сред тях има content-encoding: br, сайтът компресира с Brotli. Това не доказва, че сървърът е уязвим, защото компресията използва кодера, а грешката е в декодера. Ако пред сайта има CDN като Cloudflare, отговорът идва от него и не казва нищо за самия сървър.

Атакува ли се вече HTTP2Shell?

CISA добави CVE-2026-111497 в каталога си с уязвимости, които се използват в атаки, на 27 октомври 2026 г. Изпълнение на код е показано срещу определени компилации на Node.js и Bun. Според Patchstack към 30 октомври 2026 г. няма публична атака, която изпълнява код през PHP, а лабораторен опит срива процеса на PHP през pingback, затова основният риск за WordPress засега е недостъпност на сайта.

Помага ли изключването на XML-RPC срещу HTTP2Shell?

Изключването на XML-RPC затваря най-краткия път, заявката pingback.ping към xmlrpc.php, но не поправя грешката, защото oEmbed, RSS и плъгините също стигат до декодера на Brotli. Филтърът xmlrpc_enabled не спира pingback, затова блокирайте xmlrpc.php на сървъра или махнете методите за pingback през филтъра xmlrpc_methods. Истинската поправка е обновеният пакет на Brotli на сървъра.

Източници

# ЕтикетиСигурностХостинг
СподелетеFacebookXLinkedIn