Osegi
Bezpieczeństwo·2 min czytania

Fałszywa oferta pracy: ZIP uruchamia malware przez git status

Rekruter z „Cryptic Heaven” przysłał programiście ZIP z podrobionym katalogiem .git. Nawet zwykłe git status może po cichu pobrać i uruchomić obcy kod.

A developer's laptop screen showing a terminal running git status next to a ZIP archive named Contract-2026.zip.
Zdjęcie: Хабр

Wystarczy zwykłe git status, żeby uruchomić złośliwy kod. Przekonał się o tym programista, który na LinkedInie dostał ofertę od rekrutera firmy Cryptic Heaven. Firma miała rzekomo budować system finansowy dla użytkowników kryptowalutowych kart kredytowych.

Oferta wyglądała zwyczajnie: doświadczenie się spodobało, więc zaproponowano rozmowę o współpracy. Programista zapytał o szczegóły projektu, stanowiska i warunków. W odpowiedzi dostał link do umowy, opisu stanowiska i projektu oraz prośbę o odesłanie wypełnionej umowy.

Pod linkiem czekał plik Contract-2026.zip. W środku były README.md, contract.docx i pełny katalog .git z historią, kilkoma gałęziami i lokalną konfiguracją. Sama umowa była pustym szablonem, bez podmiotu prawnego, stawki i jurysdykcji. Opis stanowiska Smart Contract Developer też miał mnóstwo pustych pól.

Jak działa ta pułapka w Git?

Git potrafi uruchamiać zewnętrzne programy. Pierwszy mechanizm to hooki, czyli skrypty wywoływane przy zdarzeniach, na przykład po przełączeniu gałęzi. Parametr core.hooksPath pozwala wskazać dla nich inny katalog, a tam leżał plik post-checkout. Drugi mechanizm to filtr „clean” o nazwie ltr, przypisany do wszystkich plików gwiazdką w pliku attributes.

Git przepuszcza pliki przez taki filtr także wtedy, gdy sprawdza, czy coś się zmieniło. Dlatego zwykłe git status może odpalić skrypt .git/ltr. README zachęcało zaś do przełączania się między gałęziami, co uruchamia post-checkout. Autor sprawdził to na bezpiecznym repozytorium testowym z niewinnym skryptem, który tylko zapisywał wpis w logu. Oba mechanizmy zadziałały.

Co robi skrypt ltr?

To skrypt powłoki. Zapisuje czas ostatniego wywołania i używa katalogu-blokady (mkdir), żeby nie startować wielu procesów naraz. Czeka dwie sekundy od ostatniego użycia filtra, po czym wykrywa system, pobiera kod ze zdalnego serwera i od razu go wykonuje: przez sh na Linuksie i macOS, przez PowerShell na Windowsie. Serwer działał pod adresem vercelscript.vercel.app.

Co dokładnie robił pobierany kod, z samego ZIP-a nie da się ustalić. Cała akcja idzie w tle, a wyjście i błędy trafiają do /dev/null, więc ofiara może niczego nie zauważyć. Nie wiadomo więc, czy chodziło o kolejny etap ataku, kradzież danych, czy coś innego.

Aplikacje warte uwagi

SUMO: łamigłówka liczbowa

Wybierz właściwe pola, dodaj je i trafiaj w cel. Łatwa do nauczenia, trudna do opanowania. Za darmo, dla każdego wieku.

Tagi:gitmalwarelinkedinjob scamcryptic heavendeveloper security

Więcej z tego dnia

Zobacz wszystkie →

Więcej w kategorii: Bezpieczeństwo

Zobacz wszystkie →