Composer 2.9 výrazně šlape do bezpečnosti projektů

Composer byl dlouho hlavně nástroj na správu závislostí. V posledních verzích se ale začal chovat mnohem přísněji – a klidně vám zablokuje aktualizaci kvůli známé zranitelnosti v některé z knihoven.

Věřím, že příkaz composer audit většina ze čtenářů Maxiorla už zná. Ale přesto. Pokud jej spustíte ve svém projektu, projde všechny balíčky instalované podle souboru composer.lock a vypíše vám seznam těch, pro které eviduje známé zranitelnosti.

Image
Ukázka výstupu composer audit pro delší dobu neudržovaný web s Drupalem, samé staré moduly
Ukázka výstupu composer audit pro delší dobu neudržovaný web s Drupalem, samé staré moduly

Například u Drupalu je důležité připomenout, že Composer spravuje nejenom jádro a použité moduly nebo témata vzhledu, ale také celou řadu knihoven. Jejich zranitelnost přímo v administraci na stránce s výpisem aktualizací neuvidíte. Ve výpisu auditu z Composeru ano.

Image
Kromě zranitelností vás composer audit upozorní také na opuštěné balíčky, což nemusí být automaticky problém
Kromě zranitelností vás composer audit upozorní také na opuštěné balíčky, což nemusí být automaticky problém

Nové zabezpečení

Pokud máte ve svém projektu součástku se známou zranitelností, při spuštění příkazu pro aktualizaci nebo začlenění nového balíčku Composer zanalyzuje bezpečnostní doporučení a v případě nalezení zranitelností jejich stažení zablokuje. Posouvá se tak do role aktivního ochránce.

Zní to dobře, ve skutečnosti můžete narazit na různé problémy, kdy vám Composer odmítne provést aktualizaci kvůli nějakým chybám. U starších verzí projektů může být naopak potřeba použít staré balíčky kvůli kompatibilitě, byť to v kontextu zabezpečení zní absurdně.

💡Narazil jsem na to u některých starých projektů. Některé zranitelnosti jsou nebezpečné jen v konkrétní kombinaci, která u daného projektu nemusí nastat. I proto je fajn, že lze zabezpečení obejít.

Jak zabezpečení vypnout

Vypínat toto nové zabezpečení nedoporučuju. Pokud byste přesto potřebovali zabezpečení potlačit nebo upravit, tak přidejte do souboru composer.json následující konfiguraci:

{

    "config": {

        "audit": {

            "block-insecure": false

         }

     }

 }

To je nejjednodušší řešení. Pokud dáváte přednost selektivnímu potlačení bezpečnostní kontroly, je možné ji deaktivovat i pouze pro konkrétní CVE:

{

    "config": {

        "audit": {

            "ignore": {

                "CVE-2026-12345": "Netýká se nás"

             }

         }

     }

 }

Další možnosti konfigurace bezpečnostní kontroly v Composeru najdete v dokumentaci.

Jak často kontrolu spouštět?

Pokud nemáte celý proces automatizován, doporučuji composer audit spouštět u kritických webů každý den, u těch běžných jednou týdně. To mám zavedeno i u svých projektů. Většina běží na Drupalu, který aktualizace zveřejňuje jednou týdně ve středu, takže poté provádím kontroly.

U starších projektů nebo komplikovaných závislostí může bezpečnostní kontrola spíš brzdit než pomáhat. Přesto mi dlouhodobě dává smysl ji nevypínat automaticky, ale nejdřív se zamyslet, proč Composer protestuje.

Beru to jako další připomínku, že bezpečnost dnes není jednorázová akce při vydání webu, ale průběžný proces. A Composer se do něj konečně zapojil způsobem, který má reálný dopad.

Buďme ve spojení, přihlaste se k newsletteru

Odesláním formuláře souhlasíte s podmínkami zpracováním osobních údajů. 
Více informací v Ochrana osobních údajů.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.

Komentáře k článku

Přidat komentář

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Moje kniha o CMS Drupal

 

Kniha 333 tipů a triků pro Drupal 9


Více na KnihyPolzer.cz

Poslední komentáře