Pomoc zdalna
alerty bezpieczeństwa

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.

  • Paweł Niedźwiecki
Paweł Niedźwiecki
17 września 2026 9 min czytania
Grafika przedstawiająca automatyzację CI/CD

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

Stos skrzyń transportowych z tym samym numerem partiiź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

Tomasz Kaczmarek
Tomasz Kaczmarek

Mogę Ci jakoś pomóc?

Kwoty są orientacyjnymi widełkami dla małej i średniej firmy, nie danymi z tego incydentu.

Macierz ryzyka dla procesów, które uruchamiały akcję w marcu 2025 roku Wpływ 5 | . . . . . 4 | . . . . ■ ← WYSOKIE (repozytorium publiczne, klucze nie wymienione) 3 | . . □ . . ← ŚREDNIE (repozytorium prywatne) 2 | . . . . . 1 | . . . . . +-------------------- 1 2 3 4 5 Prawdopodobieństwo

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-30066 CVSS 3.1 (NVD) 8.6/10 █████████████████░░░ WYSOKA EPSS (próba w 30 dni) ~70% ██████████████░░░░░░ BARDZO WYSOKA CISA KEV TAK ████████████████████ ataki potwierdzone Łańcuch dostaw TAK ████████████████████ ryzyko systemowe Ransomware (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 commit 2025-03-15 Koniec okna wg CISA (12:00 UTC); publikacja CVE w NVD; złośliwe zmiany wycofane 2025-03-17 Wiz wskazuje przejęcie reviewdog/action-setup 2025-03-18 CISA dodaje lukę do katalogu KEV i publikuje alert 2025-03-19 CISA dopisuje v46.0.1 jako wersję naprawioną 2025-04-08 Termin naprawy wg CISA dla agencji federalnych 2026-06-17 Ostatnia aktualizacja wpisu w NVD ... ponad 17 miesięcy od terminu CISA 2026-09-17: TUTAJ JESTEŚMY

7. BEZPOŚREDNI LINK DO DZIAŁANIA: checklista dla CTO/CFO

Instrukcje CISA: cisa.gov: Supply Chain Compromise of tj-actions/changed-files . Informacja w repozytorium projektu: github.com/tj-actions/changed-files: README . Wpis w NVD: nvd.nist.gov/vuln/detail/CVE-2025-30066 .

Lp.

Zadanie

Kto

Deadline

1

Zapytać wszystkich wykonawców, czy ich procesy budowania dla firmy używały tj-actions/changed-files

CTO

DZISIAJ

2

Uzyskać pisemne potwierdzenie wymiany sekretów z tych procesów

CTO

DZISIAJ

3

Sprawdzić, czy repozytoria firmy są publiczne czy prywatne

CTO

DZISIAJ

4

Przejrzeć faktury za chmurę z ostatnich miesięcy pod kątem nieznanych zasobów

CFO

DO JUTRA

5

Zlecić przegląd logów użycia kluczy w chmurze i na GitHub

CTO

DO JUTRA

6

Wpisać do umów z wykonawcami wymóg przypinania zewnętrznych komponentów i rotacji kluczy

CFO

DO JUTRA

7

Ustawić alerty budżetowe w koncie chmurowym

CFO

DO JUTRA

Tomasz Kaczmarek
Tomasz Kaczmarek

Mogę Ci jakoś pomóc?

8. PYTANIA DO TWOJEGO ZESPOŁU IT

#

Pytanie

Odpowiedź

Priorytet

1

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.

Masz to samo u siebie?

Możemy się tym zająć

Krótka rozmowa wystarczy, żeby ocenić zakres prac i podać widełki kosztu. Bez zobowiązań.