Zum Inhalt springen

Geheimnis mit fest eingebautem Ersatzwert

Prüfregel · RSC-SEC-146

  • Sicherheit
  • Schweregrad: Hoch
  • CWE-798
  • OWASP A07-2021

Findet Geheimnisse aus der Umgebung mit festem Ersatzwert (`process.env.JWT_SECRET || "dev-secret"`, `?? "…"`) — öffentliche Präfixe (NEXT_PUBLIC …) ausgenommen.

Warum das zählt

KI-Generatoren schreiben `const secret = process.env.JWT_SECRET || "dev-secret"`, damit die App auch ohne gesetzte Variable startet. Lokal praktisch — in Produktion fatal: Fehlt die Variable auf dem Server (ein häufiger Konfigurationsfehler), läuft die App still mit dem Wert aus dem Quellcode weiter, statt den Start zu verweigern.

Bei einem Signier- oder Sitzungsschlüssel ist dieser Ersatzwert öffentlich bekannt — er steht im Repository. Wer ihn kennt, fälscht gültige Tokens oder übernimmt fremde Sitzungen. Der Fehler ist unsichtbar, weil nichts abstürzt: Die App funktioniert, nur eben mit einem Schlüssel, den jeder kennt.

Fix: Den Ersatzwert streichen. Fehlt die Variable, den Start abbrechen (`if (!process.env.JWT_SECRET) throw new Error("JWT_SECRET fehlt")`). Den bisher eingebauten Wert als kompromittiert behandeln und rotieren.

Prüfstufe

  • Quellcode aus Source Maps
  • Repo-Zugang (Deep-Scan)

So behebt ihr es

Keinen Ersatzwert setzen: fehlt die Variable, den Start mit einem Fehler abbrechen — und den bisher eingebauten Wert als kompromittiert rotieren.

Eigene App kostenlos prüfen