Chmura i development & Cyberbezpieczeństwo

Błąd w regexie w AWS – jak dwa znaki mogły zagrozić chmurze?

Ile warte są dwa znaki w regexie? W tym przypadku: potencjalnie – spokój wszystkich użytkowników AWS.

Wystarczyły brakujące „^” i „$” w filtrze CodeBuild, by otworzyć furtkę do zaufanych repozytoriów AWS na GitHubie. Badacze z Wiz pokazali, że tym mikrobłędem dało się przeskoczyć zabezpieczenia, wykraść tokeny admina i przejąć m.in. AWS SDK for JavaScript – bibliotekę, która napędza samą Konsolę AWS. AWS naprawił konfigurację w 48 godzin, nie ma dowodów nadużyć. Ale lekcja jest większa niż szybka łatka.

To historia o tym, jak łańcuch dostaw oprogramowania (CI/CD) bywa najsłabszym ogniwem. Takie pipeline’y automatycznie budują, testują i wydają kod. Jedno przeoczenie w regule „kto może uruchomić build” potrafi zniweczyć mechanikę bezpieczeństwa. A gdy mówimy o SDK używanym w 66% środowisk chmurowych i zintegrowanym z Konsolą AWS, skala ryzyka przestaje być teoretyczna.

Ilustracja przedstawiająca chaotyczne środowisko łańcucha dostaw oprogramowania.
Grafika koncepcyjna (AI)

O co poszło

W kilku zarządzanych przez AWS repozytoriach open source (m.in. aws-sdk-js-v3, aws-lc, amazon-corretto-crypto-provider i awslabs/open-data-registry) filtrowano wyzwalacze CodeBuild po ACTOR_ID – czyli ID użytkownika GitHuba, który może uruchomić build dla pull requestu. Reguła była sprytna, ale nie dość precyzyjna: w regexie zabrakło kotwic początku i końca wzorca (^ i $). Efekt? Zamiast „dokładnie ten ID” dostawaliśmy „dowolny ID zawierający ten fragment”. [3]

Ilustracja przedstawiająca zagrożenie w chmurze związane z błędem w regexie.
Grafika koncepcyjna (AI)

GitHub przydziela numery ID sekwencyjnie. Jeśli zaufany maintainer ma np. 755743, to prędzej czy później pojawi się ktoś z ID 226755743 – zawierającym tamten ciąg jako podciąg. Badacze z Wiz nie czekali na „prędzej czy później”. Zautomatyzowali tworzenie GitHub Apps (każda tworzy bota), tworzyli setki nowych kont i „złapali” dokładny numer, który przechodził filtr. [3]

Jak to wykorzystano w praktyce

Mając „pasującego” bota, otworzyli PR do aws/aws-sdk-js-v3. Zmiana była legitna, ale w zależnościach NPM ukryli ładunek, który uruchamiał się w środowisku builda i z pamięci wyciągał GitHubowe poświadczenia.

W kilka chwil zdobyli Personal Access Token użytkownika aws-sdk-js-automation z pełnymi uprawnieniami admina do repo. Dalej to już administracja: zaprosić własne konto jako admina, móc pushować do maina, akceptować PR-y, podejrzeć sekrety.

Dlaczego to tak groźne

AWS SDK for JavaScript publikuje się regularnie na GitHubie i NPM. Z takim dostępem można doszyć złośliwy kod tuż przed wydaniem. Wiz szacuje, że dwie trzecie środowisk chmurowych trzyma gdzieś tę bibliotekę. Do tego sama Konsola AWS bundle’uje świeże wersje SDK. Jeden trefny release mógłby więc trafić zarówno do aplikacji klientów, jak i do interfejsu, którym zarządza się infrastrukturą. Jak ujął to jeden z badaczy: to „centralny układ nerwowy chmury”. SolarWinds dawał dostęp do sieci korporacyjnych; tu stawką była egzekucja kodu w miejscu, skąd zarządza się całym kontem.

AWS odpowiada i sprząta

Linia czasu jest krótka: zgłoszenie 25 sierpnia 2025 r., w 48 godzin AWS kotwiczy filtry regexem, cofa tokeny, a we wrześniu dorzuca twarde zabezpieczenia przed wyciekiem poświadczeń z pamięci buildów. Potem audyt publicznych pipeline’ów i logów – bez śladów nadużyć. Ważny niuans: Amazon podkreśla, że to nie bug w CodeBuild jako usłudze, lecz projektowa miskonfiguracja kilku repo. Na deser pojawia się nowa bramka „Pull Request Comment Approval”, która wymusza ludzką zgodę, zanim PR-y od nieufanych kont dotkną uprzywilejowanych buildów.

Szerszy trend, ten sam ból

Ta historia nie bierze się znikąd. W lipcu podobny błąd w konfiguracji CodeBuild posłużył do próby ataku supply-chain na rozszerzenie Amazon Q dla VS Code. W tle przewija się też incydent Nx S1ngularity i ogólna prawidłowość: subtelne błędy w CI/CD potrafią dać niewspółmiernie duży efekt. Jak ironicznie zauważył Corey Quinn: jeśli nawet AWS potrafi potknąć się na własnym regexie, to może czas double-check u reszty z nas. [4]

Czego się nauczyć (i szybko wdrożyć)

  • Kotwicz regexy w webhookach. ACTOR_ID bez ^ i $ to zaproszenie na imprezę dla każdego, kto przewidzi numerację ID.
  • Nie uruchamiaj uprzywilejowanych buildów z nieufanych PR-ów. Domyślna odmowa plus ręczna aprobata to mniej seksi CI, ale dużo zdrowsza.
  • Tokeny na diecie: minimalne uprawnienia, fine-grained, rotacja; a w buildach – krótkotrwałe poświadczenia i obrona przed „zrzutami z pamięci”.
  • Audyty konfiguracji CI/CD co jakiś czas, nie „raz przy wdrożeniu”.

Ironia losu? Dwa znaki interpunkcyjne to różnica między „dopasuj dokładnie” a „dopasuj cokolwiek, co trochę przypomina”. W łańcuchu dostaw oprogramowania taki niuans może mieć nieproporcjonalnie duże skutki. Pytanie na koniec: kiedy ostatnio zaglądaliście do własnych filtrów i uprawnień w pipeline’ach – i czy wasze „^” i „$” na pewno są na swoim miejscu?

FAQ

Czy podatność CodeBreach była wykorzystywana w praktyce przeciwko AWS?

Nie, AWS nie znalazł dowodów nadużyć w logach repozytoriów i CloudTrail. Luka została załatana w ciągu 48 godzin od zgłoszenia, a później wdrożono dodatkowe zabezpieczenia.

Kiedy AWS naprawił błąd w CodeBuild/konfiguracjach repozytoriów?

Główna poprawka trafiła w końcówce sierpnia 2025 r., w 48 godzin po zgłoszeniu 25 sierpnia. Dodatkowe utwardzenia wdrożono we wrześniu 2025 r., a publiczne ujawnienie nastąpiło 15 stycznia 2026 r.

Czy to był błąd usługi AWS CodeBuild, czy tylko zła konfiguracja?

To była zła konfiguracja konkretnych repozytoriów, nie wada samej usługi. AWS zakotwiczył filtry, zrotował poświadczenia i przeaudytował pozostałe projekty.

Jak sprawdzić, czy mój filtr ACTOR_ID w CodeBuild jest bezpieczny?

Najpierw tak: wzorzec musi używać ^ i $ dla pełnego dopasowania ID. Dodatkowo ogranicz PR-y z zewnątrz, a uprzywilejowane buildy przepuszczaj tylko po ręcznej akceptacji zaufanego maintenera.

Które repozytoria AWS były dotknięte podatnością CodeBreach?

Potwierdzono cztery: aws-sdk-js-v3, aws-lc, amazon-corretto-crypto-provider i awslabs/open-data-registry. AWS informuje, że podobnej miskonfiguracji nie znaleziono w pozostałych projektach.

Źródła

🧠 Czy ten artykuł dał Ci nową perspektywę?
Jedno kliknięcie. Zero kont. PressMind uczy się razem z Tobą.
Ładowanie oceny…

PressMind Labs - Ślad badawczy

To nie jest ozdobnik. To ślad po procesie: ile informacji było szumem, ile stało się wiedzą i jak wyglądał research, zanim powstał ten tekst.

9 źródeł użytych w tekście
9 niezależnych domen
1 min 39 s czas researchu
Wysoki sygnał jakości
Skan tematu
182 z 318 sygnałów (RSS: 3086)
Zachowano: 182 (57%) | Odrzucono: 107 (34%)
Źródła (finalne)
9 źródeł z 9 domen
Start: 1 | Finalnie: 9
Czas researchu
1 min 39 s
Różnorodność domen: 9 Źródła użyte: 9 Kontekst: pominięty Liczby w tekście: 1

1. Zbieranie sygnałów (discovery)

Temat
Two Missing Characters: How a Regex Flaw Exposed AWS GitHub Repos to Supply-Chain Risk
RSS - źródeł w configu
90
RSS - stan źródeł
90 / 90 OK
RSS - przepływ (od surowych do unikalnych)
3086 -> 2995 -> 449 -> 318
RSS - usunięte duplikaty tytułów
2
Pula tematów (z RSS)
318
Wybrane do analizy
182
Odrzucone
107
Duplikaty (archiwum tematów)
1
Klastry (wątki)
144

2. Selekcja i filtrowanie

Odrzucono jako nieaktualne (filtr daty)
2
Odrzucono semantycznie (embedding)
25

3. Wyszukiwanie i wzbogacanie

Zapytania wyszukiwawcze
19
Unikalne wyniki
50
Kandydaci
35
Dodane z wyszukiwania (cache+live)
8
Przeskanowano URL-i (research)
1

4. Finalny kontekst

Źródła użyte w tekście
9
Źródła (domeny)
9
Wikipedia - kontekst
nie
Expansion - kontekst
nie
Wyłuskane liczby
1
Ten proces pokazuje, jak z dziesiątek sygnałów wyłania się kilka sprawdzonych źródeł, na których oparto finalny tekst.

Dodaj komentarz