API ključ, AWS Secret ili Stripe Live Token posvećen javnom GitHub repo: Automatsko scraping robota za 60 sekundi, trenutna rotacija ključa i prekidač za ukidanje naplate¶
Čim potrčiš git push na javno GitHub, GitLab ili Bitbucket spremište (or temporarily flip a private repository to "Public" for even 10 seconds) dok je fajl, .env konfiguracija, Jupyter notebook (.ipynb), ili starija istorija Git urezivanja sadrži tajni ključ už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), globalna mreža automatskih robota za prikupljanje akreditiva presreće tu tajnu za 2 do 60 sekundi. Zato što je GitHub javna Events API, GH Archive, i webhook firehoses u realnom vremenu strimuju svaku javnost PushEvent globalno, zlonamjerni botovi scraper analiziraju vaš diff s regularnim izrazima i počinju izvršavati automatizirane naredbe u oblaku prije nego što uopće možete upisati git revert.
unutar 90 seconds od an AWS ili GCP tajna pogađajući javni repo, automatizirani botnet pokreću GPU/CPU instance maksimalne veličine (such as p4d.24xlarge or c6i.32xlarge preko opskurnih regija poput ap-east-1 Hong Kong, me-south-1 Bahrein, ili sa-east-1 Sao Paulo) za rudarenje Monera (XMR), zatražite AWS Simple Email Service (SES) kvota se povećava za uništavanje phishing neželjene pošte ili kloniranje vašeg privatnog S3 kante i RDS baze podataka, generiranje $5,000 to $80,000+ u računima za računanje u oblaku preko noći. Slično, procurilo je OpenAI ili Anthropic API ključ je odmah upakovan u podzemna "reverse-proxy" LLM tržišta koja crpe hiljade dolara u token kreditima u minuti, dok je procurila Stripe živi tajni ključ (sk_live_...) daje napadačima potpuni programski pristup za čitanje/pisanje za izdavanje lažnih povraćaja novca, izvoz kupaca PII, ili pokrenuti neovlaštene Connect isplate. Ako napadač aktivno iznuđuje vašu organizaciju nakon što je eksfiltrirao baze podataka klijenata vašim ključem koji je procurio, konsultujte se s lokalnim službama za provođenje zakona i telefonske linije za sajber incidente putem naše brojevi za hitne slučajeve imenik odmah i pregledajte naše povezane vodiče slučajno ispuštanje proizvodne baze podataka, git force-push i tajna trijaža curenja, proizvodna baza podataka je ispuštena ili S3 bucket je izbrisan bez nedavne sigurnosne kopije, i sigurnost rada na daljinu i privatnost podataka u hitnim slučajevima.
Uradi ovo sada¶
- NE gubite prvih 60 sekundi trčanja
git rm .enviligit push --force: IDI DIREKTNO NA KONZOLU PROVAJDERA (AWS IAM,Stripe,OpenAI,GCP) I OPOZOVI / DEAKTIVIRAJTE KLJUČ IN< 30 SECONDS. Brisanje fajla u novom Git urezivanju (or even making the GitHub repository Private) ne čini ništa da zaustavi botove koji su već ostrugali vaš ključ iz vatrogasnog crijeva GitHub događaja prije 10 sekundi. Sam ključ se prvo mora ubiti na izvoru. - Ako an
AWSključ (AKIA...iliASIA...) procurilo: OtvorenoAWS IAM -> Users -> Security credentialsi kliknite na Deaktiviraj / Izbriši na pristupnom ključu odmah, a zatim priložiteAWSCompromisedKeyQuarantineV2(or a blanketodbiti *inline policy) IAM korisniku i povećajte korisnikovoRevokeOldSessionspolitika da se ubije bilo koji privremeniSTStokeni koje je napadač već iskovao (see the exact STS bypass trap below). - Ako a
StripeŽivi tajni ključ (sk_live_...ilirk_live_...) procurilo: Idi nadashboard.stripe.com/apikeys, kliknite...-> Roll key, i postavite istek starog ključa na "Sada (Immediately)" (NOT "in 24 hours"). Immediately checkStripe Dashboard -> LogsiBalance -> Payouts / Refundsfor unauthorized API calls. - Ako an
OpenAI,Anthropic,Google Gemini, iliSendGrid / Twiliokey leaked: Delete the API key in the provider dashboard immediately and set a Hard Monthly Spend Limit ($0or your normal cap) in the Billing settings to cut off in-flight streaming requests. - Sweep ALL Cloud Regions (
especially disabled/opt-in regions) for rogue EC2 instances, Lambda functions, ECS tasks, S3 buckets, and backdoor IAM users created by the bot during the 2-minute exposure window. Attackers specifically launch crypto-mining instances in regions you never click on in the console (like Stockholm eu-north-1, Osaka ap-northeast-3, or Mumbai ap-south-1) and create a second hidden IAM user (or SSH key pair) so they can stay inside your account after you delete the leaked key. - Only AFTER the secret is revoked and backdoor IAM accounts are purged, scrub the commit from Git (
using git-filter-repo) AND contact GitHub Support (or remove cached PR/commit views) to purge dangling commit SHA caches, then file an AWS / GCP Accidental Leak Billing Waiver Request if bots ran up a massive cloud bill.
Danger
Why Deleting the Leaked AKIA Key in AWS IAM Is NOT Enough (The STS GetSessionToken Persistence Trap). Within 5 seconds of scraping your static AKIA... AWS IAM access key from GitHub, sophisticated automated botnets do not just launch EC2 instances with your AKIA key; their very first API call is sts:GetSessionToken ili sts:AssumeRole, which mints a temporary ASIA... Security Token Service (STS) session token valid for up to 12 to 36 hours. Even after you delete the original AKIA... access key in the IAM console, any temporary ASIA... STS tokens minted before that moment remain 100% active and valid unless you also attach an explicit Deny All inline policy (with a Condition checking aws:TokenIssueTime < CurrentUTC) to the compromised IAM User and every Role it could assume.
Decision tree: 60-Second Emergency Response by Leaked Secret Type¶
Follow this incident containment flowchart to kill the compromised credential, sever attacker persistence, and reverse runaway cloud billing.
flowchart TD
A["Live Secret Committed to Public GitHub / GitLab Repo (.env, Source Code, or git History)"] --> B["SECOND 0 TO 30: DO NOT Run git rm First. Open Cloud/API Provider Console & REVOKE Key Immediately"]
B --> C{"Which type of live credential was exposed?"}
C -->|"1. AWS Access Key (AKIA... / ASIA...)"| D["1. Deactivate/Delete Key in IAM 2. Attach Inline 'Deny All' Policy to User (Kills Minted STS Tokens) 3. Audit CloudTrail for Backdoor IAM Users"]
C -->|"2. Stripe Live Secret Key (sk_live_... / rk_live_...)"| E["1. Roll Key with Expiration = 'Immediately' 2. Check /v1/refunds, /v1/transfers & Webhook Endpoints 3. Assess Customer PII Exposure"]
C -->|"3. OpenAI (sk-proj-...), Anthropic (sk-ant-...), or Gemini Key"| F["1. Revoke Key in Developer Console 2. Lower Organization Hard Billing Cap to $0 Temporarily 3. Check Usage Logs for Token Drain"]
C -->|"4. Database URI (postgres://, mongodb+srv://) or Redis URL"| G["1. Rotate DB Password Immediately 2. Run pg_terminate_backend() / KILL to Drop Active Connections 3. Lock Down Security Group to VPC IPs Only"]
D --> H["Run Multi-Region Compute Sweep (Terminate Rogue EC2/EKS/SageMaker/Lambda in All 30+ Regions)"]
E --> I["Purge Git History via 'git filter-repo' + Clear GitHub Cached Commit SHA Views"]
F --> I
G --> I
H --> J{"Did automated bots rack up a $1,000 to $100,000+ cloud bill?"}
J -->|"DA"| K["Open AWS/GCP Billing Support Case -> Submit Post-Remediation Security Audit + Request One-Time Courtesy Fraud/Leak Bill Forgiveness"]
J -->|"NO"| I
Part 1: Provider-by-Provider Kill-Switch & Forensics Matrix (First 5 Minutes)¶
Use this reference table to locate the exact revocation button, automatic GitHub Secret Scanning behavior, and hidden persistence vector for your leaked credential.
| Credential Type & Prefix Pattern | Does GitHub Secret Scanning Auto-Revoke It? | Immediate 30-Second Kill-Switch Procedure | Hidden Attacker Persistence Vector to Check (Critical.) |
Where to Audit Unauthorized API Calls |
|---|---|---|---|---|
1. Amazon Web Services (AKIA... IAM Key / ASIA... STS Token) |
NO Auto-Revoke: GitHub notifies AWS, which opens an automated AWS Support Case (Compromised Key Quarantine) and attaches AWSCompromisedKeyQuarantineV2, često 3 to 15 minutes after bots have already attacked. |
1. IAM -> Users -> [User] -> Security credentials -> Deactivate & Delete2. Add Inline Policy: Effect: Deny, Action: "*", Resource: "*" (kills active STS tokens). |
1. Temporary STS tokens (ASIA...)2. Newly created IAM Users / Access Keys 3. Backdoor IAM Roles with external Principal trust policies4. EC2 Launch Templates / Auto Scaling Groups that respawn terminated miners. |
AWS CloudTrail -> Event history (Filter by User name = compromised IAM user ili Event source = sts.amazonaws.com / iam.amazonaws.com). |
2. Stripe Live Secret / Restricted Key (sk_live_... / rk_live_...) |
YES (Often): Stripe partners with GitHub Secret Scanning to auto-roll sk_live_ keys detected on main, BUT keys hidden inside base64 strings, Gists, or non-standard files can slip past auto-revocation. |
1. Go to dashboard.stripe.com/apikeys2. Click ... -> Roll key3. Select Block old key immediately (Now) (never select a 12h/24h grace period.). |
Malicious Webhook Endpoints: Attackers use your leaked sk_live_ key to call POST /v1/webhook_endpoints, registering their own server URL to silently receive copies of all future customer checkout and card events even after you roll the API key. |
Stripe Dashboard -> Developers -> Logs (filter by IP address and HTTP method POST/DELETE) + Developers -> Webhooks (delete any unrecognized URLs). |
3. Google Cloud Service Account JSON ("private_key_id", AIza... API Key) |
Partial: GCP alerts the project owner (and optionally disables keys if Organization Policy is enabled), but frequently leaves the key active while sending an email warning. |
1. GCP Console -> IAM & Admin -> Service Accounts2. Click the Service Account -> Keys tab -> Delete the leaked Key ID. 3. Disable the entire Service Account temporarily. |
1. New Service Account Keys generated by the leaked key 2. Compute Engine GPU instances ( A100/H100/T4) spun up in foreign zones3. Modified Project IAM Policy bindings ( roles/owner ili roles/editor). |
GCP Cloud Audit Logs (Logs Explorer) using query:protoPayload.authenticationInfo.principalEmail="<service-account-email>" |
4. OpenAI (sk-proj-...), Anthropic (sk-ant-...), & HuggingFace (hf_...) |
OpenAI / Anthropic: Udružite se s GitHub-om da automatski opozovete standardni otvoreni tekst (usually within 30 to 120 seconds), tokom kojeg botovi i dalje mogu pucati na hiljade paralela gpt-4o / claude-3-5-sonnet zahtjevi. |
1. Izbrišite ključ platform.openai.com/api-keys ili console.anthropic.com/settings/keys2. Donji mjesečni limit potrošnje ( Hard Cap) u postavkama naplate za zaustavljanje paralelnih tokova tokom leta. |
Admin ključevi organizacije (sk-admin-...): Ako je OpenAI Admin API ključ procurio, bot može programski pozvati POST /v1/organization/admin_api_keys da kujete potpuno nove ključeve za API projekta prije nego što opozovete prvi. Revizija svih ključeva u organizaciji. |
OpenAI / Antropic Usage Dashboard (check activity by API key and model tier). |
5. GitHub token za osobni pristup (ghp_... / github_pat_...) ili NPM token (npm_...) |
DA (Instant): GitHub automatski opoziva sve ghp_ ili github_pat_ token u djeliću sekunde se gura u javno GitHub spremište. |
Ako se proslijedi na host koji nije GitHub (GitLab, Bitbucket, Pastebin, or Slack), opozovite ručno u github.com/settings/tokens (or npmjs.com -> Access Tokens). |
Ubrizgavanje zlonamjernog softvera u lancu snabdijevanja: Napadač s vašim ghp_ ili npm_ token će odmah gurnuti zlonamjerno backdoor urezivanje u vaše privatne repozitorije, dodati lažni Deploy Key / GitHub Actions Workflow (pull_request_target), ili objavite trojaniziranu verziju vašeg NPM paketa. |
Postavke GitHuba -> Sigurnosni dnevnik (audit repo.create, hook.create, org.add_member, and oauth_authorization). |
Dio 2: Duboko zaron: Kako izbaciti napadača sa vašeg AWS računa (The 4-Step Cloud Eviction Protocol)¶
Jer procurilo AWS vjerodajnice nose najveći radijus finansijske eksplozije (up to $50,000+ per day in EC2/SageMaker/Bedrock bills), morate izvršiti sva četiri koraka u nastavku kad god je an AKIA... ili ASIA... ključ pogađa javno spremište:
+-----------------------------------------------------------------------------+
| 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 | |
| +-----------------------------------------------------------------------+ |
+-----------------------------------------------------------------------------+
Korak 1: Ubijte oba statika AKIA Ključ i sve iskovano ASIA Tokeni sesije¶
Brisanje AKIA ključ u AWS konzoli ne poništava privremeni STS akreditive koje je već izdao sts:GetSessionToken. Da sve odmah ubijete preko 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": "*"
}]
}'
Korak 2: Pronađi Backdoor IAM korisnike, uloge i pristupne ključeve u CloudTrail-u¶
Pokrenite ove AWS CLI komande da provjerite da li je bot kreirao skrivenog backdoor IAM korisnika ili je priložio sekundarni pristupni ključ jednom od vaših postojećih naloga zaposlenika tokom prozora:
# 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
CreateUser, CreateAccessKey, CreateLoginProfile (gives the bot an AWS Console password), AttachUserPolicy, CreateRole, UpdateAssumeRolePolicy i ImportKeyPair. Odmah izbrišite sve neovlaštene korisnike, uloge i parove ključeva.
Korak 3: Počisti sve 30+ AWS regije za Rogue EC2 instance, grupe za automatsko skaliranje i poslove Bedrock/SageMaker¶
Zašto žrtve još uvijek primaju a $12,000 račun na kraju mjeseca nakon što su "provjerili EC2 kontrolnu ploču i vidjeli nula slučajeva"? Zato što AWS konzola prikazuje samo jedan po jedan region (e.g., us-east-1), dok se bot okrenuo 20 primjeri u ap-south-1 (Mumbai), eu-north-1 (Stockholm), i sa-east-1 (Sao Paulo), i sakrio ih unutar EC2 Auto Scaling Groups (ASGs) tako da ako ručno prekinete instancu EC2, grupa za automatsko skaliranje pokreće zamjenu 30 seconds later.
Pokrenite ovaj multi-regionalni bash jedan redak da navedete sve pokrenute ili na čekanju EC2 instance u svakoj aktivnoj AWS regiji u 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
EC2 -> Auto Scaling Groups (and EC2 Spot Fleet Requests / ECS Clusters / EKS Node Groups / SageMaker Notebook & Training Jobs) u svakoj pogođenoj regiji i PRVO izbrišite grupu za automatsko skaliranje / zahtjev za spot, a zatim ukinite instance.
- Provjerite AWS Bedrock (Model Invocation Logging) i Amazon SES: Moderni botovi za prikupljanje akreditiva sada odmah pokreću AWS Bedrock (Claude 3.5 Sonnet / Llama 3) koristeći vaše ukradene AWS akreditive za preprodaju LLM tokena (which does not show up under EC2 at all). Provjerite AWS Cost Explorer (Group by: Service i Group by: Region) da biste uočili bilo kakav nenormalan skok servisa.
Dio 3: Čišćenje tajne iz Git historije (git-filter-repo) & Čišćenje GitHubovog skrivenog keša urezivanja¶
Nakon što je vjerodajnica mrtva na nivou provajdera, morate ukloniti tajni niz iz vašeg spremišta .git urezivanje historije tako da je ne mogu vidjeti ni kolege ni budući strugači (and so GitHub's Push Protection stops blocking your branches).
1. Why git rm .env + git commit NE uklanja tajnu iz Gita¶
Trčanje git rm .env && git commit -m "remove env" uklanja samo fajl iz posljednjeg urezivanja (HEAD); tajna otvorenog teksta ostaje trajno čitljiva unutar roditeljskog urezivanja (the parent commit) svakome ko klikne na "Commits" na GitHubu.
2. Prepišite historiju spremišta čisto koristeći git-filter-repo¶
- Ako je samo zadnje urezivanje (
HEAD) sadržavao tajnu (and nobody else has pulled it yet): - Ako je tajna zakopana nekoliko urezivanja unazad u vašoj istoriji (
or inside a code file you want to keep): Koristitegit-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. Skrivena GitHub keš zamka (Dangling Commit SHAs)¶
Čak i nakon što trčiš git filter-repo i git push --force, GitHubovi web serveri i dalje održavaju staru, nereferenciranu ("viseću") urezivanje SHA živom i javno dostupnom na https://github.com/<owner>/<repo>/commit/<old-40-char-sha> (and in any forks or Pull Requests) dok se ne pokrene odvoz smeća.
- Kako odmah očistiti keširani SHA urezivanje na GitHubu:
1. Kopirajte u cijelosti 40-character urezivanje SHA procurelog urezivanja prije nego što ponovo napišete historiju.
2. Otvoren https://support.github.com/contact -> zatražiti "Ukloni osjetljive podatke / Obriši keširane poglede za nedostupni SHA urezivanje" u spremištu owner/repo i navedite tačan urezni SHA (or use the GitHub Support portal's automated cache-purge workflow).
Dio 4: Kako dobiti a $5,000 to $100,000+ Odbačen račun za AWS ili GCP bot (The Courtesy Forgiveness Appeal)¶
Šta ako ste gurnuli .env datoteku u petak popodne, nisam provjerio vašu e-poštu do ponedjeljka ujutro i probudio se u $28,400.00 AWS ili Google Cloud račun od kripto-rudanja ili LLM-proxy botova?
NE paničarite i NEMOJTE otkazati svoju kreditnu karticu ili još uvijek podnijeti bankovni povraćaj. Oba Amazon Web Services (AWS) i Google Cloud Platforma (GCP) imaju uspostavljenu internu Jednokratnu prilagodbu naplate zbog slučajnog curenja akreditiva/Pravilnik kreditiranja ljubaznosti za individualne programere, studente i startupe, pod uslovom da popunite 100% njihove obavezne kontrolne liste za sigurnosnu sanaciju prije nego njihov tim za pregled naplate ocijeni vašu žalbu.
AWS/GCP protokol odricanja od računa u 5 koraka (90%+ Success Rate for First-Time Leaks)¶
- Prvo dovršite svaki korak sigurnosne sanacije (
AWS Will Reject Your Waiver Until the Account Is Clean):- Izbrišite kompromitovani IAM pristupni ključ (
and the IAM User if possible). - Ukinite svaku neovlaštenu instancu EC2, Auto Scaling Group, EBS volumen, Elastic IP, RDS instancu i S3 bucket u svim regijama (
verify via AWS Cost Explorer and AWS Billing -> Bills -> Charges by Region that daily accrual has dropped back to $0.00). - Omogućite Hardver ili aplikaciju za autentifikaciju MFA (
Multi-Factor Authentication) na vašem AWS root nalogu i svakom IAM korisniku.
- Izbrišite kompromitovani IAM pristupni ključ (
- Otvorite slučaj podrške ispod
"Account and Billing"(Free for All AWS/GCP Tiers, No Paid Support Plan Required):- Idi na
console.aws.amazon.com/support/home-> Kreiraj slučaj -> Račun i naplata -> Usluga: Naplata -> Kategorija: Osporavanje terećenja / kompromitovanog računa.
- Idi na
- Pošaljite ovaj tačan činjenični sažetak sanacije i poteškoća:
- Potvrdite vremensku liniju i uzrok: Jasno navedite kada je ključ slučajno otkriven na GitHubu (
e.g., "October 30 at 22:14 UTC") i kada je opozvan ("October 31 at 09:05 UTC"). - Navedite neovlaštene naknade po regionima i uslugama: Navedite tačne iznose u dolarima lažne aktivnosti bota u odnosu na vaš uobičajeni istorijski mjesečni račun (
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"). - Potvrdite 100% popravku: Označite tačne korake koje ste već obavili (
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). - Učtivo zatražite jednokratnu prilagodbu naplate: Objasnite da ste individualni programer/student/početak u ranoj fazi, da plaćate
$18,420neovlašteni račun za bot bi izazvao ozbiljne finansijske poteškoće i tražio bi jednokratni kredit za naplatu/odricanje za lažnu upotrebu.
- Potvrdite vremensku liniju i uzrok: Jasno navedite kada je ključ slučajno otkriven na GitHubu (
- Privremeno zamijenite ili ograničite svoju povezanu platnu karticu ako je automatska naplata neminovna:
- Dok je vaš slučaj podrške za AWS naplatu u pregledu (
which usually takes 5 to 15 business daysdok timovi za AWS sigurnost i usluge naplate potvrde da su svi lažni resursi prekinuti), kontaktirajte AWS podršku unutar tiketa i zamolite ih da stave privremeno zadržavanje naplate (defer auto-charge) na spornoj fakturi kako ne bi došlo do prekoračenja na vašem bankovnom računu dok se usklađivanje kredita obrađuje.
- Dok je vaš slučaj podrške za AWS naplatu u pregledu (
Warning
Zašto NIKADA ne smijete tvrditi ključeve u kodu na strani klijenta (NEXT_PUBLIC_, VITE_, REACT_APP_, Mobilne aplikacije ili Chrome ekstenzije). Čak i ako je vaše GitHub spremište 100% Privatno, stavljajući tajni API ključ (like an OpenAI, Stripe secret, or AWS key) unutar varijable okruženja frontenda s prefiksom NEXT_PUBLIC_, VITE_ ili REACT_APP_ povezuje taj ključ otvorenog teksta direktno u javni JavaScript .js fajlovi koji se serviraju u web pretraživač svakog posjetitelja (where bots scrape it directly from your live production website in seconds). Samo javni/objavljivi ključevi (like Stripe pk_live_... ili Firebase klijentska konfiguracija ograničena HTTP Referrerom / Sigurnošću na nivou reda) može ikada dodirnuti frontend kod.
Tip
Instaliraj gitleaks ili trufflehog kao lokalni pre-commit hook za 60 sekundi (So git Refuses to Commit a Secret Ever Again). Da bi se fizički onemogućilo slučajno izvršenje a .env fajl ili API ključ ponovo na laptopu, instalirajte gitleaks (brew install gitleaks) i dodajte a .pre-commit-config.yaml kuka (or turn on GitHub's free **"Push Protection for yourself"** at **github.com/settings/security_analysis**). Sa omogućenom Push Protectionom, GitHubovi serveri pregledavaju vaše git push u tranzitu i odbaciti push prije nego što ikada sleti u spremište kad god se otkrije prepoznatljivi ključ ključa.
(Za povezane sigurnosne incidente programera i rada na daljinu, pogledajte Slučajan pad baze podataka o proizvodnji, git force-push, tajno curenje i trijaža incidenta, Proizvodna baza podataka je ispuštena ili S3 korpa je izbrisana bez nedavne sigurnosne kopije, Slučajno poslana povjerljiva platna lista, PII klijenta ili HIPAA tabela, i Sigurnost rada na daljinu i privatnost podataka u hitnim slučajevima.)
Regionalni organi za prijavu kršenja podataka i sigurnosti u oblaku¶
| Region / Država | Zakon o upadima u oblak i kršenju podataka | Službeno tijelo za sajber incidente i regulatorno tijelo | Kada procureli GitHub ključ zahtijeva obavezno regulatorno izvješćivanje |
|---|---|---|---|
| Sjedinjene Američke Države | Pravilo o zaštiti FTC-a (16 CFR Part 314), SEC Cybersecurity Pravilo (Form 8-K Item 1.05), HIPAA, & 50 Statuta o obavještavanju o povredi podataka |
CISA (cisa.gov/report / 1-844-SAY-CISA), FBI IC3 (ic3.gov), HHS OCR, & Državni odvjetnici |
Ako CloudTrail ili Stripe zapisnici pokažu da je vanjski IP koristio vaš ključ koji je procurio GetObject ili izvoz nešifrovanog kupca PII, brojeve socijalnog osiguranja ili evidenciju o plaćanju (rather than purely mining crypto on empty EC2 instances), primjenjuju se državni zakoni o obavještenju o kršenju. |
Evropska unija (EEA) |
GDPR (Articles 33 & 34) & NIS2 direktiva (Directive (EU) 2022/2555) |
Nacionalno tijelo za zaštitu podataka (CNIL, BfDI, DPC) & Nacionalni CSIRT (ENISA) |
Strogo 72-Hour sat (GDPR Art. 33): Ako je procurila vjerodajnica imala pristup za čitanje ličnih podataka EU i ne možete forenzički isključiti neovlašteni pristup u CloudTrail/VPC Flow Logs, obavijestite svoje nadzorno tijelo unutar 72 hours. |
| Ujedinjeno Kraljevstvo | UK GDPR i Zakon o zaštiti podataka 2018 | Kancelarija Poverenika za informacije (ICO: 0303 123 1113) & NCSC (ncsc.gov.uk) |
Prijavite neovlašteni pristup ličnim podacima UK ICO unutar 72 hours korištenjem ICO-ovog online portala za procjenu kršenja; dokumentirajte korake rotacije ključeva i IAM karantina. |
| Kanada, Australija i Novi Zeland | Kanada PIPEDAAustralija Privacy Act 1988 (NDB Scheme)Novi Zeland Privacy Act 2020 |
OPC (Canada), OAIC & ACSC (Australia: 1300 CYBER1), & OPC (New Zealand) |
Može se prijaviti ako izloženost akreditiva stvara stvarni rizik od značajne štete (RROSH u Kanadi) ili kršenje prihvatljivih podataka (Australia OAIC) koji uključuje lične podatke. |
Često postavljana pitanja¶
Ako sam shvatio da sam gurnuo .env datoteku u javni GitHub repo i učinio repo privatnim 2 minute kasnije, da li još uvijek trebam rotirati svoje ključeve?¶
Da, 100 posto ključeva u toj datoteci mora se smatrati ugroženim i odmah opozvati. Automatski botovi za prikupljanje akreditiva ne čekaju da Google indeksira vaše spremište; oni se direktno pretplate na GitHub-ovu javnost u realnom vremenu `Events API` vatrogasno crijevo (`and GH Archive`), koji emituje svaka javnost `PushEvent` globalno u roku od 1 do 3 sekunde od vašeg `git push`. Do trenutka kada ste dva minuta kasnije kliknuli na "Postavke -> Promijeni vidljivost spremišta -> Učini privatnim", desetine automatiziranih scraper botova su već preuzeli vaš commit diff i stavili u red vaše AWS, Stripe, OpenAI i akreditive baze podataka za eksploataciju.
Zašto su botovi nastavili pokretati EC2 instance na mom AWS računu čak i nakon što sam obrisao procurilo AKIA pristupni ključ?¶
Brisanje statike `AKIA...` pristupni ključ u AWS IAM samo deaktivira taj određeni trajni ključ; ne poništava privremeni `ASIA...` Security Token Service (`STS`) tokeni sesije koje je napadač već generirao koristeći `sts:GetSessionToken` ili `sts:AssumeRole` tokom prvih nekoliko sekundi nakon grebanja ključa (`which remain valid for up to 12 to 36 hours`). Osim toga, automatizirane AWS skripte za napad rutinski pozivaju `iam:CreateUser` i `iam:CreateAccessKey` u svojoj prvoj sekundi pristupa za postavljanje drugog, skrivenog backdoor administratorskog naloga. Da biste potpuno zaustavili aktivni AWS upad, morate izbrisati `AKIA` ključ, priložite izričit `Deny *` inline politika kompromitovanom IAM korisniku (`which immediately invalidates all minted STS tokens`) i revidirati CloudTrail za sve novokreirane IAM korisnike ili uloge.
Hoće li AWS ili Google Cloud oprostiti mnogo $10,000+ račun ako su hakeri ukrali moj API ključ sa GitHuba i rudarili kriptovalute?¶
U velikoj većini slučajnih curenja informacija po prvi put, da, pod uvjetom da djelujete brzo, u potpunosti sarađujete s njihovim sigurnosnim timom i ne ignorirate fakturu. I AWS i Google Cloud imaju internu politiku jednokratnog prilagođavanja naplate za programere i mala preduzeća pogođena neovlaštenim skokovima curenja akreditiva. Prije nego što zatražite oslobađanje od računa u okviru podrške za "Račun i naplata", prvo morate dokazati da je curenje 100 posto zatvoreno: opozovite izložene IAM ključeve, ukinite sve lažne računalne instance i grupe za automatsko skaliranje u svih 30+ globalnih regija, omogućite višefaktorsku autentifikaciju (`MFA`) na vašem root nalogu i postavite upozorenja o troškovima za AWS Budžete.
Zašto? git rm .env ne ukloniti moj tajni ključ sa GitHub-a?¶
Git je nepromjenjiva knjiga kontrole verzije: kada pokrenete `git rm .env` i pritisnite novo urezivanje, Git samo bilježi da datoteka nema u najnovijem snimku (`HEAD`), zadržavajući cijeli sadržaj otvorenog teksta `.env` trajno pohranjen unutar prethodnog urezivanja (`the parent commit`) u historiji urezivanja vašeg spremišta. Čak i ako prepišete svoju istoriju sa `git filter-repo` i force-push, svako još uvijek može pročitati tajnu ako je niste opozvali na konzoli provajdera. Uvijek prvo opozovite i rotirajte tajni ključ na kontrolnoj tabli vašeg provajdera oblaka, a zatim upotrijebite `git filter-repo` da izbrišete mrtvi niz iz vaše istorije urezivanja.
Povezani vodiči¶
- Slučajan pad baze podataka o proizvodnji, git force-push, tajno curenje i trijaža incidenta
- Proizvodna baza podataka je ispuštena ili S3 korpa je izbrisana bez nedavne sigurnosne kopije
- Slučajno je e-poštom poslan povjerljivi platni spisak, PII klijenta ili tabela HIPAA pogrešnom primaocu
- Slučajno dijeljenje ekrana povjerljive platne liste, upravitelja lozinki ili liste otpuštanja na Zoomu/Timovima
- Sigurnost rada na daljinu i privatnost podataka u hitnim slučajevima
- Brojevi za hitne slučajeve
Izvori i službene upute¶
- 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?"):AWSCompromisedKeyQuarantineV2Ponašanje politike, poništavanje privremenogSTSTokeni sesije (RevokeOldSessions), i multi-regionalna revizija resursa. - GitHub dokumentacija (
GitHub Secret Scanning, Push Protection, & "Removing sensitive data from a repository" using git-filter-repo): Partnerski program automatskog opoziva (Stripe, AWS, OpenAI, NPM),git-filter-repoPonovno pisanje istorije i čišćenje nedostižnih keširanih SHA-ova urezivanja. - Stripe Inc. (
Stripe Developer Security Guide: API Key Rotation & Compromised Key Incident Triage): Odmahsk_live_Istek ključa, revizija/v1/eventsi/v1/webhook_endpoints, i Restricting Keys prekork_live_Opseg. - NIST (
Special Publication 800-61 Rev. 2 / Rev. 3: Computer Security Incident Handling Guide) & OWASP (Secrets Management Cheat Sheet): Zadržavanje vjerodajnica, efemerna federacija identiteta radnog opterećenja OIDC-a (replacing static CI/CD keys), i tajno skeniranje prije urezivanja.