CVE-2026-115895
WysokieCVSS 8.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 41 - wyżej niż 41% wszystkich znanych CVE
Streszczenie
Happy DOM od wersji 17.0.0 do 21.0.4 w ECMAScriptModuleCompiler.ts przyjmuje alias importu ESM bez walidacji, że jest poprawnym identyfikatorem wiązania JS; przy włączonym enableJavaScriptEvaluation złośliwy HTML lub źródło modułu może spowodować wykonanie wygenerowanego JavaScriptu w procesie hosta Node.js.
Ocena ryzyka
Atakujący może doprowadzić do wykonania kodu w procesie Node.js hosta, co może skutkować pełnym przejęciem aplikacji.
Rekomendacja
Zaktualizuj Happy DOM do wersji 21.0.4 lub nowszej oraz rozważ wyłączenie enableJavaScriptEvaluation, jeśli nie jest wymagane.
Inne podatności w Happy DOM
Zobacz wszystkie- CVE-2025-62410Krytyczne
W wersjach przed 20.0.2 stwierdzono, że --disallow-code-generation-from-strings nie jest wystarczające do izolacji niezaufanego kodu JavaScript w happy-dom. Niezaufany skrypt i reszta aplikacji nadal działają w tym samym Isolate/procesie, więc atakujący mogą wdrażać ładunki zanieczyszczenia prototypu, aby przejąć ważne referencje, takie jak "process", lub przejąć przepływ sterowania poprzez manipulację sprawdzeniami niezdefiniowanych właściwości. Luka wynika z niekompletnej poprawki dla CVE-2025-61927. Podatność została naprawiona w wersji 20.0.2.
- CVE-2026-118661Średnie
W Happy DOM przed wersją 20.14.6 komponent CookieContainer nieprawidłowo waliduje i dopasowuje atrybuty Domain plików cookie. Może akceptować Domain niezwiązany z originem ustawiającym cookie, w tym publiczny sufiks, oraz traktować niepowiązaną nazwę hosta dzielącą sufiks jako dopasowanie, ponieważ cookieMatchesURL nie wymusza granicy etykiety DNS.
- CVE-2026-118660Wysokie
W Happy DOM przed wersją 21.0.0 podczas przetwarzania niezaufanego HTML na serwerze domyślnie ładowane są adresy URL iframe src oraz link rel="stylesheet" href, ponieważ opcje disableIframePageLoading i disableCSSFileLoading mają domyślnie wartość false. Atakujący kontrolujący przetwarzany HTML może wywołać żądania serwerowe do dowolnych wewnętrznych lub chmurowych punktów końcowych.
- CVE-2026-34226Wysokie
W bibliotece Happy DOM przed wersją 20.8.9 występuje podatność polegająca na nieprawidłowym dołączaniu ciasteczek podczas użycia fetch() z opcją credentials: 'include'. Zamiast ciasteczek z docelowego adresu URL, dołączane są ciasteczka z bieżącej strony (window.location), co może prowadzić do wycieku ciasteczek z domeny A do domeny B.
- CVE-2026-33943Wysokie
Podatność w bibliotece Happy DOM (wersje 15.10.0 do 20.8.7) umożliwia zdalne wykonanie kodu (RCE) poprzez wstrzyknięcie złośliwych wyrażeń JavaScript w deklaracjach `export { }` w modułach ES. Kompilator `ECMAScriptModuleCompiler` bezpośrednio interpoluje niesprawdzone dane do generowanego kodu, a filtr cytatów nie usuwa znaków backtick, co pozwala na ominięcie zabezpieczeń za pomocą literałów szablonowych.
- CVE-2025-61927Wysokie
Happy DOM w wersji 19 i niższych zawiera podatność umożliwiającą zdalne wykonanie kodu (RCE). Kontekst VM Node.js nie jest izolowany, co pozwala niebezpiecznemu kodowi JavaScript na ucieczkę z VM i dostęp do funkcji procesu. Wersja 20.0.0 naprawia problem, wyłączając domyślnie ocenę JavaScript.
Oryginalny opis (angielski, źródło NVD)
Happy DOM is a JavaScript implementation of a web browser without its graphical user interface. From 17.0.0 until 21.0.4, packages/happy-dom/src/module/ECMAScriptModuleCompiler.ts accepts a named ESM import alias without validating that it is a JavaScript binding identifier before inserting it into a generated destructuring binding. With enableJavaScriptEvaluation enabled, attacker-controlled HTML or module source can use an invalid alias that becomes a valid default initializer after compilation, causing the generated JavaScript to execute in the Node.js host process. The demonstrated reachable path uses a JSON module import attribute, which prevents the malicious alias from being emitted again in a later ESM circular-import assignment and keeps the generated function syntactically valid. This incomplete fix for CVE-2026-33943 is a distinct residual path because the earlier remediation validated the local export importName path but not the named-import alias. This issue is fixed in version 21.0.4.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

