Firma Confiant opisała 23 lipca 2026 roku kampanię malvertisingową nazwaną SourTrade. Operacja działa co najmniej od końca 2024 roku i kieruje reklamy do traderów detalicznych oraz inwestorów kryptowalutowych. Atakujący podszywają się pod serwisy TradingView, Solana i Luno, a ich strony były kierowane do odbiorców w 12 krajach i obsługiwały 25 języków. Najważniejszym elementem kampanii jest sposób dostarczenia pliku. Zamiast pobierać gotowy złośliwy program z jednego adresu, przeglądarka otrzymuje jego części i sama składa końcowy plik wykonywalny dla Windows.
Strona rozpoznaje odwiedzających
Strony docelowe sprawdzają cechy odwiedzającego, czyli wykonują tak zwany fingerprinting. Podejrzewani badacze bezpieczeństwa i boty mogą zobaczyć pustą stronę, natomiast wybrane osoby otrzymują wiarygodną kopię reklamowanej usługi. Mechanizm przygotowuje ścieżkę dostarczenia jeszcze przed oczekiwanym pobraniem. Według dostępnej analizy nie jest to atak wykorzystujący podatność przeglądarki, a kampania nie usuwa oznaczenia Mark of the Web, znanego jako MotW. Confiant opisał dostarczenie pliku, ale nie potwierdził, czy pobieranie rozpoczyna się automatycznie, czy wymaga kliknięcia użytkownika. Najbezpieczniejszą praktyką pozostaje pobieranie aplikacji tradingowych i portfeli wyłącznie z oficjalnej strony dostawcy, a nie z reklamy.
Przeglądarka składa plik z wielu elementów
Analizowany mechanizm rejestruje w przeglądarce ServiceWorkera, a następnie tworzy SharedWorkera na podstawie kodu JavaScript już osadzonego na stronie. Dzięki temu kod pracownika nie pojawia się jako osobny plik pobierany z sieci. Worker otrzymuje konfigurację zawierającą między innymi szablon składania pliku, adres dodatkowego runtime'u oraz wartości losowe przypisane do sesji. Przeglądarka pobiera i rozpakowuje legalny runtime Bun z drugiej domeny. Bun korzysta z silnika JavaScriptCore i oficjalnie pozwala kompilować aplikacje oraz bytecode do samodzielnych plików wykonywalnych dla Windows. W przypadku SourTrade ten mechanizm jest wykorzystywany jako baza do połączenia legalnego środowiska z materiałem kontrolowanym przez napastników.
- Konfiguracja dostarcza elementy struktury PE oraz sekcję zawierającą złośliwy bytecode JavaScriptCore.
- Worker generuje pseudolosowy strumień danych i łączy go z wybranymi fragmentami runtime'u oraz materiałem dostarczonym przez atakujących.
- Zmiana ziarna i rozmiaru danych dla kolejnych sesji może zmienić hash pliku, mimo zachowania tego samego kodu wykonywalnego.
- Pełny plik nie jest przesyłany z sieci jako jeden binarny artefakt, ale jego struktury PE i bytecode nadal trafiają do przeglądarki w elementach konfiguracji.
Pobranie pozostawia oznaczenie źródła
Po złożeniu pliku strona przekazuje go do ServiceWorkera jako strumień danych. Ukryta ramka kieruje przeglądarkę na adres w tej samej domenie, a worker zwraca wygenerowane bajty z nagłówkiem wskazującym pobieranie załącznika. W efekcie wpis MotW identyfikuje stronę docelową jako źródło pobrania, a nie oddzielną domenę, z której pobrano runtime Bun. Oznaczenie MotW pozostaje obecne, więc opisana technika nie polega na jego usunięciu. Wcześniejsza wersja aktywności, obserwowana do 30 kwietnia 2026 roku, korzystała z biblioteki StreamSaver.js ładowanej z GitHub Pages. Obecne strony zachowują podobną architekturę strumieniowania, ale nie pobierają już tej biblioteki z GitHuba.
Powiązania z wcześniejszą kampanią nie są rozstrzygnięte
Podobny klaster reklam związanych z TradingView opisała firma Bitdefender we wrześniu 2025 roku. Jej analiza wskazywała na końcowy payload rozpoznawany przez Check Point jako JSCEAL, a przez WithSecure jako WeevilProxy. Confiant znalazł wspólne cechy kampanii i plików, ale nie wykazał, że trzy opublikowane przez firmę próbki zawierają właśnie ten payload. Raport wspomina również o zmodyfikowanym pliku Bun, który miał zostać znaleziony przez Bitdefender. The Hacker News nie znalazł jednak wzmianki o Bun w przywoływanym materiale Bitdefendera, gdzie wskazano detekcję loadera Variant.DenoSnoop.Marte.1. Z tego powodu możliwości przypisywane wcześniejszym próbom, takie jak kradzież danych uwierzytelniających, rejestrowanie klawiszy, przechwytywanie ruchu, kradzież środków z portfeli i zdalny dostęp, nie powinny być automatycznie przypisywane obecnym plikom.
Confiant nie wskazał sprawcy kampanii. Firma opublikowała trzy hashe SHA-256 oraz listę złośliwych domen, która według The Hacker News obejmuje 96 adresów. Analiza kończy się w momencie zapisania pliku na dysku i nie opisuje jego dalszego uruchomienia. Dla obrońców oznacza to konieczność badania całego łańcucha, od przekierowania z reklamy i strony ukrywającej swoją zawartość, przez żądanie konfiguracji i pobranie runtime'u z drugiej domeny, po aktywność ServiceWorkera oraz zapis pliku. Same hashe mogą być w tym przypadku mniej przydatne, ponieważ pliki składane dla kolejnych sesji mogą różnić się na poziomie identyfikatora, choć zachowują dostarczony kod. Źródło nie wskazuje konkretnej aktualizacji, którą należałoby zainstalować. Użytkownicy powinni unikać instalowania aplikacji finansowych z reklam, a zespoły bezpieczeństwa powinny traktować połączenie tych elementów jako sygnał do dalszej analizy, a nie opierać ocenę na pojedynczym artefakcie.