GHSA-gg84-qgv9-w4pq

Suggest an improvement
Source
https://github.com/advisories/GHSA-gg84-qgv9-w4pq
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2020/05/GHSA-gg84-qgv9-w4pq/GHSA-gg84-qgv9-w4pq.json
JSON Data
https://api.test.osv.dev/v1/vulns/GHSA-gg84-qgv9-w4pq
Aliases
Published
2020-05-20T15:55:47Z
Modified
2024-09-20T22:17:36.910733Z
Severity
  • 6.8 (Medium) CVSS_V3 - CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N CVSS Calculator
  • 6.3 (Medium) CVSS_V4 - CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:N/SI:H/SA:N CVSS Calculator
Summary
CRLF injection in httplib2
Details

Impact

Attacker controlling unescaped part of uri for httplib2.Http.request() could change request headers and body, send additional hidden requests to same server.

Impacts software that uses httplib2 with uri constructed by string concatenation, as opposed to proper urllib building with escaping.

Patches

Problem has been fixed in 0.18.0 Space, CR, LF characters are now quoted before any use. This solution should not impact any valid usage of httplib2 library, that is uri constructed by urllib.

Workarounds

Create URI with urllib.parse family functions: urlencode, urlunsplit.

user_input = " HTTP/1.1\r\ninjected: attack\r\nignore-http:"
-uri = "https://api.server/?q={}".format(user_input)
+uri = urllib.parse.urlunsplit(("https", "api.server", "/v1", urllib.parse.urlencode({"q": user_input}), ""))
http.request(uri)

References

https://cwe.mitre.org/data/definitions/93.html https://docs.python.org/3/library/urllib.parse.html

Thanks to Recar https://github.com/Ciyfly for finding vulnerability and discrete notification.

For more information

If you have any questions or comments about this advisory: * Open an issue in httplib2 * Email current maintainer at 2020-05

Database specific
{
    "nvd_published_at": null,
    "cwe_ids": [
        "CWE-93"
    ],
    "severity": "MODERATE",
    "github_reviewed": true,
    "github_reviewed_at": "2020-05-20T15:55:36Z"
}
References

Affected packages

PyPI / httplib2

Package

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
0.18.0

Affected versions

0.*

0.7.0
0.7.1
0.7.2
0.7.3
0.7.4
0.7.5
0.7.6
0.7.7
0.8
0.9
0.9.1
0.9.2
0.10.3
0.11.0
0.11.1
0.11.3
0.12.0
0.12.1
0.12.3
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.17.0
0.17.1
0.17.2
0.17.3
0.17.4