You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(detector): HardcodedSecret Pattern-Match auf Token-Formate (Audit E-2 P2)
Bisher fand uHardcodedSecret nur Strings die einer Variable mit Secret-
Keyword im Namen zugewiesen wurden (FPassword, ApiToken, ...).
Das ueberging Tokens an "normalen" Variablen:
FCfg := 'sk-prod-abc123...'; <-- nicht detected
Url := 'https://api?key=AKIA1234...'; <-- (in einem Sub-String) nicht
detected (nur als ganzer
Match-RHS gepruef)
Neue class function IsKnownSecretPattern(StrLit; out Kind: string).
Erkennt token-spezifische Formate mit hoher Spezifitaet:
* AWS Access Key: AKIA[0-9A-Z]{16}
* GitHub Personal Access: ghp_[A-Za-z0-9]{36}
* GitHub fine-grained: github_pat_[A-Z0-9]{22}_[A-Za-z0-9_]{59,}
* OpenAI API Key: sk-(proj-|org-|svcacct-)?[A-Za-z0-9_-]{20,}
* Google API Key: AIza[0-9A-Za-z_-]{35}
* Slack Bot/User/Workspace: xox[bps]-[A-Za-z0-9-]{20,}
* JWT (2/3 Segment): eyJ[A-Za-z0-9+/=_-]{10,}\.eyJ[A-Za-z0-9+/=_-]{10,}
Aufruf: am Anfang der AnalyzeMethod-Schleife. Wenn der Wert wie ein
bekanntes Token aussieht, wird ein Finding mit Confidence fcHigh und
expliziter Kind-Bezeichnung erzeugt - Name-basierter Pfad wird
geskippt (sonst Doppel-Findings).
MIN_SECRET_LEN-Filter (16 chars) verhindert Trivial-Match auf kurze
Strings. Mindest-Laenge ist im Pattern auch durch das {N,}-Limit
abgesichert.
Confidence fcHigh statt fcLow (wie der Name-basierter Pfad), weil
die Patterns sehr spezifisch sind. False-Positive-Wahrscheinlichkeit
gering: ein zufaelliger 36-Char-String der 'ghp_'-prefix matcht ist
in der Praxis extrem unwahrscheinlich.
0 commit comments