Hardcoded secret key
Closed this issue · 2 comments
Hello,
We are a cybersecurity research group from the CISPA Helmholtz Center for Information Security and Ca’ Foscari University of Venice. We recently conducted an analysis of the session management used in your web application as part of our research. We have discovered a security vulnerability that we believe requires your attention.
Vulnerability Description:
After our analysis, we have identified that your application is using a hard-coded secret key that is leaked through GitHub. If operators who install your web application do not change this secret key, they are vulnerable to cookie forgeries. The cookie forgery attack allows an attacker, knowing the key used to sign a cookie, to forge new arbitrary cookies to impersonate and take over other accounts.
link to the relevant code part
Recommendation for Mitigation:
To address this vulnerability and enhance the security posture of your web application, we highly recommend setting the secret key from an environment variable. If the environment file is not shared on GitHub then this would force operators of your application to create their own key upon installation, forcing them to set their own secure secret key.
We hope this notification helps improve your security. Can you take a look into the relevant code parts and comment on the issue?
Hi there and welcome to GitHub! Thank you for the attention.
I guess this is an automated message you sent to several repos, but to answer the obvious, the key you point to
SECRET_KEY = "this is not secret..."
is a demo config placeholder. We are reasonably certain any live instance of the software would have their own modified key; at least our local ones certainly do.
We encourage admins to change it in the setup instructions (https://clinical-genomics.github.io/scout/admin-guide/server/#config) and the overall README.
When I have your attention, maybe you could explain why the base library doesn't just do session specific secrets, persisted on the app server side? This is not a fully shared key after all.
Ok, thank you again for the attention. Closing this for now, but please dont hesitate to reply/reopen later.