CVE-2026-45623
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 46 - wyżej niż 46% wszystkich znanych CVE
Streszczenie
PostCSS w wersjach do 8.5.11 zawiera podatność polegającą na tym, że parser PreviousMap odczytuje komentarz /*# sourceMappingURL=PATH */ z dowolnego ciągu CSS przekazanego do process() i dereferencjonuje PATH względem lokalnego systemu plików bez sprawdzania schematu, listy dozwolonych ścieżek ani zabezpieczeń przed przechodzeniem do katalogów nadrzędnych. Atakujący kontrolujący dane wejściowe CSS może spowodować odczytanie przez proces hosta dowolnego pliku czytelnego dla Node i wyciek pierwszych ~10 bajtów jego zawartości poprzez komunikat błędu JSON.parse SyntaxError. Błąd umożliwia również precyzyjne sprawdzenie istnienia pliku oraz prymityw kontrolowanego odczytu, który w połączeniu z dużymi plikami może prowadzić do DoS. Podatność jest wyzwalana przy domyślnych ustawieniach PostCSS i jest osiągalna z każdego potoku przetwarzającego niezaufany CSS przez PostCSS.
Ocena ryzyka
Organizacja może doświadczyć wycieku wrażliwych danych (np. plików konfiguracyjnych, kluczy) oraz ataku typu Denial of Service poprzez odczyt dużych plików. Podatność jest szczególnie niebezpieczna w środowiskach przetwarzających CSS od użytkowników, takich jak CMS, przeglądarki rozszerzeń czy potoki CI/CD.
Rekomendacja
Należy natychmiast zaktualizować PostCSS do wersji 8.5.12 lub nowszej. Jeśli aktualizacja nie jest możliwa, należy unikać przetwarzania niezaufanego CSS przez PostCSS lub zastosować dodatkowe zabezpieczenia, takie jak walidacja ścieżek.
Inne podatności w PostCSS
Zobacz wszystkie- CVE-2026-73646Wysokie
W PostCSS przed wersją 8.5.18 funkcja loadMap() w lib/previous-map.js przekazuje kontrolowane przez atakującego wartości sourceMappingURL do join(dirname(opts.from), annotation), a loadFile() pozwala na ścieżki .map z traversalem lub absolutne, co umożliwia ujawnienie sourcesContent z dowolnych osiągalnych plików .map przez result.map, gdy przetwarzany jest niezaufany CSS bez opcji map: false.
- CVE-2026-69153Średnie
PostCSS przed wersją 8.5.19 zawiera podatność, w której jeśli opcja from nie jest ustawiona, atakujący może spowodować, że funkcja PreviousMap.loadFile() odczyta nieprzeznaczony plik mapy źródłowej, podając absolutny lub zawierający traversal katalogów sourceMappingURL. Wynikowe źródła i zawartość źródeł mapy mogą zostać ujawnione aplikacji.
Oryginalny opis (angielski, źródło NVD)
PostCSS takes a CSS file and provides an API to analyze and modify its rules by transforming the rules into an Abstract Syntax Tree. In versions 8.5.11 and prior, the PreviousMap parses the /*# sourceMappingURL=PATH */ comment from any CSS string passed to process() and dereferences PATH against the local filesystem with no scheme, allowlist, or traversal check. An attacker who controls the CSS input can cause the host process to read any file readable by Node and leak the first ~10 bytes of its content through the resulting JSON.parse SyntaxError message. The bug also yields a precise file-existence oracle and a controllable-read primitive that may be combined with large-file targets for DoS. The behaviour is triggered with PostCSS's default options — no from, no map, no plugins required — and is therefore reachable from any pipeline that runs untrusted CSS through PostCSS (CMS themes, user-uploaded styles, browser-extension/userstyle processors, build pipelines for third-party packages, blog comment renderers, etc.). This issue has been fixed in version 8.5.12.

