Obsidian to aplikacja, której polscy programiści, założyciele firm i analitycy używają codziennie do notatek, planowania i dokumentacji. Cała siła tej aplikacji opiera się na zaufaniu – vault to twój prywatny katalog, pluginy społeczności rozszerzają działanie. Badacze Elastic Security Labs opisali kampanię o kodzie REF6598, która ten model zaufania wykorzystuje. Ofiara dostaje na LinkedIn zaproszenie od rzekomego inwestora z funduszu VC do współpracy nad notatką w Obsidian. Wystarczy zsynchronizować vault, kliknąć “włącz pluginy społeczności” i potwierdzić zaufanie – w tle uruchamia się trojan PhantomPulse z funkcjami nagrywania klawiatury, robienia zrzutów ekranu i wykradania plików. To nie jest klasyczny atak na repozytorium pluginów. To atak na chęć współpracy.
Czym jest kampania REF6598
Elastic Security Labs oznaczył kampanię kodem REF6598 i opisał ją jako wymierzoną w konkretne ofiary, a nie masowe rozsyłanie do wszystkich. Główne cele to ludzie z sektora finansowego i kryptowalutowego. Wektor pierwszego kontaktu to LinkedIn lub Telegram. Atakujący podszywa się pod inwestora funduszu VC, opisuje konkretny projekt lub fundusz i proponuje wspólną pracę nad prezentacją albo dokumentacją. Wszystko brzmi profesjonalnie, łącznie ze zrzutami ekranu portfela i rzekomymi referencjami.
Następnie pojawia się prośba o przejście do “wspólnego vault Obsidian”. To brzmi sensownie, ponieważ Obsidian to standard branżowy w notatkach, a synchronizacja vault przez Obsidian Sync albo zewnętrzne narzędzie typu Git/Syncthing jest powszechna. Ofiara dostaje dane dostępowe do kontrolowanego przez atakującego vault w chmurze, loguje się w Obsidian i podłącza zdalny vault. Kluczowy moment przychodzi dopiero wtedy, gdy zgodnie z instrukcją włącza synchronizację pluginów społeczności. Wtedy na komputer trafia folder .obsidian/plugins/ z dwoma dodatkami: “Shell Commands” i “Hider”.
Obsidian standardowo nie aktywuje pluginów społeczności bez zgody użytkownika. Aplikacja pokaże ostrzeżenie. Dopiero kliknięcie przycisku “trust author and enable plugins” (zaufaj autorowi i włącz pluginy) odpala kod. To moment, w którym ofiara dobrowolnie wpuszcza trojana – psychologicznie wciąż “ufa” inwestorowi, więc klika zgodę.
Atakujący nie łamie zabezpieczeń Obsidian. Łamie zaufanie ofiary przed otwarciem aplikacji.
Co robi PhantomPulse RAT
PhantomPulse to klasyczny trojan zdalnego dostępu (Remote Access Trojan) o dosyć kompletnym arsenale funkcji. Elastic Security Labs wymienia: nagrywanie naciśnięć klawiatury (keylogger), robienie zrzutów ekranu, wykradanie plików z dysku i wykonywanie dowolnych komend. Po polsku: atakujący widzi, co piszesz, ma kopię tego, co masz, i może uruchamiać programy na twoim komputerze.
Z technicznego punktu widzenia najciekawszy element to sposób, w jaki trojan łączy się z serwerem sterującym (po angielsku command and control, w skrócie C2). Zamiast statycznego adresu IP lub domeny PhantomPulse czyta dane z blockchainu Ethereum. Dlatego atakujący wrzuca tam transakcję z zakodowanym adresem aktualnego serwera sterującego, a trojan ją odczytuje i wie, dokąd raportować. Wyobraź sobie skrzynkę pocztową, której adres co kilka godzin zmienia się w sposób ogłaszany w publicznej gazecie, tylko że gazetą jest blockchain, a ogłoszeniem zwykła transakcja. W efekcie blokowanie ruchu na poziomie sieciowym staje się bardzo trudne, ponieważ trzeba blokować nie jeden adres, tylko cały ekosystem.
Najprostszy sygnał kompromitacji: proces Obsidian uruchamiający powershell.exe lub cmd.exe. Aplikacja do notatek w normalnym trybie nie ma powodu, żeby wołać powłokę systemową. Na macOS odpowiednikiem będzie Obsidian wywołujący osascript. Drugim sygnałem jest natomiast ruch sieciowy z hosta do węzłów Ethereum w nietypowym dla użytkownika kontekście.
Dlaczego akurat “Shell Commands” i “Hider”
Plugin “Shell Commands” jest legalnym, popularnym dodatkiem do Obsidian, który pozwala uruchamiać polecenia systemowe z poziomu notatki. To znaczy, że już sam mechanizm “z notatki uruchom powłokę” jest jego naturalną funkcją. Plugin “Hider” służy z kolei do chowania elementów interfejsu Obsidian. W efekcie w kampanii REF6598 obie nazwy są używane jako kamuflaż – paczka udaje konfigurację tych powszechnych narzędzi, dlatego nawet doświadczony użytkownik nie ma odruchu, żeby się zatrzymać.
Klucz w tym, że Obsidian nie weryfikuje, co dokładnie kryje się w folderze pluginów społeczności, kiedy ofiara potwierdzi zaufanie. To wciąż musi być świadoma decyzja człowieka. Innymi słowy, aplikacja zachowuje się poprawnie, jednak problem siedzi w tym, że pluginy społeczności w Obsidian dostają od użytkownika pełen dostęp do systemu plików i uruchamiania procesów. To jak wpuszczenie kogoś z ulicy do mieszkania, bo trzyma w ręku list polecający, którego nikt nie sprawdził.
Wniosek dla polskich zespołów: nie wystarczy “zaufać autorowi pluginu” w okienku Obsidian. Co więcej, trzeba mieć osobną procedurę dla każdej współdzielonej notatki, która przychodzi z zewnątrz, niezależnie od tego, jak wiarygodnie wygląda nadawca na LinkedIn.
Pluginy społeczności w Obsidian to nie sandbox. To pełen dostęp do twojego dysku, podpisany twoją zgodą.
Co zrobić u siebie
Najszybsza checklistka, którą zespół może wdrożyć już dzisiaj. Zacznij od listy aktywnych pluginów: w Obsidian wejdź w ustawienia, w zakładkę “Community plugins” (pluginy społeczności) i sprawdź listę aktywnych dodatków. Wszystko, czego nie pamiętasz, że instalowałeś, wyłącz i skasuj. Dlatego ten krok lepiej zrobić od razu, zanim ofiarą padnie ktoś z zespołu. Następnie ustaw zasadę firmową: żadnych współdzielonych vaultów od zewnętrznych kontaktów – jeśli inwestor chce wspólnej notatki, niech wyśle treść w PDF lub Google Doc, nie folder vault z pluginami. Na końcu na maszynach służbowych dodaj prostą regułę dla systemu EDR (oprogramowania wykrywającego podejrzane zachowania na stacjach roboczych): alarm, gdy proces Obsidian uruchamia powershell.exe, cmd.exe lub osascript. Dla polskich firm korzystających z Microsoft Defender for Endpoint to kilka minut konfiguracji.
Z szerszej perspektywy ta kampania pokazuje trend, który widzimy w automatyzacji bezpieczeństwa od kilku miesięcy. Atakujący przestają walczyć z mechanizmami obronnymi aplikacji. Zamiast tego budują socjotechniczny pretekst, który skłania ofiarę do dobrowolnego wyłączenia zabezpieczeń. Co więcej, niezależnie od tego, czy chodzi o Obsidian, klucze API w ChatGPT czy uprawnienia w n8n, to ten sam wzorzec.
Kurs n8n 2.0 · Kodożercy
Naucz się n8n od zera i zacznij automatyzować
Kurs n8n 2.0 od Kodożerców to praktyczny kurs bez teorii. Budujesz prawdziwe workflowy od pierwszej lekcji – od połączeń z API po webhooki i integracje. Żadnych suchych slajdów.
Zacznij naukę →

Podsumowanie
Kampania REF6598 nie atakuje samego Obsidian. Atakuje ofiarę, używając Obsidian jako wygodnego nośnika. Wystarczy fałszywe zaproszenie do współpracy na LinkedIn, paczka z dwoma pluginami i jedno kliknięcie “zaufaj autorowi” – trojan PhantomPulse zaczyna nagrywać klawiaturę, robić zrzuty ekranu i wykradać pliki. Tak więc najmocniejsza obrona to nie technologia, tylko procedura: żadnych współdzielonych vaultów od osób, których nie znasz osobiście. Po pełniejszą perspektywę na klasyczne ataki supply chain w ekosystemach pakietów warto zerknąć na artykuł o malware w PyTorch Lightning na PyPI.
Newsletter · DevstockAcademy & Kodożercy
Bądź na bieżąco ze światem IT, AI i automatyzacji
Co wtorek: newsy z branży, praktyczne tipy i narzędzia które warto znać. Zero spamu.



