Aktuálna situácia: PHP2Shell. Dve kritické zraniteľnosti PHP (CVSS 9.2) umožňujú spustenie škodlivého kódu bez prihlásenia. Záplaty od 21. 10. 2026.Čo treba urobiť teraz →

Bezpečnosť Symfony po PHP2Shell: zabezpečiť projekty a workery

Aplikácie Symfony sa PHP2Shell týka cez PHP. Dôležité sú záplata a reštart aj workerov Messenger, chránené secrets, čistá cache a žiadny profiler v produkcii.

Stav 4 min čítaniaPlatformy

Stručne: Bezpečnosť Symfony po PHP2Shell znamená: záplatovať PHP, reštartovať všetky procesy vrátane workerov Messenger a potom skontrolovať secrets, cache a profiler. Zraniteľnosť je v PHP, nie v Symfony; samotná aktualizácia Symfony ju neuzatvorí.

Prečo PHP2Shell zasahuje každý projekt Symfony

Symfony je základom mnohých podnikových aplikácií, API a portálov a nachádza sa aj v systémoch, ako sú Shopware 6 a Contao. Zraniteľnosti PHP CVE-2026-109618 a CVE-2026-109619 podľa tímu PHP umožňujú spustenie škodlivého kódu bez prihlásenia. Či je aplikácia čisto naprogramovaná, na tom nezáleží.

Tím PHP hodnotí riziko pri mod_php ako najvyššie, dotknuté sú však aj PHP-FPM, php-cgi, FrankenPHP a LiteSpeed. Projekty Symfony, ktoré sa prevádzkujú cez Symfony Runtime s FrankenPHP alebo inými trvalo bežiacimi servermi, potrebujú po aktualizácii úplný reštart alebo nový obraz.

Bezpečnosť Symfony: skontrolovať verziu PHP a procesy

php bin/console about zobrazuje verziu Symfony, prostredie, režim ladenia a verziu PHP z príkazového riadku. Webové požiadavky však bežia cez PHP-FPM alebo aplikačný server a to môže byť iná verzia. Skontrolujte obe cesty alebo si ich nechajte potvrdiť od prevádzkovateľa.

Opravené upstream verzie sú 8.5.12, 8.4.27, 8.3.36 a 8.2.35; backporty distribúcií často nesú staršie čísla. Ktoré verzie PHP vaša verzia Symfony podporuje, skontrolujte podľa systémových požiadaviek v dokumentácii na symfony.com.

# Zobraziť prostredie, režim ladenia a verziu PHP
php bin/console about
# Nechať workery Messenger ukončiť po aktuálnej správe
php bin/console messenger:stop-workers
# Známe zraniteľnosti v závislostiach
composer audit

Ak beží viac inštancií za load balancerom alebo v kontajneroch, musí byť každá jednotlivá záplatovaná a reštartovaná. Zabudnutá inštancia naďalej vybavuje časť požiadaviek na starom PHP.

Workery Messenger, príkazy cron a iné procesy na pozadí načítajú PHP raz pri štarte. Kým sa nereštartujú, bežia so starým PHP v pamäti. Správca procesov ich musí po zastavení opäť spustiť.

Kde sú aplikácie Symfony napadnuteľné

Miesto Obsah Bod kontroly
.env, .env.local, .env.local.php Premenné prostredia, často databáza a kľúče API Nesmú byť dostupné z webrootu, hodnoty pri podozrení obnoviť
config/secrets/prod/ Zašifrované secrets Súkromný dešifrovací kľúč nepatrí do repozitára
public/ Koreň dokumentov s index.php Ďalšie súbory PHP
var/cache/prod/ Vygenerovaný kontajner a šablóny ako PHP Pri podozrení zmazať a vytvoriť znovu
var/log/ Protokoly Zálohovať
config/packages/security.yaml Firewally, roly, pravidlá prístupu Neočakávané zmeny

Cache je podceňovaný úkryt. Symfony tam vytvára súbory PHP, ktoré sa načítavajú pri každej požiadavke. Zmena v týchto súboroch v repozitári nepadne do oka, pretože cache nie je verziovaná.

Dôležité

V produkcii patria APP_ENV=prod a APP_DEBUG=0 a WebProfilerBundle tam nesmie byť aktívny. Verejne dostupný profiler pod /_profiler prezrádza konfiguráciu a údaje požiadaviek.

Administračné oblasti, bundly a závislosti

Projekty Symfony majú podľa štruktúry vlastné administračné oblasti, často s bundlami, ako sú EasyAdmin alebo Sonata. V security.yaml skontrolujte, ktoré cesty vyžadujú ktoré roly, a v databáze, kto tieto roly má. Administračné cesty, ktoré sa potrebujú len interne, by mali byť na úrovni webového servera obmedzené na známe siete.

Bundly a balíky Composeru sú cudzí kód s vlastnými zraniteľnosťami. composer audit zobrazuje známe problémy; podrobnejšie na stránke Skontrolovať závislosti Composeru na zraniteľnosti. Zastarané balíky sú navyše najčastejším dôvodom, prečo aktualizácia PHP v projektoch Symfony trvá dlhšie, než sa plánovalo.

Čo aktualizácia Symfony dokáže a čo nie

Aktualizácia komponentov Symfony uzatvára chyby vo frameworku. PHP nezáplatuje, nereštartuje workery, neobnoví uniknuté secrets a neodstráni zmanipulovanú cache. Či existujú známky útoku, popisuje stránka Som už kompromitovaný?. Keďže neexistujú potvrdené Indicators of Compromise, pomáha predovšetkým pozorovanie nezvyčajného správania, napríklad neočakávaných procesov alebo odchádzajúcich spojení.

Ak sa projekt dodáva ako kontajner, nové PHP patrí do základného obrazu. Obraz zostavte znovu, aj keď sa na kóde nič nezmenilo, a nasaďte ho vo všetkých prostrediach. Pohľad do Dockerfile ukáže, ktorý základný obraz sa používa; pevne nastavený starý tag by inak zabránil tomu, aby nové zostavenie vôbec dostalo záplatované PHP. Podrobnosti sú na stránke Záplatovanie PHP v kontajneroch Docker.

Ako konkrétne pomáha PHP SOS?

  • Zisťujeme, ktoré PHP používa web, CLI a worker vášho projektu Symfony, a sprevádzame usporiadaný reštart.
  • Zálohujeme logy od 20. 10. 2026 a porovnávame kód na serveri s vaším repozitárom.
  • Kontrolujeme súbory prostredia, secrets, cache, nastavenia profileru a admin roly.
  • Na priebežné sledovanie procesov a spojení ponúkame security monitoring.

Časté otázky

Týka sa PHP2Shell Symfony?

Samotné Symfony nemá novú zraniteľnosť. PHP2Shell je v PHP, teda v prostredí behu každej aplikácie Symfony. Zraniteľnosť sa uzatvára aktualizáciou PHP alebo potvrdeným backportom a reštartom všetkých procesov PHP.

Ako zastavím workery Messenger po aktualizácii PHP?

Príkazom php bin/console messenger:stop-workers sa bežiacim workerom prikáže ukončiť sa po aktuálnej správe. Správca procesov, ako je Supervisor alebo systemd, ich potom spustí znovu s novým PHP.

Prečo je profiler Symfony v produkcii nebezpečný?

Profiler ukazuje požiadavky, konfiguráciu a často aj premenné prostredia. Ak je aktívny na verejnom serveri, môže tieto informácie získať ktokoľvek. Patrí iba do vývojového prostredia.

Čo sa stane s cache po útoku?

Cache pod var/cache obsahuje vygenerovaný kód PHP. Útočník tam môže uložiť kód, ktorý sa vykonáva pri každej požiadavke. Pri podozrení by sa cache mala zmazať a vytvoriť znovu zo skontrolovaného zdrojového kódu.

Zdroje

Okamžitý kontakt

Každá hodina sa počíta. Napíšte nám hneď.

Stručne opíšte systém, verziu PHP a svoje pozorovanie. Ozveme sa, vyjasníme situáciu a budeme pracovať na diaľku, kým nebude incident uzavretý a zdokumentovaný.

Okamžitá pomoc