CRITICAL🇬🇧 English

CVE-2026-31976

Tag poisoning w xygeni/xygeni-action — kompromitacja łańcucha dostaw CI/CD

CVSS 9.3v4.0pub. 2026-03-11upd. 2026-03-16

GitHub Action xygeni/xygeni-action został skompromitowany poprzez technikę tag poisoning: atakujący przesunął mutabilny tag @v5 na złośliwy commit zawierający zaciemniony shellcode, co spowodowało wykonanie implantu C2 we wszystkich pipeline'ach CI/CD odwołujących się do tej wersji. Podatność jest krytyczna, ponieważ dotknęła dowolny workflow używający @v5 bez wiedzy i zgody właściciela repozytorium.

Pokaż oryginał (EN)

xygeni-action is the GitHub Action for Xygeni Scanner. On March 3, 2026, an attacker with access to compromised credentials created a series of pull requests (#46, #47, #48) injecting obfuscated shell code into action.yml. The PRs were blocked by branch protection rules and never merged into the main branch. However, the attacker used the compromised GitHub App credentials to move the mutable v5 tag to point at the malicious commit (4bf1d4e19ad81a3e8d4063755ae0f482dd3baf12) from one of the unmerged PRs. This commit remained in the repository's git object store, and any workflow referencing @v5 would fetch and execute it. This is a supply chain compromise via tag poisoning. Any GitHub Actions workflow referencing xygeni/xygeni-action@v5 during the affected window (approximately March 3–10, 2026) executed a C2 implant that granted the attacker arbitrary command execution on the CI runner for up to 180 seconds per workflow run.

🤖 Analiza AI
Jak działa

3 marca 2026 roku atakujący, dysponując skradzionymi poświadczeniami GitHub App, przesłał seria pull requestów (#46, #47, #48) zawierających zaciemniony shellcode wstrzyknięty do pliku action.yml. Pomimo zablokowania PR przez reguły ochrony gałęzi, atakujący użył skompromitowanych poświadczeń, aby przenieść mutabilny tag v5 tak, by wskazywał na złośliwy commit (4bf1d4e19ad81a3e8d4063755ae0f482dd3baf12) z niezmergowanego PR. Commit pozostawał dostępny w repozytorium git i każdy workflow odwołujący się do @v5 automatycznie pobierał i wykonywał złośliwy kod. Mechanizm klasyfikowany jest jako CWE-506 (Embedded Malicious Code) — osadzony szkodliwy kod w komponencie oprogramowania.

Skutki

Atakujący uzyskiwał dowolne wykonanie poleceń (arbitrary command execution) na runnerze CI przez do 180 sekund na każde uruchomienie workflow, z możliwością eksfiltracji sekretów, tokenów oraz danych środowiska CI/CD za pośrednictwem implantu C2.

Mitygacja

Należy natychmiast zmienić wszystkie odwołania do xygeni/xygeni-action@v5 na bezpieczną, zweryfikowaną wersję lub wskazać konkretny hash bezpiecznego commitu zamiast mutabilnego tagu. Zaleca się rotację wszystkich sekretów i tokenów używanych w pipeline'ach CI/CD, które mogły wykonać @v5 w oknie kompromitacji (3–10 marca 2026). Szczegółowe zalecenia producenta dostępne są w referencjach (GHSA-f8q5-h5qh-33mh).

Kogo dotyczy

Wszystkie repozytoria i workflow GitHub Actions odwołujące się do xygeni/xygeni-action@v5 w przybliżonym przedziale czasowym 3–10 marca 2026 roku.

Uwagi

Według opisu podatności atak miał miejsce 3 marca 2026 roku poprzez kompromitację poświadczeń GitHub App. Złośliwy commit (4bf1d4e19ad81a3e8d4063755ae0f482dd3baf12) był dostępny w repozytorium przez około 7 dni (3–10 marca 2026). Atak obejmował próbę wstrzyknięcia kodu przez PR #46, #47 i #48, które zostały zablokowane przez branch protection, jednak tag poisoning ominął tę ochronę. CISA KEV nie odnotowuje tej podatności jako aktywnie eksploitowanej w momencie publikacji.

CVSS Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
  • Xygeni Action

    APP
    Xygeni
    5.38.0 – 6.4.0
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
CI/CD
CWE
Referencje