Chrome zero-day w CSS. Dlaczego zwykła strona internetowa może uruchomić kod w Twojej przeglądarce

przez Łukasz | mar 5, 2026

Przeglądarka internetowa jest dziś jednym z najbardziej złożonych programów, jakie uruchamiamy codziennie. Renderuje HTML, interpretuje CSS, wykonuje JavaScript, obsługuje GPU, sandboxy, izolację procesów i setki API.

Dlatego nie dziwi, że to właśnie przeglądarki są jednym z ulubionych celów ataków.

W lutym 2026 Google opublikowało pilną aktualizację Chrome, która naprawia podatność CVE-2026-2441 — pierwszy w tym roku zero-day aktywnie wykorzystywany w atakach. 

Co dokładnie odkryto

 

Podatność została sklasyfikowana jako use-after-free w komponencie CSS przeglądarki Chrome. 

Brzmi niewinnie, ale w praktyce oznacza to poważny problem z zarządzaniem pamięcią.

W uproszczeniu:

  1. przeglądarka zwalnia fragment pamięci

  2. ale nadal próbuje z niego korzystać

  3. atakujący może podstawić własne dane

  4. i przejąć kontrolę nad wykonywanym kodem

 

W rezultacie odwiedzenie odpowiednio przygotowanej strony internetowej może uruchomić kod w przeglądarce ofiary. 

Dlaczego CSS jest w ogóle w to zamieszany

 

CSS wydaje się niewinnym językiem — przecież odpowiada tylko za wygląd strony.

Ale współczesny CSS to ogromny system:

  • layout engine

  • rendering GPU

  • animacje

  • transformacje

  • złożone selektory

  • font rendering

  • obliczenia layoutu w czasie rzeczywistym

 

Każda z tych funkcji to duża ilość kodu w silniku przeglądarki.

I to właśnie w tym kodzie pojawiają się błędy.

W przypadku CVE-2026-2441 błąd znajdował się w komponencie przetwarzającym reguły CSS, co umożliwiało wywołanie błędu pamięci przez specjalnie przygotowaną stronę HTML.

Czy to oznacza przejęcie komputera?

 

Nie od razu.

Kod uruchamia się wewnątrz sandboxa przeglądarki, który ogranicza dostęp do systemu. 

Ale w praktyce:

większość poważnych ataków przeglądarkowych działa jako łańcuch exploitów.

Najczęściej wygląda to tak:

  1. exploit w przeglądarce (np. CVE-2026-2441)

  2. wykonanie kodu w sandboxie

  3. drugi exploit pozwalający uciec z sandboxa

  4. przejęcie systemu

 

Dlatego nawet „sandboxed code execution” jest traktowane jako poważna podatność.

Dlaczego przeglądarki są tak atrakcyjnym celem

 

Powód jest prosty.

Przeglądarka to:

  • jeden z najczęściej używanych programów na świecie

  • aplikacja, która automatycznie interpretuje dane z Internetu

  • ogromna baza użytkowników

  • bardzo złożony kod

 

Atakujący potrzebuje tylko jednego:

nakłonić ofiarę do odwiedzenia strony.

Dlaczego Google nie ujawnia szczegółów exploita

 

Google potwierdziło, że exploit istnieje i był używany w realnych atakach, ale szczegóły techniczne zostały czasowo ukryte. 

To standardowa procedura.

Gdy exploit jest używany w atakach:

  • pełne szczegóły publikowane są dopiero

  • gdy większość użytkowników zaktualizuje przeglądarkę

 

Co powinni zrobić użytkownicy

 

Najważniejsze jest bardzo proste:

zaktualizować Chrome.

Podatność została naprawiona w wersji:

Chrome 145.0.7632.75 i nowszych. 

Jeśli aktualizacje są włączone automatycznie, wystarczy restart przeglądarki.

Lekcja z CVE-2026-2441

 

To zdarzenie przypomina o czymś ważnym:

współczesne strony internetowe nie są tylko dokumentami.

programami, które przeglądarka interpretuje w czasie rzeczywistym.

HTML, CSS i JavaScript tworzą razem ogromny ekosystem, który musi przetwarzać zaufane i niezaufane dane jednocześnie.

A tam, gdzie jest złożoność — zawsze pojawiają się błędy.

Czy CSS może być językiem exploita?

 

W pierwszych nagłówkach o CVE-2026-2441 pojawiło się określenie „CSS exploit” albo nawet „pierwszy exploit w CSS”.

Technicznie rzecz biorąc — to uproszczenie.

W rzeczywistości CSS nie jest językiem wykonywalnym, a podatność znajduje się w silniku przeglądarki, który interpretuje CSS. W tym przypadku był to błąd typu use-after-free w komponencie przetwarzającym reguły CSS w Chrome. 

Ten błąd pozwalał doprowadzić do uszkodzenia pamięci, a następnie uruchomić kod w sandboxie przeglądarki poprzez specjalnie przygotowaną stronę HTML. 

Dlatego:

  • CSS nie wykonuje kodu

  • CSS nie jest exploitem

  • ale błędy w silniku CSS mogą prowadzić do exploita

 

To subtelna, ale bardzo ważna różnica.

Dlaczego CSS jest tak dużą powierzchnią ataku

 

Współczesny CSS to już nie tylko kolory i marginesy.

Silniki renderujące obsługują między innymi:

  • layout i reflow

  • animacje

  • transformacje 3D

  • dynamiczne fonty

  • obliczenia layoutu w czasie rzeczywistym

  • integrację z GPU

 

Każda z tych funkcji oznacza kolejne tysiące linii kodu w silniku przeglądarki.

Chrome i Chromium to dziś ponad 30 milionów linii kodu, a znacząca część z nich dotyczy właśnie renderowania stron. 

Im bardziej złożony system — tym większa szansa na błędy pamięci.

Dlaczego exploit zaczyna się od zwykłej strony

 

Najbardziej niepokojące w tej podatności jest to, że:

atak zaczyna się od zwykłej strony internetowej.

Wystarczy odwiedzić stronę zawierającą odpowiednio przygotowany kod HTML/CSS, aby wywołać błąd w silniku przeglądarki i doprowadzić do wykonania kodu w sandboxie. 

To właśnie dlatego przeglądarki są jednym z najczęściej atakowanych elementów całego ekosystemu IT.

Czy zobaczymy więcej takich exploitów?

 

Prawie na pewno.

Nowoczesna przeglądarka to:

  • HTML parser

  • CSS engine

  • JavaScript runtime

  • WebAssembly

  • GPU pipeline

  • setki API webowych

 

To w praktyce system operacyjny uruchamiany w oknie aplikacji.

Dlatego przeglądarki są regularnie celem zero-day exploitów, a Google w samym 2026 roku musiało już załatać pierwszy aktywnie wykorzystywany błąd w Chrome.

Agent kończy, ale zadania nie wykonał

Agent kończy, ale zadania nie wykonał

Objawy Agent odpowiada: „Przygotowałem i wysłałem potwierdzenie do klienta." Potwierdzenie nie zostało wysłane. Albo: „Zaktualizowałem wszystkie rekordy" — zaktualizował trzy z dwunastu. Albo: „Nie znalazłem żadnych zamówień" — bo narzędzie zwróciło błąd, którego nikt...

Agent zrobił coś, o co nikt nie prosił

Agent zrobił coś, o co nikt nie prosił

Objawy Operacja, której nikt nie zlecił. Dane wysłane pod adres, którego nie ma w żadnej konfiguracji. Rekord zmieniony poza zakresem zadania. Odpowiedź, z której wynika, że agent dostał instrukcje od kogoś innego niż ty. Cecha wspólna: technicznie wszystko zadziałało...

Agent zrobił to samo dwa razy

Agent zrobił to samo dwa razy

Objawy Ten syndrom różni się od pozostałych jedną rzeczą: objaw widzi klient, nie ty. Trzy identyczne wiadomości w skrzynce. Dwa zamówienia zamiast jednego. Podwójne obciążenie. Duplikaty rekordów, które ktoś zauważa tydzień później. W twoim dzienniku wszystko wygląda...

Agent gubi wątek w długim zadaniu

Agent gubi wątek w długim zadaniu

Objawy Pierwsze kroki idą wzorowo. Po kilkunastu agent zaczyna się rozjeżdżać. Przestaje przestrzegać reguły z promptu systemowego, której trzymał się na początku. Zmienia format odpowiedzi w połowie zadania. Wraca do czegoś, co już ustalił, i ustala to inaczej....

Agent podaje dane, których nie ma

Agent podaje dane, których nie ma

Objawy Numer zamówienia w idealnym formacie, którego nie ma w bazie. Kwota, której w dokumencie nie ma. Nazwa pola API, które nigdy nie istniało. Cytat z regulaminu, brzmiący dokładnie jak reszta regulaminu i w nim nieobecny. Cecha wspólna wszystkich tych przypadków:...

Działał wczoraj, dziś nie działa

Działał wczoraj, dziś nie działa

Objawy Nic się nie wywala. Nie ma wyjątków, nie ma timeoutów, dziennik wygląda tak samo jak zawsze. Po prostu odpowiedzi są gorsze. Postacie, w jakich to się objawia: Jakość. Agent zaczyna pomijać kroki, które wcześniej wykonywał, albo odpowiada ogólniej. Format....

Agent wybiera złe narzędzie

Agent wybiera złe narzędzie

Objawy Agent odpowiada nie na to pytanie. Pobiera listę zamówień, gdy pytano o jedno konkretne. Odpowiada z pamięci, choć miał sprawdzić w bazie. Albo sięga po właściwe narzędzie i wpisuje w argumenty coś, czego nie da się użyć. Sygnał, który odróżnia ten syndrom od...

Agent kręci się w kółko

Agent kręci się w kółko

Objawy Agent wykonuje kolejne obroty pętli, nie zbliżając się do zakończenia zadania. W dzienniku widać jedną z trzech postaci. Powtórzenie. To samo narzędzie, te same argumenty, raz za razem — czasem dziesiątki razy pod rząd. Oscylacja. Agent wywołuje na przemian dwa...