Skip to content

StripComments filter contains a regular expression that is vulnerable to ReDOS (Regular Expression Denial of Service)

High severity GitHub Reviewed Published Sep 10, 2021 in andialbrecht/sqlparse • Updated Jan 27, 2023

Package

pip sqlparse (pip)

Affected versions

>= 0.4.0, < 0.4.2

Patched versions

0.4.2

Description

Impact

The formatter function that strips comments from a SQL contains a regular expression that is vulnerable to ReDoS (Regular Expression Denial of Service). The regular expression may cause exponential backtracking on strings containing many repetitions of '\r\n' in SQL comments.

Patches

The issues has been fixed in sqlparse 0.4.2.

Workarounds

Only the formatting feature that removes comments from SQL statements is affected by this regular expression. As a workaround don't use the sqlformat.format function with keyword strip_comments=True or the --strip-comments command line flag when using the sqlformat command line tool.

References

This issue was discovered by GitHub team members @erik-krogh and @yoff. It was found using a CodeQL query which identifies inefficient regular expressions. You can see the results of the query on python-sqlparse by following this link.

For more information

If you have any questions or comments about this advisory:

References

@andialbrecht andialbrecht published to andialbrecht/sqlparse Sep 10, 2021
Reviewed Sep 10, 2021
Published to the GitHub Advisory Database Sep 10, 2021
Published by the National Vulnerability Database Sep 20, 2021
Last updated Jan 27, 2023

Severity

High
7.5
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Weaknesses

CVE ID

CVE-2021-32839

GHSA ID

GHSA-p5w8-wqhj-9hhf

Source code

Credits

Checking history
See something to contribute? Suggest improvements for this vulnerability.