Накратко: Според съобщенията CERT-EU (службата за киберсигурност на институциите на ЕС) съветва да се опишат PHP инсталациите, да се пачва незабавно и публично достъпните приложения да се изолират, ако не могат да бъдат пачнати своевременно. CERT-Bund (германският правителствен CERT) и BSI (Федералната служба за информационна сигурност на Германия) препоръчват в предупреждението си незабавна актуализация и, ако това не е възможно, временно изключване на засегнатите уеб сървъри от мрежата. Препоръките съвпадат в същината: първо актуализация, изолацията като авариен вариант, временните мерки само като допълнение.
Кой предупреждава и за кого?
При PHP2Shell няколко официални органа реагираха в рамките на часове. За фирмите в Германия първият адрес е BSI с екипа си за компютърно реагиране CERT-Bund. CERT-EU е службата за киберсигурност на институциите на ЕС; указанията ѝ са насочени първо към тях, но се четат в цяла Европа. Според BleepingComputer е предупредил и британският National Cyber Security Centre. От частния сектор се обявиха между другото Huntress и Cloudflare.
За Вас като оператор произходът е по-маловажен от съвпадението. Когато няколко независими органа съветват едно и също, това е силен сигнал.
CERT-Bund, CERT-EU и други: предупрежденията за PHP в сравнение
| Орган | Основна препоръка | Особеност |
|---|---|---|
| BSI / CERT-Bund | актуализирайте незабавно, иначе временно изключете уеб сървъра от мрежата | ниво на предупреждение 3 / оранжево |
| CERT-EU | опишете PHP инсталациите, пачвайте незабавно, иначе изолирайте публичните приложения | според съобщенията е считал за възможно засягане на версиите от PHP 5 нагоре |
| UK NCSC | актуализирайте незабавно или изключете засегнатите системи от мрежата до пача | според BleepingComputer |
| php.net | актуализирайте до 8.5.12, 8.4.27, 8.3.36 или 8.2.35, временните мерки само като частична защита | първичен източник за версии и настройки |
Никой от органите не препоръчва да се разчита само на Web Application Firewall или на настройки в php.ini. Всички посочват актуализацията като същинското решение. Какво още съветва BSI в подробности, е описано на страницата Какво препоръчва BSI за PHP2Shell.
Въпросът за версиите: какво означава „от PHP 5 нагоре“
Според съобщенията CERT-EU е считал за възможно да са засегнати версиите от PHP 5 нагоре. Според специализирани доклади органът се е опирал на информация, която е циркулирала преди официалното съобщение. Специализираната преса говори за почти всички версии чак до PHP 5.4.
На практика точната граница променя малко. За PHP 8.1 и по-стари PHP проектът вече не издава официални актуализации. Има минимални backport-ове на изходния код за 7.4, 8.0 и 8.1, но няма издания. Който още работи с PHP 5 или 7, разчита на дистрибуции, доставчици от трети страни или миграция. Дали Вашата дистрибуция е доставила поправка, показват нейните собствени страници за сигурност, например Debian Security Tracker, Ubuntu Security Notices или указанията на Red Hat. Съществуват и търговски предложения за дългосрочна поддръжка на стари PHP версии; дали покриват PHP2Shell, трябва да поискате писмено потвърждение от доставчика. Подробности за клоновете има в Кои PHP версии са засегнати? и PHP 8.1 и по-стари.
Изолиране: как да приложите препоръката
„Изолиране“ звучи абстрактно. Има се предвид заявките от интернет да не достигат до уязвимото PHP приложение. В зависимост от приложението има няколко степени:
- Пълно изключване: Уебсайтът се заменя със статична страница за извънредни случаи без PHP. Това е най-сигурният вариант.
- Ограничаване на достъпа: Приложението остава в работа, но е достъпно само през VPN или за определени IP адреси, например за вътрешни портали.
- Предварително включено влизане: Влизане на ниво уеб сървър или прокси преди приложението. Внимание: при mod_php беше показан експлойт, преди да се изпълни кодът на приложението. Затова влизането трябва да действа преди PHP, а не в приложението.
- Блокиране на директния достъп до източника: Който ползва прокси или CDN услуга, трябва да се увери, че сървърът не е допълнително достъпен директно.
Ограничение в уеб сървъра може да изглежда така, като безопасна конфигурация за Apache:
# Разрешаване на достъп само от вътрешната мрежа (променете примерния диапазон)
<Location "/">
Require ip 192.0.2.0/24
</Location>
Тествайте действието отвън, например през мобилна връзка. Изолация, проверена само във фирмената мрежа, не е проверена изолация.
Изолирането е мост. Още при изолирането определете до кога ще дойде актуализацията и кой ще я инсталира. Иначе авариеното решение става постоянно състояние.
Какво изискват общо препоръките: инвентар
Всички официални органи предполагат, че знаете къде работи PHP. Именно тук много фирми се провалят: микросайтове от стари кампании, забравен клиентски портал, тестова система с публичен адрес, приложение на NAS. CERT-EU изрично назовава описването на PHP инсталациите като първа стъпка.
Забравени системи най-лесно откривате по три пътя: DNS зоните на Вашите домейни, списъка на издадените TLS сертификати и договорите с агенции, хостинг доставчици и доставчици на софтуер. Всеки запис, за който никой не може веднага да каже какво стои зад него, влиза в списъка за проверка. Именно такива системи са опасни в ситуация като PHP2Shell, защото никой не ги пачва и никой не ги търси, когато бъдат компрометирани.
Използваем инвентар съдържа за всяка система: адрес, предназначение, оператор, PHP версия и режим на работа, източник на пакетите и лице за контакт за актуализации. Как да го изградите и поддържате актуален, показва статията Инвентар на всички уебсайтове и сървъри.
Как помага PHP SOS конкретно?
- Описване: Установяваме Вашите публично достъпни PHP системи и ги подреждаме по риск.
- Пач или изолация: Инсталираме актуализации или изолираме приложения, които не могат да бъдат пачнати веднага, и проверяваме действието отвън.
- Стари версии: За системи с PHP 8.1 и по-стари планираме с Вас пътя към поддържано състояние.
- Доказателство: Получавате документация на приложените препоръки за всяка система.
Как довеждаме старите приложения до поддържани версии, описва услугата PHP миграция за наследени системи.
Заключение
CERT-EU, CERT-Bund, BSI и PHP проектът говорят в един глас: актуализирайте, а където това не е възможно веднага, изолирайте. Разликите са в подробности като границата на версиите. За Вашата практика значи първата стъпка, която всички предполагат: да знаете къде навсякъде работи PHP.
Често задавани въпроси
Каква е разликата между CERT-Bund и CERT-EU?
CERT-Bund е екипът за компютърно реагиране при BSI и предупреждава за уязвимости в Германия. CERT-EU е службата за киберсигурност на институциите и органите на Европейския съюз. И двата издават препоръки, които са полезни и за фирмите.
Какво означава да се изолира едно PHP приложение?
След това приложението вече не е свободно достъпно от интернет. Това е възможно чрез страница за извънредни случаи, чрез достъп само през VPN или от определени IP адреси, или чрез пълно изключване. Решаващо е заявките отвън да не достигат до уязвимия PHP процес.
Засегнати ли са според CERT-EU и версиите на PHP 5?
Според съобщенията CERT-EU е считал за възможно да са засегнати версиите от PHP 5 нагоре и се е опирал на информация, която е циркулирала преди официалното съобщение. Специализираната преса говори за почти всички версии до PHP 5.4. За толкова стари версии няма официални актуализации.
Има ли официални признаци за разпознаване на атаки?
Не. Засега няма публикувани, потвърдени индикатори за компрометиране (IoC) за PHP2Shell. Разпознаването се основава на анализ на поведението, например на процеси на уеб сървъра, които стартират shell, или на нови PHP файлове в папките за качване.