Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix sqlalchemy password leakage #408

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

yurisich
Copy link

Issue #, if available:

No issue created.

Description of changes:

I attempted to add tests to demonstrate this, but the testing.postgres dependency uses the default username without a password in a manner that I couldn't easily override. If you are interested in setting up a reproduction case, use a password that contains the character # in it and send the generated sqlalchemy segments to AWS. The name of the segment will include the password in it.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Switches away from using `str(engine_instance.engine)` for rendering
connection strings, in order to prevent passwords containing
characters such as `#` from leaking. The name of the segment will
contain the password if this character is used, likely others as well.

See: https://bugs.python.org/issue18140 and encode/database#145

The code in question is here:

sqlalchemy/sqlalchemy/blob/aea28a9/lib/sqlalchemy/engine/url.py#L597-L630
This uses the same technique of extracting the engine url from the
correctly sanitized `__str__()` representation of the engine that
the `ext.sqlalchemy.util.decorators.py` module relies on, which
does not leak passwords in manner outlined in 9f22fff.
@yurisich yurisich requested a review from a team as a code owner September 26, 2023 19:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant