summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/python
diff options
context:
space:
mode:
authorNarpat Mali <narpat.mali@windriver.com>2023-06-05 11:56:46 +0000
committerSteve Sakoman <steve@sakoman.com>2023-06-14 04:16:59 -1000
commit916105b35242eccea5c819e927d3ba01bd0ba098 (patch)
tree83ac8197943b89507441f8afb71ef4e4e3031b3d /meta/recipes-devtools/python
parentfb53a9ec2b77d9cc5291a74c8e6edd4021833737 (diff)
downloadpoky-916105b35242eccea5c819e927d3ba01bd0ba098.tar.gz
python3-requests: fix for CVE-2023-32681
Requests is a HTTP library. Since Requests 2.3.0, Requests has been leaking Proxy-Authorization headers to destination servers when redirected to an HTTPS endpoint. This is a product of how we use `rebuild_proxies` to reattach the `Proxy-Authorization` header to requests. For HTTP connections sent through the tunnel, the proxy will identify the header in the request itself and remove it prior to forwarding to the destination server. However when sent over HTTPS, the `Proxy-Authorization` header must be sent in the CONNECT request as the proxy has no visibility into the tunneled request. This results in Requests forwarding proxy credentials to the destination server unintentionally, allowing a malicious actor to potentially exfiltrate sensitive information. This issue has been patched in version 2.31.0. Reference: https://github.com/advisories/GHSA-j8r2-6x86-q33q (From OE-Core rev: e806c625d9a7eb08079a3268d2d8b20b582d0b6c) Signed-off-by: Narpat Mali <narpat.mali@windriver.com> Signed-off-by: Steve Sakoman <steve@sakoman.com>
Diffstat (limited to 'meta/recipes-devtools/python')
-rw-r--r--meta/recipes-devtools/python/python3-requests/CVE-2023-32681.patch63
-rw-r--r--meta/recipes-devtools/python/python3-requests_2.27.1.bb2
2 files changed, 65 insertions, 0 deletions
diff --git a/meta/recipes-devtools/python/python3-requests/CVE-2023-32681.patch b/meta/recipes-devtools/python/python3-requests/CVE-2023-32681.patch
new file mode 100644
index 0000000000..35b4241bde
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-requests/CVE-2023-32681.patch
@@ -0,0 +1,63 @@
1From cd0128c0becd8729d0f8733bf42fbd333d51f833 Mon Sep 17 00:00:00 2001
2From: Nate Prewitt <nate.prewitt@gmail.com>
3Date: Mon, 5 Jun 2023 09:31:36 +0000
4Subject: [PATCH] Merge pull request from GHSA-j8r2-6x86-q33q
5
6CVE: CVE-2023-32681
7
8Upstream-Status: Backport [https://github.com/psf/requests/commit/74ea7cf7a6a27a4eeb2ae24e162bcc942a6706d5]
9
10Signed-off-by: Narpat Mali <narpat.mali@windriver.com>
11---
12 requests/sessions.py | 4 +++-
13 tests/test_requests.py | 20 ++++++++++++++++++++
14 2 files changed, 23 insertions(+), 1 deletion(-)
15
16diff --git a/requests/sessions.py b/requests/sessions.py
17index 3f59cab..648cffa 100644
18--- a/requests/sessions.py
19+++ b/requests/sessions.py
20@@ -293,7 +293,9 @@ class SessionRedirectMixin(object):
21 except KeyError:
22 username, password = None, None
23
24- if username and password:
25+ # urllib3 handles proxy authorization for us in the standard adapter.
26+ # Avoid appending this to TLS tunneled requests where it may be leaked.
27+ if not scheme.startswith('https') and username and password:
28 headers['Proxy-Authorization'] = _basic_auth_str(username, password)
29
30 return new_proxies
31diff --git a/tests/test_requests.py b/tests/test_requests.py
32index 29b3aca..6a37777 100644
33--- a/tests/test_requests.py
34+++ b/tests/test_requests.py
35@@ -601,6 +601,26 @@ class TestRequests:
36
37 assert sent_headers.get("Proxy-Authorization") == proxy_auth_value
38
39+
40+ @pytest.mark.parametrize(
41+ "url,has_proxy_auth",
42+ (
43+ ('http://example.com', True),
44+ ('https://example.com', False),
45+ ),
46+ )
47+ def test_proxy_authorization_not_appended_to_https_request(self, url, has_proxy_auth):
48+ session = requests.Session()
49+ proxies = {
50+ 'http': 'http://test:pass@localhost:8080',
51+ 'https': 'http://test:pass@localhost:8090',
52+ }
53+ req = requests.Request('GET', url)
54+ prep = req.prepare()
55+ session.rebuild_proxies(prep, proxies)
56+
57+ assert ('Proxy-Authorization' in prep.headers) is has_proxy_auth
58+
59 def test_basicauth_with_netrc(self, httpbin):
60 auth = ('user', 'pass')
61 wrong_auth = ('wronguser', 'wrongpass')
62--
632.40.0
diff --git a/meta/recipes-devtools/python/python3-requests_2.27.1.bb b/meta/recipes-devtools/python/python3-requests_2.27.1.bb
index af52b7caf5..635a6af31f 100644
--- a/meta/recipes-devtools/python/python3-requests_2.27.1.bb
+++ b/meta/recipes-devtools/python/python3-requests_2.27.1.bb
@@ -3,6 +3,8 @@ HOMEPAGE = "http://python-requests.org"
3LICENSE = "Apache-2.0" 3LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658" 4LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
5 5
6SRC_URI += "file://CVE-2023-32681.patch"
7
6SRC_URI[sha256sum] = "68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61" 8SRC_URI[sha256sum] = "68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"
7 9
8inherit pypi setuptools3 10inherit pypi setuptools3