Skip to content

API Key, AWS Secret ali Stripe Live Token, namenjen javnemu repoju GitHub: avtomatizirano strganje z botom v 60 sekundah, takojšnja rotacija ključa in preklop za zaračunavanje

V trenutku, ko tečeš git push v javni repozitorij GitHub, GitLab ali Bitbucket (or temporarily flip a private repository to "Public" for even 10 seconds) med datoteko, .env konfiguracija, prenosni računalnik Jupyter (.ipynb), ali starejša zgodovina objave Git vsebuje skrivni ključ v živo (such as an AWS Access Key ID starting with AKIA, a Stripe Live Secret Key sk_live_, an OpenAI key sk-proj-, an Anthropic key sk-ant-, or a Google Cloud service account .json), globalno omrežje avtomatiziranih botov za zbiranje poverilnic to skrivnost prestreže v 2 do 60 sekundah. Ker je GitHub javen Events API, GH Archive, in požarne cevi webhook v realnem času pretakajo vsako javnost PushEvent globalno zlonamerni roboti za strganje razčlenijo vaš diff z regularnimi izrazi in začnejo izvajati avtomatizirane ukaze v oblaku, še preden lahko vnesete git revert.

Znotraj 90 seconds od an AWS oz GCP skrivnost zadene javni repo, avtomatizirani botneti zavrtijo primerke GPE/CPE največje velikosti (such as p4d.24xlarge or c6i.32xlarge čez nejasna območja, kot je ap-east-1 Hong Kong, me-south-1 Bahrajn oz sa-east-1 Sao Paulo) za rudarjenje Monera (XMR), zahtevajte preprosto e-poštno storitev AWS (SES) povečanje kvote za razstreljevanje neželene pošte z lažnim predstavljanjem ali kloniranje vašega zasebnega S3 vedra in RDS baze podatkov, ki ustvarjajo $5,000 to $80,000+ na računih za računalništvo v oblaku čez noč. Podobno je ušlo OpenAI oz Anthropic Ključ API-ja je takoj združen v podzemne tržnice LLM "reverse-proxy", ki črpajo na tisoče dolarjev kreditov žetonov na minuto, medtem ko je pricurljal Stripe skrivni ključ v živo (sk_live_...) napadalcem podeljuje popoln programski dostop za branje/pisanje za izdajanje goljufivih povračil, izvozna stranka PII, ali sproži nepooblaščena izplačila Connect. Če napadalec aktivno izsiljuje vašo organizacijo, potem ko je z vašim razkritim ključem izbrskal baze podatkov strank, se obrnite na lokalne organe kazenskega pregona in telefonske številke za kibernetske incidente prek naše številke za klic v sili nemudoma in preglejte naše povezane vodnike naključni padec produkcijske baze podatkov, git force-push in triaža skrivnih uhajanj, proizvodna zbirka podatkov je padla ali vedro S3 izbrisano brez nedavne varnostne kopije, in varnost dela na daljavo v sili in zasebnost podatkov.

Naredi to zdaj

  1. NE zapravite prvih 60 sekund teka git rm .env oz git push --force: POJDI NEPOSREDNO NA KONZOLO PONUDNIKA (AWS IAM, Stripe, OpenAI, GCP) IN PREKLIC/DEAKTIVIRANJE KLJUČA IN < 30 SECONDS. Brisanje datoteke v novi objavi Git (or even making the GitHub repository Private) ne naredi ničesar, da bi zaustavil robote, ki so pred 10 sekundami že postrgali vaš ključ iz požarne cevi GitHub Events. Sam ključ je treba najprej uničiti pri izvoru.
  2. Če an AWS ključ (AKIA... oz ASIA...) ušlo: Odprto AWS IAM -> Users -> Security credentials in takoj kliknite Deaktiviraj / Izbriši na ključu za dostop, nato priložite AWSCompromisedKeyQuarantineV2 (or a blanketZavrni *inline policy) uporabniku IAM in poveča uporabnikovo RevokeOldSessions politiko za ubijanje vseh začasnih STS žetoni, ki jih je napadalec že skoval (see the exact STS bypass trap below).
  3. Če a Stripe Skrivni ključ v živo (sk_live_... oz rk_live_...) ušlo: Pojdi na dashboard.stripe.com/apikeys, kliknite ... -> Roll key in nastavite potek veljavnosti starega ključa na "Zdaj (Immediately)" (NOT "in 24 hours"). Takoj preverite Stripe Dashboard -> Logs in Balance -> Payouts / Refunds za nepooblaščene klice API-ja.
  4. Če an OpenAI, Anthropic, Google Gemini, oz SendGrid / Twilio ključ je ušel: Takoj izbrišite ključ API na nadzorni plošči ponudnika in nastavite Hard Monthly Spend Limit ($0 ali vaša običajna omejitev) v nastavitvah obračunavanja, da prekinete zahteve za pretakanje med letom.
  5. Počisti VSE regije oblaka (especially disabled/opt-in regions) za lažne instance EC2, funkcije Lambda, opravila ECS, vedra S3 in uporabnike IAM za zalednimi vrati, ki jih ustvari bot med 2-minutnim oknom izpostavljenosti. Napadalci posebej zaženejo instance kripto rudarjenja v regijah, ki jih nikoli ne kliknete v konzoli (like Stockholm eu-north-1, Osaka ap-northeast-3, or Mumbai ap-south-1) in ustvarite drugega skritega uporabnika IAM (or SSH key pair), tako da lahko ostanejo v vašem računu, potem ko izbrišete razkriti ključ.
  6. Šele PO tem, ko je skrivnost preklicana in zakulisni računi IAM očiščeni, počistite objavo iz Gita (using git-filter-repo) IN se obrnite na podporo za GitHub (or remove cached PR/commit views), da počistite viseče predpomnilnike SHA, nato vložite AWS / GCP Accidental Leak Billing Waiver Request, če so roboti naložili ogromen račun v oblaku.

Danger

Zakaj brisanje razkritega AKIA Ključ v AWS IAM NI dovolj (The STS GetSessionToken Persistence Trap). Znotraj 5 seconds strganja vaše statike AKIA... Ključ za dostop do AWS IAM iz GitHub, sofisticirani avtomatizirani botneti ne zaženejo samo primerkov EC2 z vašim AKIA ključ; njihov prvi klic API-ja je sts:GetSessionToken oz sts:AssumeRole, ki kuje začasno ASIA... Storitev varnostnih žetonov (STS) žeton seje velja do 12 to 36 hours. Tudi potem, ko izbrišete izvirnik AKIA... ključ za dostop v konzoli IAM, poljubno začasno ASIA... Žetoni STS, skovani pred tem trenutkom, ostanejo 100 % aktivni in veljavni, razen če priložite tudi izrecno Deny All pravilnik v vrstici (with a Condition checking aws:TokenIssueTime < CurrentUTC) ogroženemu uporabniku IAM in vsaki vlogi, ki bi jo lahko prevzel.

Odločitveno drevo: 60-sekundni odziv v sili glede na vrsto razkrite skrivnosti

Sledite temu diagramu poteka za zadrževanje incidenta, da uničite ogroženo poverilnico, ločite vztrajnost napadalca in obrnete zaračunavanje v oblaku.

flowchart TD
    A["Live Secret, predana javnemu repoju GitHub/GitLab (.env, izvorna koda ali zgodovina git)"] --> B["DRUGI OD 0 DO 30: Najprej NE zaženite git rm. Odprite konzolo ponudnika Cloud/API in nemudoma PREKLICAJTE ključ"]
    B --> C{"Katera vrsta poverilnice v živo je bila razkrita?"}
    C -->|"1. Ključ za dostop do AWS (AKIA ... / ASIA ...)"| D["1. Deaktiviraj/izbriši ključ v IAM 2. Pripni vgrajeni pravilnik 'Zavrni vse' uporabniku (uniči kovane žetone STS) 3. Revizija CloudTrail za backdoor uporabnike IAM"]
    C -->|"2. Tajni ključ Stripe Live (sk_live_... / rk_live_...)"| E["1. Roll Key z iztekom = 'Immediate' 2. Preverite /v1/refunds, /v1/transfers & Webhook Endpoints 3. Ocenite izpostavljenost PII stranke"]
    C -->|"3. OpenAI (sk-proj-...), Anthropic (sk-ant-...) ali Gemini Key"| F["1. Prekličite ključ v konzoli za razvijalce 2. Začasno znižajte omejitev trdega zaračunavanja organizacije na 0 USD 3. Preverite dnevnike uporabe za praznjenje žetonov"]
    C -->|"4. URI zbirke podatkov (postgres://, mongodb+srv://) ali URL Redis"| G["1. Takoj zasukajte geslo DB 2. Zaženite pg_terminate_backend() / KILL, da prekinete aktivne povezave 3. Zaklenite varnostno skupino samo na IP-je VPC"]
    D --> H["Zaženite Multi-Region Compute Sweep (prekinite Rogue EC2/EKS/SageMaker/Lambda v vseh 30+ regijah)"]
    E --> I["Očistite zgodovino Git prek 'git filter-repo' + počistite predpomnjene poglede GitHub Commit SHA"]
    F --> I
    G --> I
    H --> J{"Ali so avtomatizirani roboti nabrali račun v oblaku za 1000 do 100.000 $+?"}
    J -->|"DA"| K["Odprite primer podpore pri obračunavanju AWS/GCP -> Predložite varnostno revizijo po sanaciji + zahtevajte enkratno odpuščanje goljufije/uhajanja"]
    J -->|"št"| I

1. del: Od ponudnika do ponudnika Kill-Switch & Forenzična matrika (First 5 Minutes)

Uporabite to referenčno tabelo, da poiščete natančen gumb za preklic, samodejno vedenje skrivnega skeniranja GitHub in skriti vektor obstojnosti za vašo razkrito poverilnico.

Vrsta poverilnice in vzorec predpone Ali ga GitHub Secret Scanning samodejno prekliče? Takojšnji 30-sekundni preklopni postopek Vektor obstojnosti skritega napadalca za preverjanje (Critical.) Kje revidirati nepooblaščene klice API-ja
1. Spletne storitve Amazon (AKIA... Ključ IAM / ASIA... žeton STS) NI samodejnega preklica: GitHub obvesti AWS, ki odpre avtomatiziran primer podpore AWS (Compromised Key Quarantine) in prilaga AWSCompromisedKeyQuarantineV2, pogosto 3 to 15 minutes potem so roboti že napadli. 1. IAM -> Users -> [User] -> Security credentials -> Deactivate & Delete
2. Dodajte pravilnik v vrstici: Effect: Deny, Action: "*", Resource: "*" (kills active STS tokens).
1. Začasno STS žetoni (ASIA...)
2. Na novo ustvarjeni IAM uporabniki/ključi za dostop
3. Backdoor IAM Roles z zunanjim Principal politike zaupanja
4. EC2 Predloge za zagon / skupine za samodejno skaliranje, ki ponovno ustvarijo prekinjene rudarje.
AWS CloudTrail -> Zgodovina dogodkov (Filter by User name = compromised IAM user oz Event source = sts.amazonaws.com / iam.amazonaws.com).
2. Stripe Live Secret/Restricted Key (sk_live_... / rk_live_...) DA (pogosto): Stripe sodeluje s skrivnim skeniranjem GitHub za samodejno predvajanje sk_live_ ključi zaznani na main, VENDAR ključi, skriti v nizih base64, Gists ali nestandardnih datotekah, lahko zdrsnejo mimo samodejnega preklica. 1. Pojdi na dashboard.stripe.com/apikeys
2. Kliknite ... -> Roll key
3. Izberite Block old key immediately (Now) (never select a 12h/24h grace period.).
Zlonamerne končne točke Webhook: Napadalci uporabljajo vaše razkrite podatke sk_live_ ključ za klic POST /v1/webhook_endpoints, registracijo lastnega URL-ja strežnika za tiho prejemanje kopij vseh prihodnjih nakupov strank in dogodkov kartice, tudi potem, ko zavrtite ključ API. Nadzorna plošča Stripe -> Razvijalci -> Dnevniki (filter by IP address and HTTP method POST/DELETE) + Razvijalci -> Webhooks (delete any unrecognized URLs).
3. Račun Google Cloud Service JSON ("private_key_id", AIza... API ključ) Delno: GCP opozori lastnika projekta (and optionally disables keys if Organization Policy is enabled), vendar med pošiljanjem e-poštnega opozorila ključ pogosto pusti aktiven. 1. GCP Console -> IAM & Admin -> Service Accounts
2. Kliknite račun storitve -> zavihek Ključi -> Izbriši razkriti ID ključa.
3. Začasno onemogočite celoten račun storitve.
1. Novi Ključi storitvenega računa, ustvarjeni s ključem, ki je ušel v javnost
2. Primerki GPE Compute Engine (A100/H100/T4) se je pojavilo v tujih conah
3. Spremenjene veze pravilnika IAM projekta (roles/owner oz roles/editor).
Dnevniki revizije oblaka GCP (Logs Explorer) z uporabo poizvedbe:
protoPayload.authenticationInfo.principalEmail="<service-account-email>"
4. OpenAI (sk-proj-...), Antropično (sk-ant-...), & HuggingFace (hf_...) OpenAI / Anthropic: Sodelujte z GitHubom za samodejni preklic standardnih potiskanja navadnega besedila (usually within 30 to 120 seconds), med katerim lahko boti sprožijo na tisoče vzporednih gpt-4o / claude-3-5-sonnet zahteve. 1. Izbrišite ključ platform.openai.com/api-keys oz console.anthropic.com/settings/keys
2. Nižja mesečna omejitev porabe (Hard Cap) v nastavitvah obračunavanja, da zaustavite vzporedne tokove med letom.
Skrbniški ključi organizacije (sk-admin-...): Če je ključ OpenAI Admin API ušel, lahko bot programsko pokliče POST /v1/organization/admin_api_keys da kujete popolnoma nove projektne ključe API, preden prekličete prvega. Revizija vseh ključev v organizaciji. Nadzorna plošča OpenAI / Antropična uporaba (check activity by API key and model tier).
5. Žeton osebnega dostopa GitHub (ghp_... / github_pat_...) ali žeton NPM (npm_...) DA (Instant): GitHub samodejno prekliče vse ghp_ oz github_pat_ žeton je v delčku sekunde potisnjen v javno skladišče GitHub. Če je potisnjen na gostitelja, ki ni GitHub (GitLab, Bitbucket, Pastebin, or Slack), ročno prekličite ob github.com/settings/tokens (or npmjs.com -> Access Tokens). Vbrizgavanje zlonamerne programske opreme v dobavno verigo: Napadalec z vašim ghp_ oz npm_ žeton bo nemudoma potisnil zlonamerno zakulisno objavo v vaš zasebni repozitorij, dodajte prevarant Deploy Key / GitHub Actions Workflow (pull_request_target), ali pa objavite trojansko različico svojega paketa NPM. Nastavitve GitHub -> Varnostni dnevnik (audit repo.create, hook.create, org.add_member, and oauth_authorization).

2. del: Poglobljeni potop: Kako izgnati napadalca iz vašega računa AWS (The 4-Step Cloud Eviction Protocol)

Ker je ušlo AWS poverilnice nosijo največji radij finančne eksplozije (up to $50,000+ per day in EC2/SageMaker/Bedrock bills), morate izvesti vse štiri spodnje korake, kadar koli AKIA... oz ASIA... ključ zadene javno skladišče:

+-----------------------------------------------------------------------------+
|     ANATOMY OF A 60-SECOND AUTOMATED AWS GITHUB SCRAPER BOT ATTACK          |
+-----------------------------------------------------------------------------+
|                                                                             |
|  [ SEC 00 ] Developer runs 'git push origin main' with .env (AKIA...)       |
|       |                                                                     |
|  [ SEC 04 ] Bot scrapes GitHub Events API Firehose -> Extracts AKIA key     |
|       |                                                                     |
|  [ SEC 06 ] Bot calls 'sts:GetCallerIdentity' & 'sts:GetSessionToken'       |
|       |     (Mints temporary ASIA... token that survives AKIA deletion.)    |
|       v                                                                     |
|  +----+------------------------------------------------------------------+  |
|  | [ SEC 15 TO 90: PARALLEL MULTI-REGION EXPLOITATION ]                  |  |
|  |  1. Persistence: Calls 'iam:CreateUser' / 'iam:CreateAccessKey'       |  |
|  |     (Creates hidden user 'aws-support-backup' with AdministratorAccess)|  |
|  |  2. Compute Abuse: Launches Auto-Scaling Groups of c6i.32xlarge /     |  |
|  |     g5.48xlarge in 12 regions + AWS Bedrock / SageMaker LLM endpoints |  |
|  |  3. Spam Abuse: Calls 'ses:PutAccountSendingAttributes' (50k emails)  |  |
|  |  4. Data Exfiltration: Lists & downloads S3 buckets / RDS snapshots   |  |
|  +-----------------------------------------------------------------------+  |
+-----------------------------------------------------------------------------+

1. korak: Ubijte statično AKIA Ključ IN vse kovano ASIA Sejni žetoni

Brisanje AKIA ključ v konzoli AWS ne začasno razveljavi STS poverilnice že izdal sts:GetSessionToken. Takoj ubiti vse prek AWS CLI (using a separate clean admin profile):

# 1. Delete the compromised Access Key immediately
aws iam delete-access-key --user-name CompromisedUser --access-key-id AKIAIOSFODNN7EXAMPLE

# 2. Attach an explicit 'Deny All' inline policy to the IAM User to immediately
#    invalidate any STS tokens minted by that user AND block all further actions:
aws iam put-user-policy --user-name CompromisedUser --policy-name EmergencyKillSwitch \
  --policy-document '{
    "Version": "2012-10-17",
    "Statement": [{
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*"
    }]
  }'

2. korak: Poiščite uporabnike, vloge in ključe za dostop IAM za stranskimi vrati v CloudTrail

Zaženite te ukaze AWS CLI, da preverite, ali je bot med oknom ustvaril skritega zakulisnega uporabnika IAM ali priložil sekundarni dostopni ključ enemu od vaših obstoječih računov zaposlenih:

# List all IAM users created recently across the account
aws iam list-users --query 'Users[?CreateDate>=`2026-10-30`].[UserName,CreateDate]' --output table

# Audit CloudTrail for every API call made by the compromised user in the last 24 hours
aws cloudtrail lookup-events \
  --lookup-attributes AttributeKey=Username,AttributeValue=CompromisedUser \
  --max-results 50 \
  --query 'Events[].[EventTime,EventName,EventSource]' --output table
Poglej posebej: CreateUser, CreateAccessKey, CreateLoginProfile (gives the bot an AWS Console password), AttachUserPolicy, CreateRole, UpdateAssumeRolePolicy in ImportKeyPair. Takoj izbrišite vsakega nepooblaščenega uporabnika, vlogo in par ključev.

3. korak: Pometite vse 30+ Regije AWS za primerke Rogue EC2, skupine za samodejno skaliranje in opravila Bedrock/SageMaker

Zakaj žrtve še vedno prejemajo a $12,000 račun ob koncu meseca, potem ko so "preverili nadzorno ploščo EC2 in videli nič primerov"? Ker konzola AWS prikazuje samo eno regijo naenkrat (e.g., us-east-1), medtem ko se je bot zavrtel 20 primerki v ap-south-1 (Mumbai), eu-north-1 (Stockholm), in sa-east-1 (Sao Paulo) in jih skrila znotraj EC2 Auto Scaling Groups (ASGs) tako da, če primerek EC2 prekinete ročno, skupina za samodejno skaliranje zažene nadomestno 30 seconds pozneje.

Zaženite ta enovrstični bash za več regij, da prikažete vse delujoče ali čakajoče primerke EC2 v vsaki aktivni regiji AWS v 10 seconds:

for region in $(aws ec2 describe-regions --query 'Regions[].RegionName' --output text); do
  echo "=== Checking Region: $region ==="
  aws ec2 describe-instances --region "$region" \
    --filters "Name=instance-state-name,Values=running,pending,stopped" \
    --query 'Reservations[].Instances[].[InstanceId,InstanceType,State.Name,LaunchTime]' \
    --output table
done
- Pred prekinitvijo lažnih instanc EC2: Preverite EC2 -> Auto Scaling Groups (and EC2 Spot Fleet Requests / ECS Clusters / EKS Node Groups / SageMaker Notebook & Training Jobs) v vsaki prizadeti regiji in NAJPREJ izbrišite skupino za samodejno skaliranje/točkovno zahtevo, nato zaključite primerke. - Preverite AWS Bedrock (Model Invocation Logging) in Amazon SES: Sodobni roboti za zbiranje poverilnic zdaj takoj prikličejo AWS Bedrock (Claude 3.5 Sonnet / Llama 3) uporaba vaših ukradenih poverilnic AWS za nadaljnjo prodajo žetonov LLM (which does not show up under EC2 at all). Preverite AWS Cost Explorer (Group by: Service in Group by: Region) za odkrivanje kakršnih koli nenormalnih storitev.


3. del: Brisanje skrivnosti iz zgodovine Git (git-filter-repo) & Čiščenje GitHubovega predpomnilnika za skrite objave

Once the credential is dead at the provider level, you must remove the secret string from your repository's .git commit history so neither coworkers nor future scrapers can see it (and so GitHub's Push Protection stops blocking your branches).

1. Why git rm .env + git commit Does NOT Remove the Secret From Git

Running git rm .env && git commit -m "remove env" only removes the file from the latest commit (HEAD); the plaintext secret remains permanently readable inside the parent commit (the parent commit) to anyone who clicks "Commits" on GitHub.

2. Rewrite the Repository History Cleanly Using git-filter-repo

  1. If only the very last commit (HEAD) contained the secret (and nobody else has pulled it yet):
    # Remove the sensitive file from the staging index while keeping it on your local disk
    git rm --cached .env
    echo ".env" >> .gitignore
    git add .gitignore
    git commit --amend --no-edit
    git push --force-with-lease origin main
    
  2. If the secret is buried several commits back in your history (or inside a code file you want to keep): Use git-filter-repo (the official, fast replacement recommended by Git and GitHub instead of the deprecated git filter-branch):
    # Option A: Completely purge a file (.env) from every commit in history
    git filter-repo --path .env --invert-paths --force
    
    # Option B: Replace a specific secret string with '***REMOVED***' across all files in history
    echo "sk_live_51NzExampleSecretKey12345==>***REMOVED***" > expressions.txt
    git filter-repo --replace-text expressions.txt --force
    
    # Force-push the rewritten history to GitHub across all branches and tags
    git push origin --force --all
    git push origin --force --tags
    

3. The Hidden GitHub Cache Trap (Dangling Commit SHAs)

Even after you run git filter-repo in git push --force, GitHub's web servers still keep the old, unreferenced ("dangling") commit SHA alive and publicly accessible at https://github.com/<owner>/<repo>/commit/<old-40-char-sha> (and in any forks or Pull Requests) until garbage collection runs. - How to Purge a Cached Commit SHA on GitHub Immediately: 1. Copy the full 40-character commit SHA of the leaked commit before you rewrote history. 2. Odpri https://support.github.com/contact -> zahtevajte »Odstrani občutljive podatke / Počisti predpomnjene poglede za nedosegljivo objavo SHA« v repozitoriju owner/repo in podajte natančen SHA za potrditev (or use the GitHub Support portal's automated cache-purge workflow).


4. del: Kako pridobiti a $5,000 to $100,000+ AWS ali GCP Bot Bill Opuščen (The Courtesy Forgiveness Appeal)

Kaj pa, če pritisnete .env datoteko v petek popoldne, preveril svojo e-pošto šele v ponedeljek zjutraj in se zbudil v $28,400.00 Račun za AWS ali Google Cloud iz botov za kripto-rudarjenje ali LLM-proxy?

Do NOT panic, and do NOT cancel your credit card or file a bank chargeback yet. Both Amazon Web Services (AWS) in Google Cloud Platform (GCP) imeti vzpostavljeno notranjo Prilagoditev obračunavanja za enkratno nenamerno uhajanje poverilnic/Politiko uslužbenskega kredita za posamezne razvijalce, študente in zagonska podjetja, pod pogojem, da izpolnite 100% njihovega obveznega kontrolnega seznama za odpravo varnosti preden njihova ekipa za pregled obračunavanja oceni vašo pritožbo.

The 5-Step AWS / GCP Bill Waiver Protocol (90%+ Success Rate for First-Time Leaks)

  1. Complete Every Security Remediation Step First (AWS Will Reject Your Waiver Until the Account Is Clean):
    • Delete the compromised IAM Access Key (and the IAM User if possible).
    • Terminate every unauthorized EC2 instance, Auto Scaling Group, EBS volume, Elastic IP, RDS instance, and S3 bucket across all regions (verify via AWS Cost Explorer and AWS Billing -> Bills -> Charges by Region that daily accrual has dropped back to $0.00).
    • Enable Hardware or Authenticator App MFA (Multi-Factor Authentication) on your AWS Root Account and every IAM user.
  2. Open a Support Case Under "Account and Billing" (Free for All AWS/GCP Tiers, No Paid Support Plan Required):
    • Pojdi na console.aws.amazon.com/support/home -> Create case -> Account and billing -> Service: Billing -> Category: Dispute a Charge / Compromised Account.
  3. Predložite ta natančen povzetek dejanskih popravkov in težav:
    • Potrdite časovnico in vzrok: Jasno navedite, kdaj je bil ključ pomotoma razkrit na GitHubu (e.g., "October 30 at 22:14 UTC") and when it was revoked ("October 31 at 09:05 UTC").
    • Itemize the Unauthorized Charges by Region & Service: List the exact dollar amounts of the fraudulent bot activity vs. your normal historical monthly bill (e.g., "My normal monthly AWS bill for the past 8 months is $14.50/month in us-east-1; the unauthorized charges total $18,420.12 across ap-east-1, eu-north-1, and sa-east-1 EC2/Bedrock usage").
    • Confirm 100% Remediation: Bullet-point the exact steps you have already completed (1. Deleted IAM key AKIA...; 2. Terminated all unauthorized resources across all regions; 3. Audited CloudTrail for backdoor users; 4. Enabled Root & IAM MFA; 5. Configured AWS Budgets alerts).
    • Politely Request a One-Time Courtesy Billing Adjustment: Explain that you are an individual developer / student / early-stage startup, that paying an $18,420 unauthorized bot bill would cause severe financial hardship, and ask for a one-time courtesy billing credit/waiver for the fraudulent usage.
  4. Temporarily Swap or Cap Your Linked Payment Card If Auto-Billing Is Imminent:
    • While your AWS Billing Support case is under review (which usually takes 5 to 15 business days while the AWS Security and Billing Service Teams verify that all rogue resources are terminated), contact AWS Support inside the ticket and ask them to place a temporary billing hold (defer auto-charge) on the disputed invoice so it does not overdraft your bank account while the credit adjustment is being processed.

Warning

Why You Must NEVER Hardcode Keys in Client-Side Code (NEXT_PUBLIC_, VITE_, REACT_APP_, Mobile Apps, or Chrome Extensions). Even if your GitHub repository is 100% Zasebno, dodajanje skrivnega ključa API (like an OpenAI, Stripe secret, or AWS key) znotraj spremenljivke čelnega okolja s predpono NEXT_PUBLIC_, VITE_ ali REACT_APP_ združi ta ključ navadnega besedila neposredno v javni JavaScript .js datoteke, prikazane spletnemu brskalniku vsakega obiskovalca (where bots scrape it directly from your live production website in seconds). Samo javni/objavljivi ključi (like Stripe pk_live_... ali konfiguracija odjemalca Firebase, omejena z napotiteljem HTTP / varnostjo na ravni vrstice), se lahko kdaj dotakne kode čelnega vmesnika.

Tip

Namesti gitleaks oz trufflehog kot lokalna kljuka pred potrditvijo v 60 sekundah (So git Refuses to Commit a Secret Ever Again). Da bi bilo fizično nemogoče nenamerno zagrešiti .env datoteko ali ključ API znova na prenosnem računalniku, namestite gitleaks (brew install gitleaks) in dodajte a .pre-commit-config.yaml kavelj (or turn on GitHub's free **"Push Protection for yourself"** at **github.com/settings/security_analysis**). Ko je omogočena Push Protection, GitHubovi strežniki pregledajo vaše git push v tranzitu in zavrni potisni signal, preden sploh pristane v repozitoriju, kadar koli je zaznan prepoznaven vzorec ključa.

(Za povezane varnostne incidente razvijalcev in dela na daljavo glejte Nenamerni padec produkcijske baze podatkov, git force-push, skrivnostno uhajanje in triaža incidentov, Produkcijska baza podatkov je padla ali je vedro S3 izbrisano brez nedavne varnostne kopije, Nenamerno poslana po e-pošti zaupna plačilna lista, osebni podatki stranke ali preglednica HIPAA, in Varnost dela na daljavo v sili in zasebnost podatkov.)


Regionalni organi za poročanje o kršitvah podatkov in varnosti v oblaku

Regija/država Zakon o vdorih v oblak in obveščanju o kršitvah podatkov Uradni urad za kibernetske incidente in regulativni organ Ko razkriti ključ GitHub zahteva obvezno regulativno poročanje
Združene države Zaščitno pravilo FTC (16 CFR Part 314), Pravilo SEC o kibernetski varnosti (Form 8-K Item 1.05), HIPAA in 50 državnih zakonov o obveščanju o kršitvah podatkov CISA (cisa.gov/report / 1-844-SAY-CISA), FBI IC3 (ic3.gov), HHS OCR in Državni državni tožilci Če dnevniki CloudTrail ali Stripe kažejo, da je zunanji IP uporabil vaš razkriti ključ GetObject ali izvoz nešifrirane stranke PII, številke socialnega zavarovanja ali evidenco plačil (rather than purely mining crypto on empty EC2 instances), veljajo državni zakoni o obvestilih o kršitvah.
Evropska unija (EEA) GDPR (Articles 33 & 34) & Direktiva NIS2 (Directive (EU) 2022/2555) Nacionalni organ za varstvo podatkov (CNIL, BfDI, DPC) & Nacionalni CSIRT (ENISA) Strogo 72-Hour ura (GDPR Art. 33): Če je razkrita poverilnica imela dostop za branje do osebnih podatkov EU in ne morete forenzično izključiti nepooblaščenega dostopa v CloudTrail/VPC Flow Logs, o tem obvestite svoj nadzorni organ v 72 hours.
Združeno kraljestvo UK GDPR & Zakon o varstvu podatkov 2018 Urad Informacijskega pooblaščenca (ICO: 0303 123 1113) & NCSC (ncsc.gov.uk) Prijavite nepooblaščen dostop do osebnih podatkov UK ICO znotraj 72 hours z uporabo spletnega portala ICO za oceno kršitev; dokumentirajte svojo rotacijo ključev in korake v karanteni IAM.
Kanada, Avstralija in Nova Zelandija Kanada PIPEDA
Avstralija Privacy Act 1988 (NDB Scheme)
Nova Zelandija Privacy Act 2020
OPC (Canada), OAIC & ACSC (Australia: 1300 CYBER1), & OPC (New Zealand) Lahko se prijavi, če izpostavljenost poverilnice povzroči resnično tveganje za veliko škodo (RROSH v Kanadi) ali primerne kršitve podatkov (Australia OAIC), ki vključuje osebne podatke.

Pogosta vprašanja

Če bi ugotovil, da sem potisnil .env datoteko v javni repo GitHub in 2 minuti pozneje naredil repo zaseben, ali moram še vedno rotirati svoje ključe?

Da, 100 odstotkov ključev v tej datoteki je treba šteti za ogrožene in takoj preklicati. Avtomatizirani roboti za zbiranje poverilnic ne čakajo, da Google indeksira vaše skladišče; neposredno se naročijo na javnost GitHub v realnem času `Events API` gasilska cev (`and GH Archive`), ki oddaja vsak javni `PushEvent` globalno v 1 do 3 sekundah od vašega `git push`. Ko ste dve minuti pozneje kliknili »Nastavitve -> Spremeni vidnost repozitorija -> Naredi zasebno«, je na ducate avtomatiziranih botov za strgalo že preneslo vašo commit diff in vaše poverilnice AWS, Stripe, OpenAI in baze podatkov postavilo v čakalno vrsto za izkoriščanje.

Zakaj so roboti še naprej zaganjali primerke EC2 v mojem računu AWS, tudi potem, ko sem izbrisal razkrito AKIA ključ za dostop?

Brisanje statike `AKIA...` dostopni ključ v AWS IAM samo deaktivira določen stalni ključ; ne razveljavlja začasne `ASIA...` Storitev varnostnih žetonov (`STS`) session tokens that the attacker already generated using `sts:GetSessionToken` oz `sts:AssumeRole` v prvih nekaj sekundah po strganju ključa (`which remain valid for up to 12 to 36 hours`). Poleg tega avtomatizirani napadalni skripti AWS redno kličejo `iam:CreateUser` in `iam:CreateAccessKey` že v prvi sekundi dostopa, da ustvarijo drugi skriti skrbniški račun za zakulisje. Če želite popolnoma zaustaviti aktivni vdor v AWS, morate izbrisati `AKIA` ključ, priložite izrecno `Deny *` vgrajeni pravilnik za ogroženega uporabnika IAM (`which immediately invalidates all minted STS tokens`) in nadzira CloudTrail za vse novo ustvarjene uporabnike ali vloge IAM.

Will AWS or Google Cloud forgive a massive $10,000+ račun, če so hekerji ukradli moj API ključ iz GitHuba in rudarili kripto?

Pri veliki večini prvih nenamernih uhajanj, da, pod pogojem, da ukrepate hitro, v celoti sodelujete z njihovo varnostno skupino in ne prezrete računa. Tako AWS kot Google Cloud imata notranjo politiko prilagoditve enkratnega zaračunavanja za razvijalce in mala podjetja, ki jih prizadenejo skoki uhajanja nepooblaščenih poverilnic. Preden zahtevate opustitev računa pod podporo za "Račun in obračunavanje", morate najprej dokazati, da je uhajanje 100-odstotno zaprto: preklicati izpostavljene ključe IAM, prekiniti vse lažne računalniške instance in skupine za samodejno skaliranje v vseh 30+ globalnih regijah, omogočiti večfaktorsko avtentikacijo (`MFA`) on your root account, and set up AWS Budgets cost alerts.

Why does git rm .env ne odstranim svojega skrivnega ključa iz GitHuba?

Git is an immutable version-control ledger: when you run `git rm .env` and push a new commit, Git only records that the file is absent in the newest snapshot (`HEAD`), while keeping the full plaintext contents of `.env` permanently stored inside the previous commit (`the parent commit`) in your repository's commit history. Even if you rewrite your history with `git filter-repo` and force-push, anyone can still read the secret if you haven't revoked it at the provider console. Always revoke and rotate the secret key in your cloud provider's dashboard first, and then use `git filter-repo` to scrub the dead string from your commit history.

Sorodni vodniki

Viri in uradna navodila

  • Amazon Web Services (AWS Security Incident Response Guide & AWS Knowledge Center: "What should I do if I notice unauthorized activity or exposed IAM access keys?"): AWSCompromisedKeyQuarantineV2 Policy Behavior, Invalidation of Temporary STS Session Tokens (RevokeOldSessions), and Multi-Region Resource Auditing.
  • GitHub Documentation (GitHub Secret Scanning, Push Protection, & "Removing sensitive data from a repository" using git-filter-repo): Partner Auto-Revocation Program (Stripe, AWS, OpenAI, NPM), git-filter-repo History Rewriting, and Purging Unreachable Cached Commit SHAs.
  • Stripe Inc. (Stripe Developer Security Guide: API Key Rotation & Compromised Key Incident Triage): Immediate sk_live_ Key Expiration, Auditing /v1/events in /v1/webhook_endpoints, and Restricting Keys via rk_live_ Obseg.
  • NIST (Special Publication 800-61 Rev. 2 / Rev. 3: Computer Security Incident Handling Guide) & OWASP (Secrets Management Cheat Sheet): Credential Containment, Ephemeral OIDC Workload Identity Federation (replacing static CI/CD keys) in tajno skeniranje pred odobritvijo.