From 744a07cc0f458446a7843d20522d189b9fe9501e Mon Sep 17 00:00:00 2001 From: alex-clawd Date: Wed, 13 May 2026 13:37:38 -0700 Subject: [PATCH] fix: pin vcr record_mode=none + bump gitpython/langchain-core/urllib3 vulns - test_streaming_properties_from_docs: add record_mode="none" so VCR never falls through to the real OpenAI API; cassette already exists. - gitpython >=3.1.50 (GHSA-mv93-w799-cj2w) - langchain-core >=1.3.1 (GHSA-pjwx-r37v-7724; resolves to 1.3.3) - urllib3 >=2.7.0 (GHSA-qccp-gfcp-xxvc, GHSA-mf9v-mfxr-j63j; 2.6.4 was never released) Co-Authored-By: Claude Sonnet 4.6 --- .../tests/test_streaming_integration.py | 2 +- pyproject.toml | 10 +++-- uv.lock | 39 ++++++++++++------- 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/lib/crewai/tests/test_streaming_integration.py b/lib/crewai/tests/test_streaming_integration.py index f89fe7ff7..3ad41f957 100644 --- a/lib/crewai/tests/test_streaming_integration.py +++ b/lib/crewai/tests/test_streaming_integration.py @@ -89,7 +89,7 @@ class TestStreamingCrewIntegration: result = streaming.result assert result is not None - @pytest.mark.vcr() + @pytest.mark.vcr(record_mode="none") def test_streaming_properties_from_docs( self, researcher: Agent, simple_task: Task ) -> None: diff --git a/pyproject.toml b/pyproject.toml index fa8e0be76..9bb330169 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -185,13 +185,15 @@ exclude-newer = "3 days" # onnxruntime 1.24+ dropped Python 3.10 wheels; cap it so qdrant[fastembed] resolves on 3.10. # fastembed 0.7.x and docling 2.63 cap pillow<12; the removed APIs don't affect them. # langchain-core <1.2.31 has GHSA-926x-3r5x-gfhw and is required by langchain-text-splitters 1.1.2+. +# langchain-core 1.3.0 has GHSA-pjwx-r37v-7724; force 1.3.1+. # langchain-text-splitters <1.1.2 has GHSA-fv5p-p927-qmxr (SSRF bypass in split_text_from_url). # transformers 4.57.6 has CVE-2026-1839; force 5.4+ (docling 2.84 allows huggingface-hub>=1). # cryptography 46.0.6 has CVE-2026-39892; force 46.0.7+. # pypdf <6.10.2 has GHSA-4pxv-j86v-mhcw, GHSA-7gw9-cf7v-778f, GHSA-x284-j5p8-9c5p; force 6.10.2+. # uv <0.11.6 has GHSA-pjjw-68hj-v9mw; force 0.11.6+. # python-multipart <0.0.27 has GHSA-pp6c-gr5w-3c5g (DoS via unbounded multipart headers). -# gitpython <3.1.49 has GHSA-v87r-6q3f-2j67 (newline injection -> RCE via core.hooksPath). +# urllib3 <2.7.0 has GHSA-qccp-gfcp-xxvc and GHSA-mf9v-mfxr-j63j; force 2.7.0+ (2.6.4 was never released). +# gitpython <3.1.50 has GHSA-mv93-w799-cj2w; <3.1.49 has GHSA-v87r-6q3f-2j67 (newline injection -> RCE via core.hooksPath). # langsmith <0.7.31 has GHSA-rr7j-v2q5-chgv (streaming token redaction bypass); force 0.7.31+. # authlib <1.6.11 has GHSA-jj8c-mmj3-mmgv (CSRF bypass in cache-based state storage). # litellm 1.83.8+ hard-pins openai==2.24.0, missing openai.types.responses used by crewai; @@ -201,15 +203,15 @@ override-dependencies = [ "rich>=13.7.1", "onnxruntime<1.24; python_version < '3.11'", "pillow>=12.1.1", - "langchain-core>=1.2.31,<2", + "langchain-core>=1.3.1,<2", "langchain-text-splitters>=1.1.2,<2", - "urllib3>=2.6.3", + "urllib3>=2.7.0", "transformers>=5.4.0; python_version >= '3.10'", "cryptography>=46.0.7", "pypdf>=6.10.2,<7", "uv>=0.11.6,<1", "python-multipart>=0.0.27,<1", - "gitpython>=3.1.49,<4", + "gitpython>=3.1.50,<4", "langsmith>=0.7.33,<0.9", "authlib>=1.6.11", ] diff --git a/uv.lock b/uv.lock index 2e5736c80..70322d948 100644 --- a/uv.lock +++ b/uv.lock @@ -13,7 +13,7 @@ resolution-markers = [ ] [options] -exclude-newer = "2026-05-10T19:29:16.502211987Z" +exclude-newer = "2026-05-10T20:37:20.649349398Z" exclude-newer-span = "P3D" [manifest] @@ -28,8 +28,8 @@ members = [ overrides = [ { name = "authlib", specifier = ">=1.6.11" }, { name = "cryptography", specifier = ">=46.0.7" }, - { name = "gitpython", specifier = ">=3.1.49,<4" }, - { name = "langchain-core", specifier = ">=1.2.31,<2" }, + { name = "gitpython", specifier = ">=3.1.50,<4" }, + { name = "langchain-core", specifier = ">=1.3.1,<2" }, { name = "langchain-text-splitters", specifier = ">=1.1.2,<2" }, { name = "langsmith", specifier = ">=0.7.33,<0.9" }, { name = "onnxruntime", marker = "python_full_version < '3.11'", specifier = "<1.24" }, @@ -39,7 +39,7 @@ overrides = [ { name = "python-multipart", specifier = ">=0.0.27,<1" }, { name = "rich", specifier = ">=13.7.1" }, { name = "transformers", marker = "python_full_version >= '3.10'", specifier = ">=5.4.0" }, - { name = "urllib3", specifier = ">=2.6.3" }, + { name = "urllib3", specifier = ">=2.7.0" }, { name = "uv", specifier = ">=0.11.6,<1" }, ] @@ -2700,14 +2700,14 @@ wheels = [ [[package]] name = "gitpython" -version = "3.1.49" +version = "3.1.50" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "gitdb" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e1/63/210aaa302d6a0a78daa67c5c15bbac2cad361722841278b0209b6da20855/gitpython-3.1.49.tar.gz", hash = "sha256:42f9399c9eb33fc581014bedd76049dfbaf6375aa2a5754575966387280315e1", size = 219367, upload-time = "2026-04-29T00:31:20.478Z" } +sdist = { url = "https://files.pythonhosted.org/packages/33/f6/354ae6491228b5eb40e10d89c4d13c651fe1cf7556e35ebdded50cff57ce/gitpython-3.1.50.tar.gz", hash = "sha256:80da2d12504d52e1f998772dc5baf6e553f8d2fcfe1fcc226c9d9a2ee3372dcc", size = 219798, upload-time = "2026-05-06T04:01:26.571Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/6f/b842bfa6f21d6f87c57f9abf7194225e55279d96d869775e19e9f7236fc5/gitpython-3.1.49-py3-none-any.whl", hash = "sha256:024b0422d7f84d15cd794844e029ffebd4c5d42a7eb9b936b458697ef550a02c", size = 212190, upload-time = "2026-04-29T00:31:18.412Z" }, + { url = "https://files.pythonhosted.org/packages/20/7a/1c6e3562dfd8950adbb11ffbc65d21e7c89d01a6e4f137fa981056de25c5/gitpython-3.1.50-py3-none-any.whl", hash = "sha256:d352abe2908d07355014abdd21ddf798c2a961469239afec4962e9da884858f9", size = 212507, upload-time = "2026-05-06T04:01:23.799Z" }, ] [[package]] @@ -3835,10 +3835,11 @@ wheels = [ [[package]] name = "langchain-core" -version = "1.3.0" +version = "1.3.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsonpatch" }, + { name = "langchain-protocol" }, { name = "langsmith" }, { name = "packaging" }, { name = "pydantic" }, @@ -3847,9 +3848,21 @@ dependencies = [ { name = "typing-extensions" }, { name = "uuid-utils" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/92/fe/20190232d9b513242899dbb0c2bb77e31b4d61e343743adbe90ebc2603d2/langchain_core-1.3.0.tar.gz", hash = "sha256:14a39f528bf459aa3aa40d0a7f7f1bae7520d435ef991ae14a4ceb74d8c49046", size = 860755, upload-time = "2026-04-17T14:51:38.298Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/ae/8b74458fc3850ec3d150eb9f45e857db129dafa801fb5cf173dfc9f8bbf3/langchain_core-1.3.3.tar.gz", hash = "sha256:fa510a5db8efdc0c6ff41c0939fb5c00a0183c11f6b84233e892e3227ff69182", size = 915041, upload-time = "2026-05-05T19:02:36.612Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/e2/dbfa347aa072a6dc4cd38d6f9ebfc730b4c14c258c47f480f4c5c546f177/langchain_core-1.3.0-py3-none-any.whl", hash = "sha256:baf16ee028475df177b9ab8869a751c79406d64a6f12125b93802991b566cced", size = 515140, upload-time = "2026-04-17T14:51:36.274Z" }, + { url = "https://files.pythonhosted.org/packages/1f/01/4771b7ab2af1d1aba5b710bd8f13d9225c609425214b357590a17b01be77/langchain_core-1.3.3-py3-none-any.whl", hash = "sha256:18aae8506f37da7f74398492279a7d6efcee4f8e23c4c41c7af080eeb7ef7bd1", size = 543857, upload-time = "2026-05-05T19:02:34.52Z" }, +] + +[[package]] +name = "langchain-protocol" +version = "0.0.15" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4f/24/9777489d6fbbee64af0c8f96d4f840239c408cf694f3394672807dafc490/langchain_protocol-0.0.15.tar.gz", hash = "sha256:9ab2d11ee73944754f10e037e717098d3a6796f0e58afa9cadda6154e7655ade", size = 5862, upload-time = "2026-05-01T22:30:04.748Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/7a/9c97a7b9cbe4c5dc6a44cdb1545450c28f0c8ce89b9c1f0ee7fbad896263/langchain_protocol-0.0.15-py3-none-any.whl", hash = "sha256:461eb794358f83d5e42635a5797799ffec7b4702314e34edf73ac21e75d3ef79", size = 6982, upload-time = "2026-05-01T22:30:03.877Z" }, ] [[package]] @@ -9392,11 +9405,11 @@ wheels = [ [[package]] name = "urllib3" -version = "2.6.3" +version = "2.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, ] [[package]]