NieuwStart je eerste gratis run
secret-detectie

De sleutel die iemand twee jaar geleden plakte werkt nog.

Credentials in je code en in wat je applicatie naar de browser stuurt, gevonden in wat je vandaag uitrolt en in elke versie daarachter, en daarna getoetst of ze nog iets openen.

criticalHardcoded AWS key
infra/terraform/outputs.tf
12output "deploy_credentials" {
13 value = {
14 access_key_id = "AKIA••••••••XYZ"
15 secret_access_key = "••••••••••••••••"
16 }
17}
Can write to production S3
In the git history for 14 months
01 / Wat het vindt

In de code, en in wat de browser ontvangt.

Wat de lijst haalt, waar een sleutel buiten de repository lekt, en wat je krijgt als er een gevonden wordt.

Signaal

Een lijst die kort genoeg is om door te werken.

Identifiers en hashes ogen ook willekeurig, en daarom bedelven scanners die op willekeur scoren de echte. Een string beoordelen op hoe hij is opgebouwd laat het rapport achter met de credential en weinig anders.

  • Placeholders en fixtures beoordeeld op wat eromheen staat
  • Cloud-sleutels, database-URL's, private keys, tokens en CI-credentials
Bevindingen
5 open · secretsFindings.
Filter findings…WeaknessSecrets
criticalCloud access key exposed in Terraform outputinteropt/billing-api
criticalPrivate signing key committed to repositoryinteropt/auth-service
criticalDatabase URL exposed in deployment logsinteropt/infra
highCI token in workflow fileinteropt/web-dashboard
mediumWebhook signing secret in example configinteropt/notify-service
5 real secrets out of 1,284 random-looking stringsIDs, hashes and test values filtered out
In de browser

De sleutel die je frontend aan elke bezoeker geeft.

Een sleutel die in je JavaScript is gebundeld, is openbaar zodra de pagina laadt: iedereen kan de ontwikkelaarstools van de browser openen en hem lezen. De run controleert wat je live applicatie echt serveert, niet alleen de repository erachter.

  • Gevonden in de draaiende applicatie, niet alleen in de code
  • Sleutels die op een server horen, gemeld zodra de browser ze krijgt
Web app pentest
app.acme.io/checkout
Sent to every visitor with the page
assets/checkout-3f9a2c.js
1const pay = async (cart) => {
2 const stripe = Stripe("sk_live_••••••••4Qe");
3 return stripe.charges.create(cart);
4};
criticalStripe secret key in the JavaScript bundleAnyone who opens app.acme.io can read it
De bevinding

Wat je krijgt als er een gevonden wordt.

Het bestand en de regel, met de code eromheen, zodat het in één oogopslag te bevestigen is. Waar hij bij kan, want een leessleutel voor een test en een schrijfsleutel voor productie zijn niet dezelfde bevinding. En hoe ver hij teruggaat, wat bepaalt of roteren genoeg is.

  • De waarde zelf wordt gemaskeerd, nooit opgeslagen
  • Wijs hem toe, koppel een ticket en volg hem tot hij gesloten is
Triage en status
criticalF-C1A6EAPrivate signing key committed to repository
Settings
FindingSuggested fixAIActivity3Notes
Risk

Anyone with the repository can sign tokens the service accepts, so they can mint a session for any user. The key stays compromised after it is removed from the current tree.

src/server/jwt.ts: 12 - 16
12const JWT_PRIVATE_KEY = `
13-----BEGIN PRIVATE KEY-----
14MIIEvQIBADANBgkqhkiG9w0BAQEFAASC••••••
15-----END PRIVATE KEY-----
16`;
Historya41c9eremoved from src/server/jwt.tstoday7d02b3refactor session signing4 mo19fe0cadd JWT_PRIVATE_KEY for local dev14 moNL Assigned to Noah Lin · rotate, then purge

De regel weghalen haalt het secret niet weg.

De code van vandaag

Sleutels in broncode, configuratie en omgevingsbestanden — inclusief de lokale fallback die stilletjes de productiewaarde werd.

Elke versie daarachter

De volledige geschiedenis. Een secret dat vorig jaar is verwijderd staat nog in de commit ervoor, en in elke kloon die iemand nam.

Waar het niet opvalt

Waarden achter een laagje encoding, en credentials in meegecommitte archieven en buildartefacten.

Cloud-sleutelsDatabase-URL'sPrivate keysAccess tokensWebhook-secretsCI-credentials
03 / Vragen

Vragen over secret-detectie.

begin hier

Kom erachter wat er al in je geschiedenis staat.

Koppel een repository en de eerste run leest elke versie achter wat je vandaag uitrolt.