CVE-2026-61549
KrytyczneCVSS 9.0Streszczenie
Woodpecker, silnik CI/CD, w wersjach od 1.0.0 do 3.16.0 pozwala użytkownikowi z uprawnieniem Push na podłączonym repozytorium uruchamiać kroki potoku w dowolnym ServiceAccount w przestrzeni nazw potoku bez autoryzacji administratora. Umożliwia to dziedziczenie uprawnień RBAC tego konta i potencjalne przejęcie klastra. Problem naprawiono w wersji 3.16.0.
Ocena ryzyka
Atakujący może uzyskać dostęp do sekretów, takich jak dane uwierzytelniające do baz danych, klucze API i certyfikaty TLS, a w skrajnym przypadku przejąć cały klaster Kubernetes. Ryzyko jest wysokie w środowiskach CI/CD z podłączonymi repozytoriami.
Rekomendacja
Zaktualizuj Woodpecker do wersji 3.16.0 lub nowszej. Ogranicz uprawnienia Push w repozytoriach oraz stosuj zasadę najmniejszych uprawnień dla ServiceAccount w klastrze.
Inne podatności w Woodpecker
Zobacz wszystkie- CVE-2026-58370Wysokie
Podatność w Woodpecker przed wersją 3.15.0 pozwala na obejście listy ApprovalAllowedUsers poprzez manipulację polem pipeline.Author. Dla integracji z GitLab, autor potoku jest pobierany z nazwy autora commita (commit.author.name) w webhooku, która jest kontrolowana przez atakującego i nie jest weryfikowana przez GitLab. Użytkownik otwierający merge request z forka może ustawić nazwę autora commita tak, aby pasowała do wpisu na liście ApprovalAllowedUsers, co powoduje, że needsApproval zwraca false i potok uruchamia się bez wymaganej zgody.
- CVE-2026-58369Średnie
Woodpecker przed wersją 3.15.0 udostępnia endpoint /api/orgs/lookup/*org_full_name bez uwierzytelniania, a procedura obsługi LookupOrg bezwzględnie wyłuskuje użytkownika sesji (user.ForgeID przez ForgeFromUser) przy wyborze forga do zapytania. Dla nieuwierzytelnionego żądania session.User zwraca nil, co powoduje wyłuskanie wskaźnika NULL i panikę. Panika jest przechwytywana przez middleware gin recovery, a serwer kontynuuje działanie (zwracając HTTP 500), ale każde żądanie zapisuje wieloliniowy ślad paniki do dziennika błędów.
Oryginalny opis (angielski, źródło NVD)
Woodpecker is a CI/CD engine. From 1.0.0 until 3.16.0, pipeline/backend/kubernetes/backend_options.go defines backend_options.kubernetes.serviceAccountName, and the Kubernetes backend in pipeline/backend/kubernetes/pod.go copies that pipeline-step value directly into the pod specification without administrator authorization. Any user with Push permission on a connected repository can therefore run pipeline pods under an arbitrary ServiceAccount in the pipeline namespace and inherit that account's RBAC permissions. When a privileged ServiceAccount is reachable, the attacker can exfiltrate secrets such as database credentials, API keys, and TLS certificates and may take over the cluster. This issue is fixed in version 3.16.0.

