Uważaj, co masz w schowku! Bezpieczeństwo i pułapki schowka w systemach i aplikacjach

desi9n.pl logo desi9n.pl

Mapa strony
PL EN

Schowek to wygodne narzędzie, ale może być źródłem poważnych zagrożeń. W artykule wyjaśniamy, jak działa schowek, jakie są typowe ataki i jak się przed nimi chronić – zarówno w systemach operacyjnych, jak i aplikacjach webowych.

Ikona schowka z widocznymi danymi wrażliwymi – ostrzeżenie przed ryzykiem kopiowania poufnych informacji
Ilustracja przedstawia ryzyko kopiowania wrażliwych danych do schowka – hasła, numery kart i inne informacje mogą zostać łatwo przechwycone przez złośliwe oprogramowanie.

Schowek — proste narzędzie, poważne konsekwencje

Kopiuj, wklej — dwa skróty klawiaturowe, które wykonujemy dziesiątki razy dziennie. Schowek systemowy wydaje się tak trywialny, że nikt nie myśli o nim w kategoriach bezpieczeństwa. Tymczasem to właśnie przez schowek przechodzą numery kont bankowych, hasła, tokeny API, fragmenty kodu i dane osobowe. Złośliwe strony internetowe potrafią podmienić zawartość schowka bez wiedzy użytkownika. Menedżery haseł celowo czyszczą schowek po kilkunastu sekundach. A aplikacje webowe coraz częściej implementują przycisk „Kopiuj do schowka" — czasem bezpiecznie, czasem nie. W tym artykule przechodzę przez pułapki schowka, które widzę w codziennej pracy z aplikacjami webowymi i mobilnymi.

Jak działa schowek w systemach operacyjnych

Schowek to bufor pamięci zarządzany przez system operacyjny. W Windows, macOS i Linuxie działa podobnie: aplikacja zapisuje dane w schowku (w jednym lub kilku formatach jednocześnie — tekst, HTML, RTF, obraz), a inna aplikacja je odczytuje. W Linuxie (X11) istnieją dwa niezależne schowki: PRIMARY (zaznaczenie myszką + środkowy przycisk) i CLIPBOARD (Ctrl+C / Ctrl+V). Wayland uprościł ten model, ale nie wszystkie aplikacje obsługują go poprawnie.

Windows 10 i 11 oferują wieloschowek (Win+V) — historię skopiowanych elementów, którą można synchronizować między urządzeniami. To wygodne, ale oznacza, że skopiowane dane mogą przetrwać restart komputera i trafić do chmury Microsoftu. Jeśli kopiujesz dane wrażliwe (hasła, numery kart), wieloschowek warto wyłączyć lub przynajmniej ręcznie czyścić historię po pracy.

Clipboard API w przeglądarce — jak to działa od strony kodu

Nowoczesne przeglądarki udostępniają Clipboard API do programowego odczytu i zapisu schowka. Zapis (kopiowanie) jest prosty:

navigator.clipboard.writeText('tekst do skopiowania') .then(() => console.log('Skopiowano')) .catch(err => console.error('Błąd:', err));

Metoda writeText() wymaga, żeby dokument miał fokus — nie da się skopiować czegoś w tle bez interakcji użytkownika. Starsza metoda document.execCommand('copy') jest oznaczona jako przestarzała (deprecated) i nie działa w niektórych kontekstach (np. w Web Workerach).

Odczyt schowka (navigator.clipboard.readText()) jest bardziej restrykcyjny — przeglądarka wyświetla użytkownikowi prompt z pytaniem o zgodę. To mechanizm Permissions API: strona musi uzyskać uprawnienie clipboard-read, zanim odczyta dane. Chrome, Edge i Firefox obsługują to od kilku wersji; Safari ma własne ograniczenia (zezwala na odczyt tylko w odpowiedzi na gest użytkownika).

Przy implementacji przycisku „Kopiuj do schowka" w aplikacjach webowych zawsze sprawdzamy dostępność API i dodajemy fallback. Wzorzec, który stosujemy: próba navigator.clipboard.writeText(), a w razie niepowodzenia — tworzenie tymczasowego <textarea>, zaznaczenie tekstu i document.execCommand('copy').

Paste-jacking — atak na schowek przez stronę internetową

Paste-jacking (clipboard hijacking) to technika, w której złośliwa strona podmienia zawartość schowka w momencie kopiowania. Użytkownik zaznacza i kopiuje fragment tekstu — np. polecenie terminala z tutoriala — ale w schowku ląduje zmodyfikowana wersja z dopisanym złośliwym kodem. Po wklejeniu do terminala polecenie wykonuje się natychmiast, jeśli zawiera znak nowej linii.

Mechanizm jest prosty: strona nasłuchuje zdarzenia copy i w handlerze podmienia dane przez event.clipboardData.setData(). Użytkownik nie widzi różnicy, bo zaznaczony tekst na stronie wygląda normalnie. Ten sam wektor działa przy kopiowaniu numerów kont bankowych — atakujący podmienia numer IBAN na własny, licząc na to, że użytkownik nie sprawdzi go po wklejeniu w formularzu przelewu. CERT Polska wielokrotnie ostrzegał przed tym typem ataków.

Jak się chronić

  • Przed wklejeniem polecenia w terminalu sprawdź jego treść — wklej najpierw do edytora tekstowego.
  • Przy przelewach bankowych zawsze weryfikuj końcówkę numeru konta po wklejeniu.
  • Rozszerzenia przeglądarki (np. CopyGuard) mogą blokować nadpisywanie schowka przez strony.
  • Jako programista: nie nasłuchuj zdarzenia copy w celu modyfikacji danych — to zła praktyka UX i sygnał ostrzegawczy dla narzędzi bezpieczeństwa.

Schowek na urządzeniach mobilnych

Na Androidzie klawiatura GBoard (i większość alternatywnych klawiatur) oferuje wbudowaną historię schowka — skopiowane elementy są dostępne przez godzinę, a przypięte — bez limitu czasowego. iOS jest bardziej restrykcyjny: od iOS 16 system wyświetla powiadomienie, gdy aplikacja odczytuje schowek, a od iOS 14 — informuje użytkownika paskiem u góry ekranu. To reakcja Apple na odkrycie, że wiele popularnych aplikacji (TikTok, LinkedIn, Reddit) odczytywało schowek przy każdym uruchomieniu, potencjalnie przechwytując hasła i dane skopiowane z innych aplikacji.

Jeśli tworzysz aplikację mobilną, która korzysta ze schowka — odczytuj go tylko w odpowiedzi na jawną akcję użytkownika (np. kliknięcie „Wklej") i informuj, do czego dane zostaną użyte.

Miniatury zamiast oryginałów i formatowanie — drobne, ale irytujące pułapki

Kopiowanie obrazów ze stron internetowych przez „Kopiuj obraz" często przenosi do schowka miniaturę, a nie oryginał. Dzieje się tak, gdy przeglądarka wyświetla wersję przeskalowaną (atrybut srcset lub CSS max-width). Rozwiązanie: otwórz obraz w nowej karcie i kopiuj stamtąd.

Kopiowanie tekstu z Worda, PDF-a czy maila przenosi ukryte formatowanie: czcionki, kolory, style CSS. Wklejenie do edytora WYSIWYG powoduje chaos w layoucie. Skrót Ctrl+Shift+V (na Macu: Cmd+Shift+Option+V) wkleja jako czysty tekst, bez formatowania. W aplikacjach, które budujemy, konfigurujemy edytory rich-text tak, żeby domyślnie czyściły formatowanie przy wklejaniu — użytkownik może je przywrócić świadomie, ale nie dostaje go przypadkiem.

Co z tym zrobić u siebie

  1. Jeśli implementujesz „Kopiuj do schowka" — użyj navigator.clipboard.writeText() z fallbackiem. Dodaj wizualne potwierdzenie (zmiana ikony, tooltip „Skopiowano").
  2. Nie odczytuj schowka użytkownika bez wyraźnej potrzeby — clipboard-read to uprawnienie, które budzi podejrzenia.
  3. W edytorach WYSIWYG filtruj HTML przy wklejaniu — usuń obce style, klasy i atrybuty.
  4. Edukuj użytkowników: sprawdzaj numer konta po wklejeniu, nie wklejaj poleceń do terminala bez weryfikacji. Jeśli budujesz system z formularzami obsługującymi dane wrażliwe — rozważ automatyczną walidację wklejanych IBAN-ów.

Źródła

Tagi artykułu:

Czy podobał Ci się ten artykuł? Szukasz partnera, który pomoże Ci w realizacji nowoczesnych rozwiązań? Jeśli chcesz wdrożyć omawiane rozwiązania w swoim projekcie, skontaktuj się z nami i rozpocznijmy współpracę!

Kontakt