Audit required: Sensitive cookie without `secure` attributePTC-W6003
Cookies set without the secure
flag can be observed by an unauthorized person, leading to a man-in-the-middle attack.
Generally, the production sites redirect any requests that are sent over HTTP to the same URL but on HTTPS.
In this case, make sure that these HTTP requests that are immediately redirected to HTTPS do not carry any cookie that contains sensitive information.
The secure
flag limits cookies to HTTPS traffic only so, the browser will never send secure cookies with requests that are not encrypted.
Bad practice
# The cookie is not secure here:
some_response.set_cookie('sensitive', 'some_value')
Recommended
# The cookie is secure here:
some_response.set_cookie('sensitive', 'some_value', secure=True)
References:
- Secure Cookies
- Security considerations laid down in the Flask Documentation.
- OWASP Top 10:2021 > A02 - Cryptographic Failures
- CWE-314: Missing Encryption of Sensitive Data
- CWE-315: Cleartext Storage of Sensitive Information in a Cookie
- CWE-614: Sensitive Cookie in HTTPS Session Without 'Secure' Attribute
Exceptions:
While this issue mostly makes sense if you're setting a sensitive cookie, DeepSource will flag all the cookies encountered without the secure
flag.
This is to ensure that you are aware about all the cookies set, and avoid false negatives.