Naar de inhoud
Oktober 2026: incidenten bij Railway en OpenCode, wat je moet doen

Beveiliging van AI-API-sleutels

Stop een gelekte AI-sleutel voordat hij uitgeeft.

Houd je providersleutels uit je applicaties. Geef elke app, agent en tool in plaats daarvan een INFRO-gatewaysleutel, met een uitschakelaar, een IP-allowlist, modellimieten en een uitgavenlimiet, elk gecontroleerd voordat je provider wordt aangeroepen.

Een voorbeeld-verzoeklog voor één gelekte INFRO-gatewaysleutel. De sleutel is beperkt tot het netwerk van zijn servers, 203.0.113.0/24, en tot een dagelijkse uitgavenlimiet van $50.00. Verzoeken uit andere netwerken worden geweigerd met 403 ip_not_allowed en een model buiten de allowlist van de sleutel met 403 model_not_allowed; geen van beide bereikt een provider. Verzoeken van de servers draaien op de eigen OpenAI- en Anthropic-accounts van de organisatie, elk met geschatte providerkosten.
  • 4 controles

    Bij elk verzoek, voordat je provider wordt aangeroepen.

  • 32 netwerken

    Per sleutel in zijn IP-allowlist, IPv4 of IPv6, op elk plan.

  • Geen deploy

    Om een gelekte sleutel uit te zetten. Elk verzoek ermee wordt geweigerd.

  • AES-256-GCM

    Op elke providersleutel die je koppelt. Hij wordt nooit meer getoond.

Waar providersleutels staan

Dezelfde providersleutel staat meestal op vijf plekken, en elke kopie kan van het hele account uitgeven. Met INFRO is de providersleutel op één plek versleuteld en heeft elke app, agent en tool een eigen gatewaysleutel. Kies waar het lek gebeurt.

Kies waar de sleutel lekt
Eén providersleutel, overal gekopieerd5 van 5 plekken blootgesteld
Je providersleutel sk-proj-••••7Hc2Gekopieerd naar 5 plekken
  1. Omgevingsvariabelen van productiesk-proj-••••7Hc2Hier gelekt
  2. CI- en deploygeheimensk-proj-••••7Hc2Zelfde sleutel
  3. Laptops van ontwikkelaars en .env-bestandensk-proj-••••7Hc2Zelfde sleutel
  4. Shells van coding agentssk-proj-••••7Hc2Zelfde sleutel
  5. AI-tools van derdensk-proj-••••7Hc2Zelfde sleutel
Blootgesteld
Je hele provideraccount, tot de limieten die bij de provider zijn ingesteld, totdat de sleutel daar wordt verwijderd.
Herstellen
Verwijder de sleutel bij de provider en deploy daarna alle 5 plekken opnieuw.
Met INFRO, één gatewaysleutel per plek1 van 5 sleutels blootgesteld
Je providersleutel sk-proj-••••7Hc2Versleuteld in INFRO
  1. checkout-apisk_infro_••••a91f$50 per dag203.0.113.0/24Gelekt, ingedamd
  2. ci-deploysk_infro_••••3c7e$10 per dag203.0.113.64/27Niet geraakt
  3. maya-laptopsk_infro_••••5d20$5 per dagVerloopt over 30 dagenNiet geraakt
  4. claude-codesk_infro_••••8b14$20 per dagAlleen AnthropicNiet geraakt
  5. support-toolsk_infro_••••e602$15 per maand1 modelNiet geraakt
Blootgesteld
checkout-api: één sleutel, geweigerd buiten het netwerk van je servers en daarbinnen begrensd op $50 per dag.
Herstellen
Zet hem uit in de console, zonder deploy, en roteer hem daarna op die ene plek. De andere 4 blijven werken.

Vier controles

Elke controle weigert met een eigen gedocumenteerde code, zodat je logs precies zeggen waarom, en elke controle pas je aan vanuit de console of de API zonder deploy. Alle vier zitten in elk plan.

  1. 01

    Uitschakelknop

    Staat deze sleutel aan?

    Schakel een sleutel uit vanuit de console of de API en elk verzoek ermee wordt geweigerd. Zijn geheim, limieten en geschiedenis blijven bewaard; weer inschakelen herstelt dezelfde sleutel.

    403 key_disabledDocs

  2. 02

    Toegestane netwerken

    Komt de aanroep vanaf je servers?

    Tot 32 IPv4- of IPv6-adressen of CIDR-bereiken per sleutel, vergeleken met het clientadres dat de edge van Cloudflare meldt, nooit X-Forwarded-For. Zonder vertrouwd adres wordt het verzoek geweigerd.

    403 ip_not_allowedDocs

  3. 03

    Modellen en providers

    Is dit model toegestaan?

    Keur de modellen goed die een organisatie, project of sleutel mag aanroepen, en de providers die een sleutel mag bereiken. Elke sleutel hoort bij één omgeving en bereikt nooit een verbinding daarbuiten.

    403 model_not_allowedDocs

  4. 04

    Uitgavenlimiet

    Kan de limiet dit verzoek dekken?

    Een dag-, week-, maand- of levenslange limiet per sleutel, naast budgetten per organisatie, project en lid. Een verzoek dat de limiet niet kan dekken, wordt geweigerd voordat de provider wordt aangeroepen.

    402 key_budgetDocs

  • Rotatie met overlapRoteer in één stap: de nieuwe sleutel neemt elke instelling van de oude over, en de oude sleutel blijft tot zeven dagen werken terwijl je deployt, of stopt meteen. De uitgavenlimiet wordt gedeeld, dus roteren koopt nooit nieuwe ruimte.
  • VervaldatumGeef een sleutel een tijdstip waarna hij stopt met werken, voor een externe medewerker, een demo of een migratie.
  • Eén keer getoond, opgeslagen als hashEen gatewaysleutel bestaat uit 32 willekeurige bytes, wordt één keer getoond en alleen opgeslagen als SHA-256-digest. Bij een databaselek komt geen bruikbare sleutel vrij.
  • Gokken wordt afgeremdEen adres dat 30 keer in een minuut authenticatie mist, wordt met een 429 geweigerd totdat de minuut voorbij is, voordat er een sleutel wordt opgezocht.

Uitgavenplafonds

Een gelekte sleutel, een agent die in een loop vastzit, één klant die je gratis laag script: elk stopt bij een plafond van zijn eigen omvang in plaats van je hele budget te bereiken. Elk toepasselijk plafond wordt gecontroleerd voordat je provider wordt aangeroepen, met het slechtste geval van verzoeken die al onderweg zijn meegeteld.

Plafonds stapelen

Een verzoek moet passen binnen elk plafond dat erop van toepassing is. Het krapste beslist, dus een klein plafond op de juiste plek stopt een probleem lang voor dat van de organisatie.

  1. Organisatie
  2. Project
  3. Lid
  4. Gatewaysleutel
  5. Eindklant
Voorbeeldbudgetten voor één organisatie: een hard plafond voor de organisatie, een projectbudget, een daglimiet op een gatewaysleutel, een levenslange limiet op een sleutel en een plafond per eindklant. In de gekozen crisis, “Een gatewaysleutel lekt”, bereikt het bijbehorende plafond zijn limiet en wordt het volgende verzoek geweigerd met 402 key_budget voordat er een provider wordt aangeroepen. De sleutel stopt bij $50 voor de dag. Elke andere sleutel blijft bedienen.

De sleutel stopt bij $50 voor de dag. Elke andere sleutel blijft bedienen.

Uitgavenplafonds per scope: periodes, gedrag, weigeringscode en plan
PlafondPeriodeHoe het werktGeweigerd metPlan
OrganisatieMaanddoel en hard plafondHet doel meldt; het harde plafond meldt of blokkeert. Alleen de eigenaar stelt het in.402 organization_budgetElk plan
ProjectMaandelijksMelden of blokkeren, met meldingen bij je eigen drempels.402 project_budgetElk plan
LidMaandelijksMelden of blokkeren, voor de activiteit van één persoon.402 member_budgetElk plan
GatewaysleutelDagelijks, wekelijks, maandelijks of levenslangBlokkeert altijd. Een levenslange limiet wordt nooit gereset.402 key_budgetElk plan
EindklantDagelijks, wekelijks of maandelijksEén regel voor elke klant, per organisatie of project, met uitzonderingen die je backend instelt.402 end_user_budgetTeam en hoger

Getest onder belastingIn een sandboxtest hield een blokkerend plafond van $1 stand in 12 van de 12 runs bij tot 500 gelijktijdige verzoeken (de test en de methode). Plafonds tellen de schatting van INFRO van de providerkosten, niet de factuur van je provider, en een model zonder bekende prijs wordt onder een blokkerend plafond geweigerd tenzij je het toestaat, dus houd ook een uitgavenlimiet bij de provider aan. Documentatie over uitgavenbeheer

Een sleutel is gelekt

Voor een INFRO-gatewaysleutel. Als een providersleutel is gelekt, verwijder hem dan eerst bij de provider: alleen dat houdt hem tegen.

  1. 1Beperk het zonder deploySchakel de gatewaysleutel uit, of houd je applicatie draaiend door de sleutel te beperken tot de netwerken van je servers en zijn uitgavenlimiet te verlagen. Niets daarvan vraagt een deploy, en elke controle draait vóór elke aanroep naar een provider.
  2. 2Vervang hemRoteer zonder overlap als de sleutel is gelekt. De vervanger behoudt het label, project, limieten, allowlists, omgeving en toegang tot geschiedenis, en wordt één keer getoond.
  3. 3Lees wat het deedElke verzoekregistratie noemt de gatewaysleutel die het deed, met model, status en geschatte providerkosten; filter het verzoeklog en het gebruik op die sleutel. De console toont hoeveel verzoeken de allowlist van elke sleutel vandaag weigerde.
  4. 4Controleer op gebruik buiten INFROOp het Business-plan meldt kostenreconciliatie met ingeschakelde toegang tot gebruik het gebruik op een gekoppelde providersleutel die nooit via INFRO liep. Zonder die toegang zegt het „niet gecontroleerd”, nooit „geen omzeiling”: lees de eigen gebruikspagina van de provider.
  5. 5Bewaar de registratieSleutelwijzigingen, rotaties en policybewerkingen staan in het auditlog met wie ze maakte en wanneer, in rijen die de database weigert bij te werken of te verwijderen.
curl -X PATCH https://api.infro.io/manage/v1/gateway_keys/$KEY_ID \
  -H "Authorization: Bearer $INFRO_MANAGEMENT_TOKEN" \
  -H 'If-Match: "7"' \
  -H "Content-Type: application/json" \
  -d '{"disabled": true}'

# Every request with the key: 403 key_disabled
# Its secret, limits and history are kept.

Dezelfde drie wijzigingen staan op de pagina van de sleutel in de console. Met de management-API heeft een wijziging de versie nodig die je het laatst hebt gelezen (If-Match), zodat twee mensen die één incident indammen elkaar niet kunnen overschrijven.

Secrets in prompts

Mensen plakken .env-bestanden in chats en agents lezen ze uit shells. Op het Business-plan controleren guardrails prompts, toolcalls en antwoorden op formaten van secrets, en blokkeren dan het verzoek, vervangen de match door [SECRET] of markeren hem, voordat je provider wordt aangeroepen.

  • OpenAI
  • Anthropic
  • Google API-sleutel
  • AWS-toegangssleutel-ID
  • GitHub-token
  • Slack-token
  • Stripe live-sleutel
  • INFRO-sleutel
  • JWT
  • PEM-privésleutel

Detectie werkt op patronen: ze herkent deze formaten en niets anders, dus ze mist AWS secret access keys, wachtwoorden en formaten die ze niet kent. Elke match wordt geteld in de verzoekregistratie. Documentatie over guardrails

Voorbeeld: een developer plakt een environment-bestand in een chat completion. Voordat het verzoek de provider bereikt, vervangt de secretdetector van de guardrail de OpenAI-sleutel door [SECRET], en het antwoord draagt de header X-INFRO-Guardrails: redacted.

Agents, tools en mensen

Coding-agents krijgen hun eigen sleutels

Claude Code, Codex en de agent-SDK's roepen /v1/messages en /v1/responses van INFRO aan met een gatewaysleutel in plaats van je Anthropic- of OpenAI-sleutel. Geef elke ontwikkelaar of agent er een, met een uitgavenlimiet, een vervaldatum en een netwerk-allowlist; intrekken raakt verder niemand.

Claude Code & Codex

Toolcredentials blijven buiten agentsBusiness

Registreer elke MCP-server één keer met zijn token. INFRO voegt het bij elke call toe, zodat geen agent, prompt of configuratiebestand het bevat, en elke gatewaysleutel krijgt alleen de tools die eraan zijn toegekend.

Beveiligingsmodel van de MCP-gateway

Aanmelden bij de console is de andere deur

Tweestapsverificatie met een authenticator-app, passkeys en hardwaresleutels, een lijst met sessies die je kunt beëindigen, en een organisatie-instelling die tweestapsverificatie voor elk lid verplicht. SAML- of OIDC-single sign-on en SCIM vanaf het Business-plan.

Tweestapsverificatie en sessies

De sleutels die wij bewaren

Een platform dat providersleutels opslaat, is precies waar de aanvallen van oktober op mikten, dus dezelfde vragen gelden voor ons. Deze maatregelen zijn letterlijk de eigen verklaringen van het Trust Center.

Providercredentials zijn verzegeld en aan één tenant gebonden
De providersleutels die je koppelt worden versleuteld met AES-256-GCM onder een sleutel die als Worker-secret wordt bewaard, nooit in de database. De identifiers van organisatie en verbinding zijn als additional authenticated data gebonden, zodat een verzegelde credential die naar de rij van een andere tenant — of een andere rij van dezelfde tenant — wordt gekopieerd veilig faalt in plaats van te ontsleutelen. Credentials die voor kostenreconciliatie zijn gekoppeld, worden apart verzegeld, onder hun eigen binding.
Er is nergens een onthulfunctie
Zodra een providercredential is opgeslagen, geeft geen enkele interface hem terug — niet de console, niet de API, niet de interne operatorconsole. Wat een van beide kanten kan zien zijn de laatste vier tekens en de tijdstempels. Als je de sleutel kwijtraakt, roteer je hem bij de provider; wij kunnen hem je niet tonen.
INFRO-API-sleutels zijn gehasht in rust
Een gatewaysleutel bestaat uit 32 bytes uit een cryptografische willekeurige bron. Wat wij opslaan is de SHA-256-digest, een weergaveprefix en de laatste vier tekens, zodat een databaselek geen bruikbare credential prijsgeeft. Intrekking schrijft een tombstone in plaats van de rij te verwijderen, zodat een verouderde cache-ingang die zich nog tussen locaties verspreidt haar niet kan overschaduwen.
De versleutelingssleutel kan worden geroteerd zonder jouw tussenkomst
Het roteren van de sleutel die klantcredentials verzegelt, verzegelt elke opgeslagen credential ter plekke opnieuw. Het vraagt klanten niets opnieuw in te voeren, en het opgeslagen algoritme draagt een versiestring zodat een toekomstig schema naast het huidige kan bestaan in plaats van een flag day te vragen.

Wat INFRO niet kan

Een providersleutel die bij INFRO of ergens anders is buitgemaakt, kan rechtstreeks bij de provider worden gebruikt, buiten elke limiet van INFRO. Koppel sleutels die zijn afgebakend tot hun eigen project of workspace, met een uitgavenlimiet bij de provider: dat is de maatregel die standhoudt, zelfs als wij falen. Wat nog niet geregeld is, staat in het Trust Center.

Oktober 2026

In beide gevallen was het advies hetzelfde: vervang de sleutel, verwijder de oude bij de provider en lees wat hij heeft gedaan. Hoe minder plekken waar een providersleutel staat, hoe minder rotaties een inbreuk kost; de sleutels die je wel uitdeelt, horen limieten te hebben die je zonder deploy kunt aanpassen.

RailwayBekendgemaakt op 21 oktober 2026

Wat Railway zei

An unauthorized party may have accessed encrypted customer environment variables and, for some of them, obtained the decrypted contents, in a series of attacks aimed at compromising AI inference providers.

Wat je moet doen

Roteer elke variabele die Railway bewaarde, AI-providersleutels eerst: vervang, verwijder de oude sleutel bij de provider, deploy en bekijk het gebruik van de oude sleutel.

Railway breach: what happened and what to doHerzien op 22 oktober 2026

OpenCodeBekendgemaakt op 17 oktober 2026

Wat OpenCode zei

A breach related to a large-scale distillation attack affected 1.4% of OpenCode Console users, those with external AI providers linked, and provider keys saved in a workspace may have been exposed.

Wat je moet doen

Maak een vervanger met scope, trek de oude sleutel in bij de provider en bekijk het providergebruik vanaf 16 oktober.

OpenCode Console breach: what happened and what to doHerzien op 21 oktober 2026

Elke samenvatting komt uit de eigen bekendmaking van het bedrijf, zoals onze analyse die citeert. Beide incidenten liepen nog toen dit werd geschreven; de analyses worden wekelijks herzien en vermelden elke wijziging in hun revisienotities.

Praktijkgidsen

FAQ

Wat moet ik doen als mijn OpenAI- of Anthropic-API-sleutel is gelekt?

Maak bij de provider een vervangende sleutel aan, verwijder daar de gelekte sleutel, deploy de vervanger en bekijk dan bij de provider het gebruik van de oude sleutel over de hele tijd dat hij gebruikt kan zijn. De sleutel bij de provider verwijderen is wat hem stopt; niets wat een applicatie of gateway doet kan een gestolen sleutel terugroepen. Geef de vervanger daarna een uitgavenlimiet bij de provider en houd hem uit code, clientapps en gedeelde omgevingen.

Hoe beperkt INFRO de schade van een gelekte API-sleutel?

Je applicaties houden INFRO-gatewaysleutels in plaats van je providersleutels. Elke gatewaysleutel kan worden uitgeschakeld (403 key_disabled), beperkt tot maximaal 32 netwerken (403 ip_not_allowed), versmald tot goedgekeurde modellen en providers, en voorzien van een dag-, week-, maand- of levenslange uitgavenlimiet (402 key_budget). Elke controle draait vóór je provider wordt aangeroepen, op elk plan, en geen ervan vraagt een deploy. Een gelekte gatewaysleutel is een begrensd probleem dat je kunt uitschakelen; een gelekte providersleutel bereikt het hele provideraccount.

Kan ik AI-uitgaven begrenzen per klant, per project of per tijdsperiode?

Ja. Budgetten gelden per organisatie (een maanddoel dat meldt en een hard plafond dat meldt of blokkeert), per project en per lid (maandelijks), en per gatewaysleutel (dagelijks, wekelijks, maandelijks of een levenslange limiet die nooit wordt gereset). Vanaf het Team-plan begrenzen plafonds per eindklant elk van je eigen klanten per dag, week of maand, met uitzonderingen voor specifieke klanten. Elk toepasselijk plafond wordt gecontroleerd voordat je provider wordt aangeroepen, met het ergste geval van verzoeken die al lopen meegeteld, en een geweigerd verzoek is een 402 die het plafond noemt. Plafonds tellen de schatting van INFRO van de providerkosten, niet de factuur van je provider, dus houd ook bij de provider een uitgavenlimiet aan.

Slaat INFRO mijn provider-API-sleutels op, en hoe worden ze beschermd?

Ja: je koppelt je eigen providersleutels één keer en INFRO gebruikt ze om je verzoeken te bedienen. Elke is versleuteld met AES-256-GCM onder een sleutel die als Worker-secret buiten de database wordt bewaard, met de organisatie en verbinding erin gebonden, dus een kopie van alleen de database opent niets. Geen consolescherm, endpoint of export geeft een opgeslagen credential terug; de console toont de laatste vier tekens. Gatewaysleutels worden alleen als SHA-256-digest opgeslagen.

Kan een gestolen providersleutel INFRO omzeilen?

Ja. INFRO bestuurt alleen het verkeer dat erdoorheen gaat. Een providersleutel die ergens vandaan is gehaald, ook uit INFRO, kan rechtstreeks tegen de provider worden gebruikt, buiten elke INFRO-limiet om. Koppel sleutels met scope tot hun eigen project of workspace met een bij de provider ingestelde uitgavenlimiet: die limiet houdt ook als wij uitvallen. Op het Business-plan meldt reconciliatie met ingeschakelde toegang tot gebruik het gebruik op een gekoppelde sleutel die niet via INFRO liep.

Wat gebeurde er bij de inbreuken bij OpenCode en Railway?

OpenCode zei op 17 oktober 2026 dat een inbreuk in verband met een grootschalige distillation-aanval 1,4% van zijn Console-gebruikers trof, degenen met externe AI-providers gekoppeld, en dat in een workspace opgeslagen providersleutels mogelijk zijn blootgesteld. Railway zei op 21 oktober 2026 dat een onbevoegde partij mogelijk toegang had tot versleutelde omgevingsvariabelen van klanten en sommige ervan heeft ontsleuteld, bij aanvallen gericht op het compromitteren van AI-inferenceproviders. In beide gevallen is het advies hetzelfde: vervang de sleutel, verwijder de oude bij de provider en bekijk het gebruik ervan. INFRO heeft van elk een analyse, alleen geschreven op basis van de eigen verklaringen van de bedrijven.

Kan INFRO voorkomen dat API-sleutels in prompts worden geplakt?

Op het Business-plan controleren guardrails prompts en antwoorden op OpenAI, Anthropic, Google API-sleutel, AWS-toegangssleutel-ID, GitHub-token, Slack-token, Stripe live-sleutel en INFRO-sleutel-formaten, JWT's en PEM-privésleutels, en blokkeren het verzoek, vervangen de match door [SECRET] of markeren die voordat je provider hem ziet. Detectie is patroongebaseerd: ze mist formaten die ze niet kent, zoals AWS-geheime toegangssleutels en wachtwoorden.

Hebben Claude Code en Codex mijn Anthropic- of OpenAI-sleutel nodig?

Niet via INFRO. Ze roepen /v1/messages en /v1/responses van INFRO aan met een gatewaysleutel, dus elke ontwikkelaar of agent kan een eigen sleutel hebben met een uitgavenlimiet, een vervaldatum en een optionele netwerk-allowlist, en intrekken raakt de toegang van niemand anders. Een agent kan nog steeds elke sleutel lezen die in dezelfde shell is achtergelaten, dus verwijder ruwe providersleutels uit ontwikkelomgevingen.

Wat is LLMjacking?

LLMjacking is het gebruik van gestolen cloud- of AI-API-credentials om gehoste taalmodellen aan te roepen op kosten van het slachtoffer, ofwel voor eigen gebruik van de aanvaller ofwel om de toegang door te verkopen. De verdediging is die voor elke credential die geld kan uitgeven: houd providersleutels uit code en clientapps, geef elke sleutel een uitgavenlimiet, bewaak het gebruik per sleutel en zorg dat je een sleutel kunt uitschakelen zonder deploy.

Welke INFRO-plannen bevatten deze controles?

Elk plan bevat een sleutel uitschakelen, toegestane netwerken, limieten op modellen en providers, uitgavenlimieten, rotatie en vervaldatum, tweestapsaanmelding en passkeys en het auditlog. Uitgavenmeldingen gaan op elk plan per e-mail, en vanaf het Startup-plan ook naar Slack en via ondertekende webhooks. Guardrails, SSO en SCIM, kostenreconciliatie met detectie van omzeiling en de MCP-gateway zitten in het Business-plan.

Compliance, de volledige lijst met maatregelen en wat nog niet geregeld is, staan in het Trust Center. Een kwetsbaarheid gevonden? Schrijf naar security@infro.io.

Aan de slag

Maak van je volgende gelekte sleutel een begrensd probleem.

Jouw providers, jouw contracten, jouw sleutels, op één plek versleuteld. Elke sleutel die je uitdeelt, begrensd en uit te schakelen. 0% opslag op modeluitgaven.