
Wprowadzenie do problemu / definicja
Nowa kampania skanowania Internetu pokazuje, że także środowiska deweloperskie stały się pełnoprawnym celem działań cyberprzestępczych. Atakujący wykorzystują podatność w Vite, popularnym narzędziu frontendowym, aby odczytywać wrażliwe pliki z publicznie dostępnych serwerów developerskich bez potrzeby uwierzytelnienia.
W praktyce oznacza to ryzyko ujawnienia poświadczeń do usług chmurowych, plików konfiguracyjnych, danych środowiskowych oraz artefaktów infrastrukturalnych. Problem jest szczególnie groźny tam, gdzie serwery deweloperskie zostały omyłkowo wystawione do Internetu lub działają poza standardowymi kontrolami bezpieczeństwa.
W skrócie
- Badacze opisali aktywną kampanię wymierzoną w publicznie dostępne serwery Vite.
- Wektor ataku opiera się na luce CVE-2026-39364 o wysokim poziomie ryzyka.
- Atak umożliwia obejście mechanizmu ochrony dostępu do plików i odczyt m.in. plików .env oraz danych chmurowych.
- Celem operatorów kampanii są sekrety AWS i Azure, konfiguracje aplikacyjne oraz pliki stanu infrastruktury.
- Największe zagrożenie dotyczy organizacji, które publikują środowiska developerskie poza zaufaną siecią.
Kontekst / historia
Podatność dotyczy mechanizmu kontroli dostępu do plików w serwerze deweloperskim Vite. Domyślnie narzędzie nasłuchuje lokalnie, co istotnie ogranicza powierzchnię ataku. Ryzyko pojawia się wtedy, gdy programiści uruchamiają serwer z ekspozycją sieciową, na przykład przez odpowiednią konfigurację hosta, mapowanie portów w kontenerach lub publikację środowiska testowego przez reverse proxy.
Sama luka była wcześniej opisywana jako problem związany z obejściem kontroli server.fs.deny. Najnowsze obserwacje wskazują jednak, że nie jest to już wyłącznie błąd teoretyczny, lecz aktywnie wykorzystywany wektor w zautomatyzowanej kampanii rozpoznawczo-eksfiltracyjnej. To zmienia ocenę ryzyka, ponieważ podatność została przełożona na realne działania operacyjne.
Analiza techniczna
Sedno problemu dotyczy endpointu /@fs/, wykorzystywanego przez Vite do dostępu do plików systemowych w dozwolonym zakresie. Mechanizm bezpieczeństwa powinien blokować odczyt zasobów objętych regułami odmowy, jednak odpowiednio spreparowane parametry zapytania HTTP pozwalają ominąć walidację i wymusić zwrot zawartości pliku.
Atakujący korzystają z wariantów takich jak ?raw, ?import&raw oraz podobnych konstrukcji z dodatkowymi separatorami. Źródłem problemu jest niespójna normalizacja ciągu zapytania, przez co żądanie, które powinno zostać zablokowane, trafia do ścieżki obsługi zwracającej dane.
Skuteczne wykorzystanie luki wymaga spełnienia kilku warunków. Serwer Vite musi być wystawiony do sieci, atakowany plik musi znajdować się w katalogu objętym regułami dostępu, a jednocześnie należeć do zbioru zasobów, które teoretycznie powinny być zablokowane. To właśnie ta niespójność pozwala ominąć ochronę.
Telemetria z kampanii wskazuje na bardzo precyzyjny dobór celów. Operatorzy próbują pobierać pliki środowiskowe, profile chmurowe, dane procesowe z katalogu /proc/, a także zasoby takie jak terraform.tfstate czy serverless.yml. Taki zestaw artefaktów sugeruje koncentrację na szybkim przejmowaniu sekretów, które mogą posłużyć do dalszej penetracji infrastruktury.
Dodatkowo atakujący maskują aktywność poprzez fałszywe nagłówki User-Agent, podszywając się pod legalne boty indeksujące i systemy AI. W połączeniu z manipulacją nagłówkami X-Forwarded-For oraz X-Real-IP utrudnia to analizę incydentu i identyfikację źródła ruchu.
Konsekwencje / ryzyko
Najpoważniejszym skutkiem udanego ataku jest wyciek sekretów operacyjnych. Mogą to być klucze API, hasła do baz danych, tokeny dostępowe, poświadczenia administracyjne do chmury oraz konfiguracje backupów. Szczególnie niebezpieczne są pliki stanu infrastruktury, które często zawierają nie tylko dane uwierzytelniające, ale także szczegółowy obraz wdrożonych zasobów.
Dla organizacji oznacza to możliwość przejścia od jednego źle zabezpieczonego serwera developerskiego do pełnej kompromitacji środowiska chmurowego. Skradzione dane mogą posłużyć do ruchu lateralnego, przejęcia kont usługowych, modyfikacji pipeline’ów CI/CD, dostępu do magazynów obiektowych albo wdrożenia mechanizmów persistence.
Ryzyko jest szczególnie wysokie w zespołach, które traktują środowiska deweloperskie jako mniej istotne niż produkcja. Taka praktyka zwykle prowadzi do słabszego monitoringu, mniej rygorystycznego zarządzania sekretami i opóźnionej reakcji na incydenty.
Rekomendacje
W pierwszej kolejności organizacje powinny ustalić, czy jakikolwiek serwer Vite jest dostępny spoza hosta lokalnego. Należy sprawdzić konfigurację hosta, mapowania portów w Dockerze, ustawienia reverse proxy oraz tymczasowe środowiska publikowane do Internetu.
Kolejnym krokiem jest pilna aktualizacja do wersji Vite zawierających poprawki bezpieczeństwa. Równolegle warto przeprowadzić inwentaryzację zależności w repozytoriach, obrazach kontenerowych i środowiskach tymczasowych, aby wykryć starsze, podatne wydania.
- nie publikować serwerów developerskich bez uzasadnionej potrzeby biznesowej,
- ograniczyć dostęp przez VPN, ZTNA lub reguły firewalla,
- odseparować środowiska deweloperskie od kont i subskrypcji produkcyjnych,
- usunąć sekrety z plików .env tam, gdzie mogą zostać zastąpione menedżerem tajemnic,
- monitorować logi pod kątem żądań do
/@fs/z podejrzanymi parametrami, - rotować wszystkie poświadczenia, które mogły znajdować się na zagrożonych hostach,
- skanować repozytoria i obrazy pod kątem wycieków danych konfiguracyjnych.
Z perspektywy zespołów SOC ważne jest wzbogacenie reguł detekcyjnych o odwołania do plików w /proc/, próby pobrania .env, terraform.tfstate i serverless.yml, a także ruch pozornie przypominający aktywność legalnych botów, który w rzeczywistości realizuje wzorce eksfiltracyjne.
Podsumowanie
Kampania wykorzystująca CVE-2026-39364 pokazuje, że podatności w narzędziach developerskich mogą bardzo szybko zostać użyte do rzeczywistej kradzieży danych. Publicznie wystawiony serwer Vite może stać się prostym punktem wejścia do pozyskania sekretów chmurowych i informacji o infrastrukturze.
Dla obrońców kluczowe są dziś trzy działania: identyfikacja publicznie dostępnych instancji, aktualizacja do poprawionych wersji oraz rotacja potencjalnie ujawnionych poświadczeń. To kolejny sygnał, że DevSecOps musi obejmować również krótkotrwałe i pozornie niekrytyczne środowiska robocze.