CRITICAL🇬🇧 English

CVE-2025-47928

Spotipy: wyciek sekretów CI/CD przez podatny workflow GitHub Actions

CVSS 9.1v3.1pub. 2025-05-15upd. 2026-04-15

Biblioteka Spotipy zawierała podatny workflow GitHub Actions wykorzystujący `pull_request_target`, który umożliwiał wykonanie niezaufanego kodu z pełnym dostępem do sekretów repozytorium bazowego. Błąd pozwalał atakującemu na przejęcie kontroli nad repozytorium poprzez eksfiltrację tokenu `GITHUB_TOKEN` z uprawnieniami zapisu.

Pokaż oryginał (EN)

Spotipy is a Python library for the Spotify Web API. As of commit 4f5759dbfb4506c7b6280572a4db1aabc1ac778d, using `pull_request_target` on `.github/workflows/integration_tests.yml` followed by the checking out the head.sha of a forked PR can be exploited by attackers, since untrusted code can be executed having full access to secrets (from the base repo). By exploiting the vulnerability is possible to exfiltrate `GITHUB_TOKEN` and secrets `SPOTIPY_CLIENT_ID`, `SPOTIPY_CLIENT_SECRET`. In particular `GITHUB_TOKEN` which can be used to completely overtake the repo since the token has content write privileges. The `pull_request_target` in GitHub Actions is a major security concern—especially in public repositories—because it executes untrusted code from a PR, but with the context of the base repository, including access to its secrets. Commit 9dfb7177b8d7bb98a5a6014f8e6436812a47576f reverted the change that caused the issue.

🤖 Analiza AI
Jak działa

Podatność wynika z użycia triggera `pull_request_target` w pliku `.github/workflows/integration_tests.yml` w połączeniu z pobieraniem kodu z głowicy (head.sha) forka w ramach pull requesta. Trigger `pull_request_target` wykonuje kod w kontekście repozytorium bazowego — łącznie z dostępem do jego sekretów — nawet jeśli kod pochodzi z zewnętrznego forka. Atakujący mógł zatem przesłać złośliwy pull request, którego kod był uruchamiany z przywilejami repozytorium docelowego. W efekcie możliwa była eksfiltracja sekretów: `GITHUB_TOKEN`, `SPOTIPY_CLIENT_ID` oraz `SPOTIPY_CLIENT_SECRET`.

Skutki

Atakujący mógł uzyskać pełen dostęp do sekretów repozytorium, w tym tokenu `GITHUB_TOKEN` z uprawnieniami zapisu do treści, co umożliwiało całkowite przejęcie repozytorium (np. modyfikację kodu, wstrzyknięcie backdoora w łańcuch dostaw).

Mitygacja

Problem został usunięty poprzez wycofanie podatnej zmiany w commicie 9dfb7177b8d7bb98a5a6014f8e6436812a47576f. Należy zaktualizować repozytorium do wersji zawierającej ten commit. Dodatkowo zaleca się audyt wszystkich workflowów GitHub Actions pod kątem użycia `pull_request_target` z pobieraniem kodu z zewnętrznych forków oraz rotację potencjalnie skompromitowanych sekretów.

Kogo dotyczy

Repozytorium spotipy-dev/spotipy — środowisko CI/CD oparte na GitHub Actions, w wersji zawierającej commit 4f5759dbfb4506c7b6280572a4db1aabc1ac778d

Uwagi

Podatność dotyczy infrastruktury CI/CD projektu open-source, a nie samej biblioteki Spotipy jako paczki Python. Klasyfikacja CWE-488 odnosi się do ujawnienia zasobów niewłaściwemu kontekstowi. Zagrożenie jest szczególnie istotne dla projektów publicznych na GitHub korzystających z triggera `pull_request_target`.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
CI/CD
CWE
Referencje