tj-actions/changed-files (CVE-2025-30066): podmieniona akcja GitHub ujawniała hasła
Napastnik podmienił popularną akcję GitHub tj-actions/changed-files, która wypisywała do dzienników klucze z procesów budowania. CISA potwierdza wykorzystanie. Wymień wszystkie sekrety i przypnij akcje do commitów.
Ten alert jest dla zarządu, CTO i CFO firm, które tworzą lub zamawiają oprogramowanie budowane automatycznie w GitHub Actions, własnymi siłami lub przez wykonawcę. Werdykt: jeśli w marcu 2025 roku jakikolwiek proces budowania używał akcji tj-actions/changed-files, uznaj hasła z tego procesu za ujawnione i wymień je dziś, bo podmieniona akcja wypisywała klucze do dzienników, a sama aktualizacja ich nie unieważnia.
1. CO SIĘ STAŁO? Fakty w pigułce
Amerykańska agencja CISA 18 marca 2025 roku dopisała podatność CVE-2025-30066 do katalogu KEV, czyli listy luk, o których ma dowody, że są wykorzystywane w prawdziwych atakach. To nie była pomyłka programisty, tylko celowy atak na łańcuch dostaw: napastnik przejął repozytorium popularnej akcji tj-actions/changed-files i przestawił wszystkie oznaczenia wersji od v1 do v45.0.7 na podmieniony kod. Ten kod wypisywał do dzienników uruchomień hasła i klucze używane w procesie budowania.
W projektach publicznych dzienniki są dostępne dla każdego, więc hasła mogły trafić w obce ręce. CISA zaleca nie tylko aktualizację, ale natychmiastową wymianę wszystkich haseł z procesów, które uruchamiały akcję. Termin wyznaczony agencjom federalnym minął 8 kwietnia 2025 roku.
Element
Szczegóły
Identyfikator CVE
CVE-2025-30066 (baza europejska: EUVD-2025-6565; powiązana: CVE-2025-30154 w reviewdog/action-setup)
Data dodania do CISA KEV
2025-03-18
Termin naprawy wg CISA
2025-04-08
Produkt
tj-actions/changed-files, akcja GitHub Actions używana w automatycznych procesach budowania (CI/CD)
Wersje zagrożone
Oznaczenia v1 do v45.0.7, które w dniach ataku wskazywały na złośliwy commit 0e58ed8. Okno uruchomień do sprawdzenia wg CISA: od 12 marca 2025 roku, 00:00 UTC, do 15 marca 2025 roku, 12:00 UTC (NVD wymienia 14 i 15 marca)
Wersje bezpieczne
v46.0.1 i nowsze (wg CISA); bezpieczniej: przypięcie akcji do sprawdzonego, niezmiennego identyfikatora commita albo zastąpienie jej zaufaną alternatywą
Typ podatności
Wbudowany złośliwy kod (atak na łańcuch dostaw); CWE-506
Ocena CVSS
MITRE: 8.6 (CVSS 3.1, WYSOKA). NVD: 8.6 (CVSS 3.1, WYSOKA). Atak przez sieć, bez konta i bez udziału człowieka, wysoki wpływ na poufność
2. O CO CHODZI W PROSTYCH SŁOWACH?
Wyobraź sobie hurtownię, z której od lat zamawiasz ten sam towar po numerze partii. W nocy ktoś wchodzi do magazynu i przekleja numery wszystkich partii, starych i nowych, na jedną paletę z podróbkami. Zamówienie jest identyczne jak zawsze, numer się zgadza, a przyjeżdża coś innego. Nie pomogło nawet to, że zamawiałeś starą, sprawdzoną partię sprzed dwóch lat.
Tak wyglądał ten atak. W GitHub Actions numer wersji akcji (np. v35) nie jest trwałą etykietą, tylko wskaźnikiem, który właściciel repozytorium może przesunąć. Napastnik przesunął wszystkie wskaźniki na kod, który w trakcie budowania aplikacji wypisywał do dziennika zawartość schowka z hasłami: klucze do chmury, tokeny do GitHub i rejestrów pakietów, klucze prywatne. Według opiekunów projektu, przywołanych przez Wiz, napastnik użył wykradzionego tokenu konta automatu z dostępem do repozytorium.
💡 GitHub Actions to usługa GitHub do automatycznego testowania, budowania i wdrażania aplikacji. Akcja to gotowy klocek takiego procesu, pisany zwykle przez zewnętrznych autorów. CI/CD to automatyczny proces od zmiany w kodzie do wdrożenia. Sekret to hasło lub klucz przekazywany procesowi w chwili uruchomienia. Commit to konkretna, niezmienna wersja kodu o unikalnym identyfikatorze. Atak na łańcuch dostaw to przejęcie czegoś, czemu cel ufa, zamiast samego celu. KEV (Known Exploited Vulnerabilities) to katalog CISA z lukami potwierdzonymi jako wykorzystywane w atakach.
Scenariusz
Normalnie
Z podatnością
Proces budowania używa akcji w wersji v35
Uruchamia ten sam sprawdzony kod
Uruchamia podmieniony kod
Sekrety w procesie budowania
Ukryte w dziennikach
Wypisane do dziennika w zakodowanej postaci
Dziennik projektu publicznego
Pokazuje przebieg budowania
Pokazuje każdemu klucze firmy
Aktualizacja akcji do v46.0.1
Zamyka problem
Zamyka drogę wycieku, ale nie unieważnia haseł, które już wyciekły
Wyszukanie hasła w dzienniku
Szybko znajduje wyciek
Nic nie znajduje, bo hasła były podwójnie zakodowane
źródło: Unsplash, Yosuke Ota
3. JAK HAKERZY TO WYKORZYSTUJĄ?
Poniżej typowy przebieg ataku na łańcuch dostaw tego typu, dopasowany do opisów CISA i badaczy. To scenariusz poglądowy, a nie odtworzenie konkretnego incydentu. CISA wskazuje, że przejęcie tej akcji zostało prawdopodobnie umożliwione wcześniejszym przejęciem innej akcji, reviewdog/action-setup (CVE-2025-30154).
Etap
Czas
Akcja hakerów
Wynik
1. Pierwsze przejęcie
T+0
Przejęcie mniej znanej akcji używanej przez opiekunów docelowego projektu
Dostęp do tokenu z uprawnieniami do repozytorium
2. Podmiana kodu
T+godziny do dni
Wgranie złośliwego kodu i przestawienie oznaczeń v1 do v45.0.7
Tysiące procesów budowania pobiera podmieniony kod
3. Wyciek sekretów
T+minuty od każdego uruchomienia
Wypisanie sekretów do dzienników uruchomień
Klucze w publicznych dziennikach
4. Zbieranie łupu
T+godziny
Przeszukiwanie publicznych dzienników i dekodowanie haseł
Klucze do chmury, GitHub, npm, klucze prywatne
5. Wykorzystanie kluczy
T+godziny do tygodni
Logowanie do chmury, repozytoriów i rejestrów pakietów ofiar
Dostęp do infrastruktury i kodu firm
6. Dalsze ataki
T+tygodnie do miesięcy
Kradzież danych, uruchamianie maszyn na koszt ofiary, publikacja złośliwych pakietów
Straty finansowe i kolejne ataki na łańcuch dostaw
Konkretne scenariusze zagrożenia
🔴 Scenariusz 1: sklep internetowy z meblami ma w procesie budowania klucz do konta chmurowego; po wycieku obce konto uruchamia maszyny do kopania kryptowalut, a rachunek rośnie z kilkuset złotych do kilkudziesięciu tysięcy.
🔴 Scenariusz 2: ten sam klucz daje dostęp do bazy klientów i kopii zapasowych; ich pobranie nie generuje żadnej faktury i nikt tego nie zauważa.
🔴 Scenariusz 3: wykonawca podniósł wersję akcji w marcu 2025 roku i zamknął temat, a klucz do chmury klienta, zapisany wtedy w publicznym dzienniku, działa do dziś.
4. DLACZEGO TO RYZYKO DLA TWOJEJ FIRMY?
Firma zamawiająca oprogramowanie rzadko wie, z jakich zewnętrznych klocków składa się proces budowania jej aplikacji, a te klocki mają dostęp do najcenniejszych kluczy. Najgroźniejsze w tej sprawie jest to, że hasło ujawnione w marcu 2025 roku pozostaje ważne, dopóki ktoś go nie wymieni.
Obszar biznesu
Potencjalny wpływ
Czas do wystąpienia
Koszty szacunkowe
Operacyjny
Wymiana wszystkich kluczy, przegląd procesów budowania, możliwe przerwy we wdrożeniach
Dni
10 tys. do 80 tys. PLN (praca zespołu programistów)
Bezpieczeństwo danych
Dostęp obcych do chmury, repozytoriów kodu, baz danych i kopii
Godziny do miesięcy (ciche)
30 tys. do 250 tys. PLN (analiza powłamaniowa, obsługa incydentu)
Finansowy
Rachunki za zasoby chmurowe uruchomione przez napastnika, koszty incydentu
Dni do tygodni
10 tys. do 400 tys. PLN łącznie
Reputacyjny
Wyciek kodu lub danych klientów, złośliwe wersje publikowanych pakietów
Tygodnie do miesięcy
30 tys. do 300 tys. PLN (utracone zaufanie)
Prawny
Obowiązek zgłoszenia naruszenia do UODO w ciągu 72 godzin, jeśli dotyczy danych osobowych; możliwa kara RODO do 20 mln EUR lub 4% rocznego obrotu (zależnie od okoliczności i skali zaniedbań)
72 godziny od wykrycia
10 tys. do 100 tys. PLN (prawnicy, obsługa zgłoszeń), bez ewentualnej kary
Interpretacja: dla repozytoriów publicznych, w których nie wymieniono kluczy, ryzyko jest wysokie (dzienniki dostępne dla każdego, potwierdzone wykorzystanie); według Wiz ryzyko dla repozytoriów prywatnych jest ograniczone, bo dzienniki nie są publiczne, ale wymiana kluczy nadal jest zalecana.
5. CO MUSISZ ZROBIĆ NATYCHMIAST?
Lp.
Priorytet
Działanie
Termin
Odpowiedzialny
1
🔴 NATYCHMIAST
Wyszukać we wszystkich repozytoriach użycie tj-actions/changed-files (oraz reviewdog/action-setup)
Dziś
Programiści / wykonawca
2
🔴 NATYCHMIAST
Sprawdzić, czy procesy z tą akcją uruchamiały się między 12 marca 2025 roku, 00:00 UTC, a 15 marca 2025 roku, 12:00 UTC
Dziś
Programiści / wykonawca
3
🔴 NATYCHMIAST
Wymienić wszystkie sekrety używane w tych procesach: klucze chmurowe, tokeny GitHub i npm, klucze prywatne
Dziś
Programiści / administrator chmury
4
🟠 PILNIE
Usunąć lub zabezpieczyć dzienniki uruchomień z okresu ataku, pamiętając o podwójnym kodowaniu haseł
Do 2 dni
Programiści
5
🟠 PILNIE
Przejrzeć logi chmury, GitHub i rejestrów pakietów pod kątem użycia kluczy z nieznanych miejsc od marca 2025 roku
Do 7 dni
Administrator / zespół bezpieczeństwa
6
🟠 PILNIE
Zaktualizować akcję do v46.0.1 lub nowszej, przypiąć ją do identyfikatora commita albo zastąpić
Do 7 dni
Programiści
7
🟡 WAŻNIE
Przypiąć wszystkie zewnętrzne akcje do identyfikatorów commitów i ograniczyć zakres oraz ważność kluczy w procesach
Do 30 dni
CTO / wykonawca
Jeśli aktualizacja nie jest dostępna
Złośliwe zmiany zostały wycofane, a CISA podaje v46.0.1 jako wersję naprawioną. Tu kluczowa nie jest jednak aktualizacja, tylko unieważnienie tego, co wyciekło. Oceny efektywności poniżej to ocena ekspercka.
Czasowa miara ochronna
Efektywność
Łatwość wdrożenia
Wymiana wszystkich sekretów z procesów uruchamiających akcję (zalecenie CISA)
Wysoka: unieważnia wykradzione klucze
Średnia: wymaga koordynacji z usługami
Przypięcie akcji do identyfikatora commita zamiast numeru wersji
Wysoka wobec przyszłych podmian oznaczeń
Łatwa
Klucze o wąskim zakresie i krótkiej ważności (np. kilka dni)
Wysoka: ogranicza skutki kolejnych wycieków
Średnia, ustawienie po stronie dostawcy chmury
Usunięcie dzienników z okresu ataku
Średnia: nie cofa już dokonanego odczytu
Łatwa
Przed i po działaniu
Stan
Przed działaniem
Po działaniu
Sekrety z procesów budowania
Mogą leżeć w publicznych dziennikach od marca 2025 roku
Wymienione, stare unieważnione
Wersje zewnętrznych akcji
Przypięte do przesuwalnych numerów wersji
Przypięte do niezmiennych identyfikatorów commitów
Klucze chmurowe
Szeroki zakres, bez daty ważności
Wąski zakres, krótka ważność
Wiedza o użyciu kluczy
Brak
Przejrzane logi chmury i repozytoriów
Zgodność z zaleceniem CISA
Tylko aktualizacja akcji (termin wiąże agencje USA, ale jest dobrym punktem odniesienia)
Aktualizacja i wymiana sekretów, udokumentowane
6. KONTEKST I SKALA ZAGROŻENIA
Aspekt
Informacja
Czy jest wykorzystywana?
TAK (potwierdzone przez CISA). Ocena SSVC: atak możliwy do zautomatyzowania
Grupy przestępcze
Brak publicznych informacji o sprawcach; według opiekunów projektu (przez Wiz) użyto wykradzionego tokenu konta automatu
Kampanie ransomware
Brak potwierdzenia (CISA: Unknown)
Ocena CVSS
8.6 WYSOKA wg MITRE i NVD (CVSS 3.1), bez rozbieżności
PoC dostępny publicznie?
Nie dotyczy w zwykłym sensie: złośliwy kod był publicznie widoczny w repozytorium i opisany przez badaczy
Liczba atakowanych firm
Brak dokładnej liczby; Semgrep pisał o tysiącach procesów CI, Wiz o kilkudziesięciu repozytoriach z wyciekiem potwierdzonym w dziennikach
Prognoza EPSS
0,69794, percentyl 0,99315 (wg analizy źródłowej)
Sygnały zagrożenia dla CVE-2025-30066CVSS 3.1 (NVD) 8.6/10 █████████████████░░░ WYSOKAEPSS (próba w 30 dni) ~70% ██████████████░░░░░░ BARDZO WYSOKACISA KEV TAK ████████████████████ ataki potwierdzoneŁańcuch dostaw TAK ████████████████████ ryzyko systemoweRansomware (CISA) Unknown ░░░░░░░░░░░░░░░░░░░░ brak potwierdzenia
Linia czasu incydentu
2025-03-12 Początek okna uruchomień do sprawdzenia wg CISA (00:00 UTC)2025-03-14 Oznaczenia v1 do v45.0.7 wskazują na złośliwy commit2025-03-15 Koniec okna wg CISA (12:00 UTC); publikacja CVE w NVD; złośliwe zmiany wycofane2025-03-17 Wiz wskazuje przejęcie reviewdog/action-setup2025-03-18 CISA dodaje lukę do katalogu KEV i publikuje alert2025-03-19 CISA dopisuje v46.0.1 jako wersję naprawioną2025-04-08 Termin naprawy wg CISA dla agencji federalnych2026-06-17 Ostatnia aktualizacja wpisu w NVD ... ponad 17 miesięcy od terminu CISA2026-09-17: TUTAJ JESTEŚMY
7. BEZPOŚREDNI LINK DO DZIAŁANIA: checklista dla CTO/CFO
Czy którykolwiek nasz proces budowania używał tj-actions/changed-files lub reviewdog/action-setup?
TAK / NIE
🔴
2
Czy te procesy uruchamiały się w oknie od 12 do 15 marca 2025 roku?
TAK / NIE
🔴
3
Kiedy wymieniono sekrety używane w tych procesach?
[data]
🔴
4
Czy repozytoria z tymi procesami są publiczne?
TAK / NIE
🔴
5
Czy logi chmury lub GitHub pokazują użycie kluczy z nieznanych miejsc?
TAK / NIE
🟠
6
Czy zewnętrzne akcje są przypięte do identyfikatorów commitów?
TAK / NIE
🟠
7
Jaki zakres i ważność mają klucze używane w procesach budowania?
[zakres], [ważność]
🟡
Pytania diagnostyczne dla managera
✓ Czy wiem, kto buduje i wdraża nasze aplikacje i jakich zewnętrznych komponentów używa?
✓ Czy klucze do naszej chmury mają datę ważności, czy działają latami?
✓ Czy mamy alerty na nietypowy wzrost rachunków za chmurę?
✓ Czy umowy z wykonawcami mówią, jak szybko wymieniają klucze po wycieku?
✓ Czy mamy procedurę zgłoszenia naruszenia danych do UODO w 72 godziny?
Podsumowanie
CVE-2025-30066 to celowa podmiana akcji tj-actions/changed-files, przez którą procesy budowania wypisywały hasła i klucze do dzienników, dostępnych publicznie w otwartych projektach. CISA potwierdza wykorzystanie i podkreśla, że aktualizacja nie wystarcza, więc wymiana wszystkich sekretów z procesów uruchamianych w marcu 2025 roku to zadanie na dziś, a przypięcie zewnętrznych akcji do identyfikatorów commitów i ograniczenie ważności kluczy na najbliższe tygodnie.
Czytaj dalej
Powiązane artykuły
Zestaw zmienia się codziennie, więc przy kolejnej wizycie zobaczysz inny wycinek bloga.
Luka w systemach PLM firmy PTC pozwala bez logowania przejąć serwer. Grupa Cl0p wykorzystuje ją do kradzieży dokumentacji produktów i szantażu. Zainstaluj poprawki i sprawdź ślady włamania.
CISA dodała do katalogu KEV lukę z 2015 roku w narzędziu ABRT, która daje napastnikowi uprawnienia root na serwerach RHEL 7 i CentOS 7. Zaktualizuj pakiet abrt i zaplanuj wymianę systemów bez wsparcia.
Luka o ocenie 10.0 w konsoli Cisco Secure Firewall Management Center pozwala ominąć logowanie i przejąć urządzenie. Cisco i CISA potwierdzają ataki. Zaktualizuj FMC i sprawdź ślady włamania.
Klikając „Akceptuję”, zgadzasz się na przechowywanie plików cookie przez UXU w celu poprawy działania strony, analizy i wsparcia działań marketingowych.