
Wprowadzenie do problemu / definicja
Qinglong to otwartoźródłowe, samodzielnie hostowane narzędzie do harmonogramowania zadań i automatyzacji skryptów, popularne w środowiskach deweloperskich oraz na prywatnych serwerach. W opisanej kampanii napastnicy wykorzystali dwa błędy obejścia uwierzytelniania, które po połączeniu umożliwiały zdalne wykonanie kodu na podatnych instancjach wystawionych do internetu.
Skutkiem ataków było wdrażanie koparek kryptowalut oraz przejęcie zasobów obliczeniowych ofiar. Incydent pokazuje, że nawet pozornie niszowe narzędzia administracyjne mogą stać się atrakcyjnym celem, jeśli są publicznie dostępne i nie zostały odpowiednio zabezpieczone.
W skrócie
- Atakujący wykorzystywali podatności CVE-2026-3965 oraz CVE-2026-4047.
- Problem dotyczył Qinglong w wersji 2.20.1 i starszych.
- Łańcuch ataku pozwalał obejść kontrolę dostępu i uzyskać zdalne wykonanie kodu.
- Po kompromitacji serwerów wdrażano koparki kryptowalut ukrywane jako proces „.fullgc”.
- Kampania była obserwowana od 7 lutego 2026 r., jeszcze przed szerokim nagłośnieniem problemu.
Kontekst / historia
Qinglong zyskał popularność jako lekkie narzędzie do automatyzacji, często używane przez administratorów i deweloperów do wykonywania zaplanowanych zadań oraz zarządzania skryptami. Tego typu rozwiązania bywają uruchamiane szybko i wygodnie, ale nierzadko bez dodatkowych warstw ochrony, co zwiększa ich ekspozycję na zagrożenia.
Według dostępnych ustaleń aktywne wykorzystanie luk rozpoczęło się na początku lutego 2026 r. Użytkownicy zgłaszali obecność ukrytego procesu „.fullgc”, który zużywał od 85% do 100% zasobów CPU. Nazwa procesu została dobrana tak, by przypominała legalne zjawisko systemowe związane z intensywną pracą garbage collectora i utrudniała szybką identyfikację incydentu.
Początkowe działania naprawcze ograniczały jedynie część skutków związanych z możliwością wstrzykiwania poleceń, ale nie eliminowały zasadniczej przyczyny problemu. Pełniejsza poprawka została wdrożona dopiero 1 marca 2026 r., gdy zmieniono logikę ochrony ścieżek oraz inicjalizacji systemu.
Analiza techniczna
Łańcuch ataku opierał się na dwóch błędach logicznych w warstwie routingu i autoryzacji. Pierwsza podatność, CVE-2026-3965, wynikała z nieprawidłowej reguły przepisywania adresów URL. Ścieżki typu /open/* były mapowane do przestrzeni /api/*, co umożliwiało dotarcie do chronionych endpointów administracyjnych przez pozornie mniej uprzywilejowaną trasę.
Druga luka, CVE-2026-4047, dotyczyła niespójności w traktowaniu wielkości liter. Mechanizm autoryzacji analizował ścieżki w sposób case-sensitive, podczas gdy router aplikacji dopasowywał je bez rozróżniania wielkości liter. W efekcie możliwe było tworzenie żądań omijających kontrolę bezpieczeństwa, które mimo to były poprawnie obsługiwane przez backend.
Kluczowy problem miał charakter architektoniczny: założenia bezpieczeństwa nie pokrywały się z rzeczywistym zachowaniem frameworka Express.js. Tego rodzaju błędy logiki są szczególnie niebezpieczne w panelach administracyjnych i systemach automatyzacji, ponieważ mogą prowadzić od nieautoryzowanego dostępu do pełnego wykonania kodu.
Udokumentowano również scenariusz z użyciem ścieżki /open/user/init, która mogła zostać wykorzystana do nieautoryzowanego resetu poświadczeń administratora w już zainicjalizowanym środowisku. Po przepisaniu żądania do przestrzeni /api/ trafiało ono do mechanizmu aktualizacji danych użytkownika, mimo że warstwa ochronna nie blokowała go na wcześniejszym etapie.
Po uzyskaniu dostępu napastnicy modyfikowali plik config.sh, wstrzykiwali polecenia powłoki, pobierali binaria koparki do lokalizacji /ql/data/db/.fullgc i uruchamiali proces w tle. Dostępne ustalenia wskazują także, że infrastruktura atakujących oferowała różne warianty binarne, w tym dla Linux x86_64, ARM64 i macOS, co sugeruje przygotowanie kampanii do atakowania zróżnicowanych środowisk.
Konsekwencje / ryzyko
Najbardziej widocznym skutkiem incydentu jest nieautoryzowane wykorzystanie zasobów serwera do kopania kryptowalut, co przekłada się na wysokie użycie CPU, spadek wydajności i wzrost kosztów operacyjnych. To jednak tylko część problemu.
Zdalne wykonanie kodu w narzędziu odpowiedzialnym za orkiestrację zadań może prowadzić do znacznie poważniejszych skutków, takich jak przejęcie harmonogramów i skryptów, odczyt lub modyfikacja sekretów, osadzenie trwałych mechanizmów dostępu czy wykorzystanie hosta do dalszego ruchu bocznego w infrastrukturze.
- przejęcie lub modyfikacja zadań automatyzacji,
- kradzież tokenów, sekretów i danych konfiguracyjnych,
- utrwalenie obecności napastnika w systemie,
- wykorzystanie serwera jako punktu wyjścia do dalszych ataków,
- naruszenie poufności, integralności i dostępności środowiska.
Ryzyko jest szczególnie wysokie tam, gdzie panel Qinglong został wystawiony bezpośrednio do internetu, działa z podwyższonymi uprawnieniami lub przechowuje wrażliwe dane wykorzystywane przez inne procesy automatyzacji.
Rekomendacje
Administratorzy powinni przede wszystkim zaktualizować Qinglong do wersji zawierającej skuteczną poprawkę oraz sprawdzić, czy środowisko nie zostało już naruszone. W przypadku potwierdzonego wykonania złośliwego kodu sama aktualizacja nie przywraca zaufania do hosta.
- natychmiast ograniczyć lub wyłączyć publiczny dostęp do panelu,
- wdrożyć najnowszą bezpieczną wersję oprogramowania,
- zresetować hasła administratorów i zrotować wszystkie sekrety,
- przeanalizować pliki konfiguracyjne, zwłaszcza
config.sh, - wyszukać nietypowe procesy, w tym „.fullgc”,
- sprawdzić mechanizmy trwałości w crontabach, skryptach startowych i zadaniach systemowych,
- monitorować połączenia wychodzące oraz nieautoryzowane zmiany w plikach,
- wdrożyć segmentację sieci, ograniczenia egress oraz dodatkowe warstwy ochrony, takie jak VPN, allowlista IP i MFA.
W środowiskach o podwyższonych wymaganiach bezpieczeństwa warto rozważyć pełne odtworzenie hosta z czystego obrazu po wcześniejszym zabezpieczeniu artefaktów do analizy incydentu. To szczególnie istotne wtedy, gdy nie ma pewności, jak długo napastnik utrzymywał dostęp do systemu.
Podsumowanie
Incydent związany z Qinglong pokazuje, że krytyczne luki nie muszą wynikać z klasycznych błędów pamięci czy prostych podatności typu injection. Równie groźne okazują się niespójności pomiędzy warstwą autoryzacji a rzeczywistym działaniem frameworka aplikacyjnego.
W tym przypadku połączenie dwóch błędów logicznych umożliwiło przejście od obejścia uwierzytelniania do zdalnego wykonania kodu, a następnie do wdrożenia koparek kryptowalut. Dla zespołów bezpieczeństwa to wyraźny sygnał, że narzędzia automatyzacji i panele administracyjne powinny być traktowane jako zasoby wysokiego ryzyka i objęte ścisłym monitoringiem oraz rygorystyczną kontrolą dostępu.