CRITICAL🇬🇧 English

CVE-2021-32724

check-spelling GitHub Action — ujawnienie GITHUB_TOKEN przez złośliwy Pull Request

CVSS 9.9v3.1pub. 2021-09-09upd. 2024-11-21

Podatność w akcji GitHub check-spelling pozwala atakującemu na wyciągnięcie tokena GITHUB_TOKEN poprzez spreparowany Pull Request, gdy akcja działa w trybie pull_request_target lub schedule. Posiadając token, atakujący może przejąć kontrolę nad repozytorium i uzyskać dostęp do wszystkich przechowywanych sekretów.

Pokaż oryginał (EN)

check-spelling is a github action which provides CI spell checking. In affected versions and for a repository with the [check-spelling action](https://github.com/marketplace/actions/check-spelling) enabled that triggers on `pull_request_target` (or `schedule`), an attacker can send a crafted Pull Request that causes a `GITHUB_TOKEN` to be exposed. With the `GITHUB_TOKEN`, it's possible to push commits to the repository bypassing standard approval processes. Commits to the repository could then steal any/all secrets available to the repository. As a workaround users may can either: [Disable the workflow](https://docs.github.com/en/actions/managing-workflow-runs/disabling-and-enabling-a-workflow) until you've fixed all branches or Set repository to [Allow specific actions](https://docs.github.com/en/github/administering-a-repository/managing-repository-settings/disabling-or-limiting-github-actions-for-a-repository#allowing-specific-actions-to-run). check-spelling isn't a verified creator and it certainly won't be anytime soon. You could then explicitly add other actions that your repository uses. Set repository [Workflow permissions](https://docs.github.com/en/github/administering-a-repository/managing-repository-settings/disabling-or-limiting-github-actions-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository) to `Read repository contents permission`. Workflows using `check-spelling/check-spelling@main` will get the fix automatically. Workflows using a pinned sha or tagged version will need to change the affected workflows for all repository branches to the latest version. Users can verify who and which Pull Requests have been running the action by looking up the spelling.yml action in the Actions tab of their repositories, e.g., https://github.com/check-spelling/check-spelling/actions/workflows/spelling.yml - you can filter PRs by adding ?query=event%3Apull_request_target, e.g., https://github.com/check-spelling/check-spelling/actions/workflows/spelling.yml?query=event%3Apull_request_target.

🤖 Analiza AI
Jak działa

Akcja check-spelling uruchomiona w kontekście pull_request_target ma dostęp do GITHUB_TOKEN z uprawnieniami zapisu do repozytorium. Atakujący może wysłać spreparowany Pull Request, który powoduje ujawnienie tego tokena — co odpowiada podatności klasy CWE-532 (zapisywanie wrażliwych informacji w logach lub innych miejscach dostępnych dla nieuprawnionego odbiorcy). Po przejęciu tokena możliwe jest wypychanie commitów do repozytorium z pominięciem standardowych procesów zatwierdzania, a następnie kradzież wszystkich sekretów dostępnych w repozytorium.

Skutki

Atakujący uzyskuje ważny GITHUB_TOKEN z uprawnieniami zapisu, co umożliwia modyfikację kodu repozytorium, obejście mechanizmów code review oraz wykradzenie wszystkich sekretów (np. kluczy API, danych uwierzytelniających) skonfigurowanych w repozytorium.

Mitygacja

Należy zaktualizować workflow do najnowszej wersji akcji (workflows używające check-spelling/check-spelling@main otrzymają poprawkę automatycznie; workflows używające przypiętego SHA lub tagu muszą zostać ręcznie zaktualizowane we wszystkich gałęziach repozytorium). Jako obejście tymczasowe: wyłącz workflow do czasu aktualizacji wszystkich gałęzi; ogranicz dozwolone akcje w ustawieniach repozytorium (Allow specific actions); ustaw uprawnienia Workflow permissions dla GITHUB_TOKEN na 'Read repository contents permission'.

Kogo dotyczy

Repozytoria GitHub korzystające z akcji check-spelling (check-spelling/check-spelling) z wyzwalaczem pull_request_target lub schedule — wersje opublikowane przed poprawką zawartą w commicie 436362fc6b588d9d561cbdb575260ca593c8dc56; dotyczy wszystkich przepływów pracy (workflow) używających przypiętych wersji lub tagów starszych niż poprawiona.

Uwagi

Podatność dotyczy specyficznego modelu bezpieczeństwa GitHub Actions — wyzwalacz pull_request_target z definicji uruchamia workflow w kontekście repozytorium docelowego (z uprawnieniami zapisu), nawet dla PR-ów z forków zewnętrznych, co czyni go szczególnie wrażliwym na tego rodzaju ataki. Producent udostępnił szczegółowe advisory pod GHSA-g86g-chm8-7r2p.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
  • Check Spelling

    APP
    Check-Spelling
    < 0.0.19
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
CWE
Referencje