Přeskočit na obsah
Tech-Blog Chatujme.cz Chatujme.cz
Programování

Vite opravil tři chyby vývojového serveru, dvě z nich pouštěly k zakázaným souborům

Nástroj Vite vydal 6. října 2026 opravy pro pět vývojových řad a zveřejnil k nim tři bezpečnostní hlášení. Dvě chyby dovolily vývojovému serveru vydat soubor, ke kterému měl přístup zakázat, třetí umožnila podstrčit stránce skript z cizí domény. Hotové sestavení webu se netýkají.

· 17 zhlédnutí

Vývojáři s notebooky na setkání o Node.js, v sále promítačka
Setkání vývojářů pracujících s Node.js, běhovým prostředím, ve kterém Vite běží. Foto: Pete Prodoehl, Flickr (CC BY 2.0)

Vite při vývoji posílá prohlížeči zdrojové soubory rovnou jako moduly a celek sbalí až pro produkci. Jak to funguje, popisuje náš starší článek o Vite a TypeScriptu. Všechny tři nové chyby se týkají jen toho vývojového serveru, ne souborů, které z něj vzniknou a jdou na web.

Projekt 6. října 2026 ráno vydal naráz verze 8.3.3, 8.2.4, 8.1.6 a 7.3.7, krátce nato i 6.4.4. Podle časů v registru npm dělila první a poslední z nich necelá hodina a tři čtvrtě. Odpoledne téhož dne zveřejnil tři bezpečnostní hlášení: dvě se střední závažností, jedno s nízkou. Číslo CVE ani známku CVSS v době psaní žádné z nich nemělo. Opravy připravil jeden ze správců ve třech pull requestech, které se sloučily v rozmezí dvaceti minut, necelou hodinu před vydáním.

Soubor systému místo souboru projektu

První chyba je popsaná v hlášení GHSA-rq7h-c2jc-7f22. Vite smí přes zvláštní cestu /@fs/ vydávat soubory mimo kořen projektu, ale jen ty, které povoluje volba server.fs.allow. Výjimku mají moduly, které projekt sám importuje; server si je zapisuje do seznamu bezpečných cest.

Do toho seznamu ale ukládal adresu, pod kterou modul zná prohlížeč, převedenou na cestu bez vztažení ke kořeni projektu. Když projekt importoval soubor, jehož cesta od kořene projektu zní stejně jako absolutní cesta na disku, zapsal se do seznamu soubor systému. Hlášení to předvádí na složce etc v projektu, která se jmenuje stejně jako systémová. Server pak na dotaz vydal soubor počítače místo souboru projektu.

Podmínek je víc najednou. Server musí být zpřístupněný do sítě přepínačem --host nebo volbou server.host, nesmí běžet na Windows, hledaný soubor nesmí chytit seznam server.fs.deny a v projektu musí existovat soubor s takovou shodou jmen. Oprava zapisuje do seznamu skutečný identifikátor modulu, ne adresu. Chyba je ve všech řadách od 6 do 8.

Čtyři bajty v chybové hlášce

Druhé hlášení, GHSA-vfpm-58rq-9qcg, se týká parametru vite-wasm-instance, který obsluhuje vestavěný zásuvný modul pro WebAssembly. Ten parametr z dotazu odstranil a soubor přečetl z disku, aniž by se ptal na pravidla server.fs. Potom se ho pokusil přeložit jako WebAssembly.

Když soubor WebAssembly nebyl, vyhodily Node.js i Deno chybu, v jejímž textu stojí první čtyři bajty souboru. Hlášení to ukazuje na souboru .env, který výchozí seznam server.fs.deny jinak blokuje. Ven se tak dostane jen začátek souboru, ne jeho celý obsah. Pod Bunem chyba nenastává.

I tady musí být server vystavený do sítě. Chyba je jen v řadách 8.2 a 8.3. Oprava přidala parametr mezi ty, u kterých server přístup ověřuje.

Cizí skript ve vloženém serveru

Třetí chyba, GHSA-9jrq-w75r-8gcw s nízkou závažností, se týká aplikací, které Vite vkládají do vlastního serveru. Používají k tomu volbu server.middlewareMode nebo appType: 'custom' a funkci transformIndexHtml předávají adresu požadavku beze změny. Přesně tak to radil i průvodce serverovým vykreslováním v dokumentaci projektu.

Vite z té adresy skládal cestu k souboru i s textem za otazníkem a adresu pak převzal do odkazu na vložený skript stránky. Upravená adresa tak vedla k tomu, že stránka z vývojového serveru načetla skript z cizí domény. Útočníkovi k tomu stačí, aby vývojář s běžícím serverem navštívil jeho stránku. Server proto nemusí být vystavený do sítě. Co pak skript napáchá, záleží na tom, co aplikace v prohlížeči drží.

Oprava před skládáním cesty odřízne dotazovou část a dvojité lomítko na začátku cesty zkrátí na jedno. Zasažené jsou řady 6 až 8.

Co udělat

Stačí povýšit na opravenou verzi své řady. Sada nástrojů Vite+, tedy balík vite-plus, dostala opravu všech tří chyb ve verzi 1.1.0 o den později. Kdo vývojový server do sítě vystavovat nepotřebuje, nechá výchozí localhost; tím odpadají první dvě chyby i bez aktualizace.

Pro Vite je to letos třetí várka bezpečnostních hlášení. V dubnu vyšla tři, dvě z nich s vysokou závažností, a v červnu jedno vysoké, které se týkalo obcházení server.fs.deny na Windows.

Zdroje

Programování

JavaScript Vite Bezpečnost

← zpět na výpis