redimp / otterwiki

A minimalistic wiki powered by python, markdown and git.
https://otterwiki.com
MIT License
252 stars 23 forks source link

Hardcoded secret key #115

Closed Asterius27 closed 4 months ago

Asterius27 commented 4 months ago

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?

redimp commented 4 months ago

Hello,

The default value is hard coded. It will be overwritten by either a settings.cfg or the environment variable SECRET_KEY. See the documentation here and here.

The recommend way of running An Otter Wiki is the Docker image, there the SECRET_KEY is generated in the entrypoint.sh, but can still be overridden by an environment variable.

In order to make An Otter Wiki more secure, I added a check the the SECRET_KEY is not the default value (see 9646fd4b46356ba2a025986fd9c40584e309c4ed) and that the generate SECRET_KEY is more random (see 5aaa87d).