GH Actions - Cache Poisoning
Aby uzyskać dalsze szczegóły, sprawdź oryginalny post https://scribesecurity.com/blog/github-cache-poisoning/
Zatrucie pamięci podręcznej
Akcja Git action/cache wprowadza mechanizm pamięci podręcznej w procesie Continuous Integration (CI), obejmujący dwie kluczowe fazy:
Uruchomienie akcji: Ta faza polega na wyszukiwaniu i pobieraniu danych z pamięci podręcznej podczas uruchamiania CI. Wyszukiwanie wykorzystuje unikalny klucz pamięci podręcznej, dając dwa wyniki:
Trafienie w pamięć podręczną: Żądane dane są znalezione w pamięci podręcznej i są natychmiast pobierane do użycia.
Brak trafienia w pamięć podręczną: Nie znaleziono pasujących danych w pamięci podręcznej, co powoduje pobranie wymaganych plików i katalogów, podobnie jak w przypadku pierwszego żądania.
Akcja po zakończeniu przepływu pracy: Ta faza jest poświęcona pamięci podręcznej danych po zakończeniu przepływu pracy CI. Konkretnie, jeśli wystąpi brak trafienia w pamięć podręczną podczas akcji uruchamiania, bieżący stan określonych katalogów jest przechowywany w pamięci podręcznej za pomocą podanego klucza. Ten proces jest zautomatyzowany i nie wymaga wywołania explicite.
Środki bezpieczeństwa: Izolacja pamięci podręcznej i ograniczenia dostępu
Aby utrzymać bezpieczeństwo i zapewnić izolację pamięci podręcznej, wprowadza się ograniczenia dostępu, tworząc logiczne rozdzielenie między różnymi gałęziami. Na przykład, pamięć podręczna utworzona dla gałęzi Feature-A (z bazą w głównej gałęzi) będzie niedostępna dla żądania pull request dla gałęzi Feature-B (również z bazą w głównej gałęzi).
Akcja pamięci podręcznej przestrzega określonej kolejności wyszukiwania:
Najpierw szuka trafień w pamięci podręcznej w tej samej gałęzi, w której uruchamiany jest przepływ pracy.
Jeśli nie powiedzie się, rozszerza wyszukiwanie do gałęzi nadrzędnej i innych gałęzi nadrzędnych.
Ważne jest, że dostęp do pamięci podręcznej jest ograniczony do gałęzi, obejmując wszystkie przepływy pracy i uruchomienia konkretnej gałęzi. Dodatkowo, GitHub narzuca politykę tylko do odczytu dla wpisów pamięci podręcznej po ich utworzeniu, zabraniając jakichkolwiek modyfikacji.
Implikacja w świecie rzeczywistym: Atak na przepływ pracy o niskich uprawnieniach, prowadzący do przepływu pracy o wysokich uprawnieniach
Ilustracyjny scenariusz CI pokazuje, jak atakujący może wykorzystać zatrucie pamięci podręcznej do eskalacji uprawnień z przepływu pracy o niskich uprawnieniach do przepływu pracy o wysokich uprawnieniach:
Przepływ pracy Unit-test, odpowiedzialny za uruchamianie testów jednostkowych i narzędzi do pokrycia kodu, zakłada użycie narzędzia skompromitowanego lub podatnego. Ten przepływ pracy wykorzystuje akcję Git action/cache, dzięki czemu pamięć podręczna jest dostępna dla dowolnego przepływu pracy.
Przepływ pracy Release, odpowiedzialny za budowanie i wydawanie artefaktu aplikacji, optymalizuje swoje operacje poprzez pamięci podręczne zależności Golang.
W tym scenariuszu przepływ pracy jednostkowego testu wprowadza złośliwy wpis do pamięci podręcznej, podmieniając prawidłową bibliotekę logowania Golang (`go
Last updated