Zum Inhalt springen

Prüfregel · RSC-SEC-057

Geheimnis über öffentliches Env-Präfix exponiert

SicherheitSchweregrad: HochCWE-798

Findet Variablen mit öffentlichem Bundler-Präfix (`NEXT_PUBLIC_`, `VITE_`, `REACT_APP_`, `PUBLIC_`, `EXPO_PUBLIC_` …), deren Name auf ein Geheimnis hindeutet — solche Werte landen fest im Client-Bundle.

Warum das zählt

Jeder Bundler hat ein Präfix, das „darf in den Browser“ bedeutet: `NEXT_PUBLIC_` bei Next.js, `VITE_` bei Vite (und damit bei Lovable und Bolt), `REACT_APP_` bei Create React App. Werte mit diesem Präfix werden beim Build fest in das JavaScript eingesetzt, das jeder Besucher herunterlädt.

Trägt so eine Variable dem Namen nach ein Geheimnis — `VITE_SUPABASE_SERVICE_ROLE_KEY`, `NEXT_PUBLIC_STRIPE_SECRET` —, ist das Geheimnis veröffentlicht. Der Name allein genügt als Nachweis; der Wert muss dafür nicht mehr gefunden werden.

Aus Source Maps ist das besonders gut sichtbar: Der Bundler ersetzt den Zugriff beim Build durch den Wert, der NAME verschwindet also aus dem Bundle — im rekonstruierten Originalquellcode steht er noch. Fix: Präfix entfernen, Zugriff über einen Server-Endpunkt kapseln und den Schlüssel rotieren.

Prüfstufe

Quellcode aus Source MapsRepo-Zugang (Deep-Scan)

So behebt ihr es

Präfix entfernen, Wert serverseitig nutzen und das Geheimnis rotieren.

Eigene App kostenlos prüfen