{"vulnerability": "cve-2025-67221", "sightings": [{"uuid": "e3ac5dbf-7ca9-43ad-90e8-44ab09d70597", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2025-67221", "type": "seen", "source": "https://bsky.app/profile/thehackerwire.bsky.social/post/3md2ltkorzi2g", "content": "", "creation_timestamp": "2026-01-23T01:55:20.595165Z"}, {"uuid": "dce58490-eda8-4960-abe7-98e15fa1ba96", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2025-67221", "type": "seen", "source": "https://gist.github.com/lesnargitonga/ded68f9d3d270cc386fe7c2227970ebc", "content": "{\"dependencies\": [{\"name\": \"africastalking\", \"version\": \"1.2.9\", \"vulns\": []}, {\"name\": \"aioboto3\", \"version\": \"13.1.1\", \"vulns\": []}, {\"name\": \"aiobotocore\", \"version\": \"2.13.1\", \"vulns\": []}, {\"name\": \"aiofiles\", \"version\": \"25.1.0\", \"vulns\": []}, {\"name\": \"aiohappyeyeballs\", \"version\": \"2.6.1\", \"vulns\": []}, {\"name\": \"aiohttp\", \"version\": \"3.13.5\", \"vulns\": []}, {\"name\": \"aiohttp-retry\", \"version\": \"2.9.1\", \"vulns\": []}, {\"name\": \"aioitertools\", \"version\": \"0.13.0\", \"vulns\": []}, {\"name\": \"aiosignal\", \"version\": \"1.4.0\", \"vulns\": []}, {\"name\": \"aiosqlite\", \"version\": \"0.20.0\", \"vulns\": []}, {\"name\": \"alembic\", \"version\": \"1.13.3\", \"vulns\": []}, {\"name\": \"annotated-doc\", \"version\": \"0.0.4\", \"vulns\": []}, {\"name\": \"annotated-types\", \"version\": \"0.7.0\", \"vulns\": []}, {\"name\": \"anyio\", \"version\": \"4.13.0\", \"vulns\": []}, {\"name\": \"asyncpg\", \"version\": \"0.29.0\", \"vulns\": []}, {\"name\": \"attrs\", \"version\": \"26.1.0\", \"vulns\": []}, {\"name\": \"authlib\", \"version\": \"1.7.2\", \"vulns\": []}, {\"name\": \"bandit\", \"version\": \"1.9.4\", \"vulns\": []}, {\"name\": \"bcrypt\", \"version\": \"4.2.0\", \"vulns\": []}, {\"name\": \"boolean-py\", \"version\": \"5.0\", \"vulns\": []}, {\"name\": \"boto3\", \"version\": \"1.34.131\", \"vulns\": []}, {\"name\": \"botocore\", \"version\": \"1.34.131\", \"vulns\": []}, {\"name\": \"cachecontrol\", \"version\": \"0.14.4\", \"vulns\": []}, {\"name\": \"cachetools\", \"version\": \"5.5.2\", \"vulns\": []}, {\"name\": \"certifi\", \"version\": \"2026.4.22\", \"vulns\": []}, {\"name\": \"cffi\", \"version\": \"2.0.0\", \"vulns\": []}, {\"name\": \"charset-normalizer\", \"version\": \"3.4.7\", \"vulns\": []}, {\"name\": \"click\", \"version\": \"8.4.0\", \"vulns\": []}, {\"name\": \"cryptography\", \"version\": \"48.0.0\", \"vulns\": []}, {\"name\": \"cyclonedx-python-lib\", \"version\": \"11.7.0\", \"vulns\": []}, {\"name\": \"dataclasses-json\", \"version\": \"0.6.7\", \"vulns\": []}, {\"name\": \"defusedxml\", \"version\": \"0.7.1\", \"vulns\": []}, {\"name\": \"deprecated\", \"version\": \"1.3.1\", \"vulns\": []}, {\"name\": \"distro\", \"version\": \"1.9.0\", \"vulns\": []}, {\"name\": \"dnspython\", \"version\": \"2.8.0\", \"vulns\": []}, {\"name\": \"dparse\", \"version\": \"0.6.4\", \"vulns\": []}, {\"name\": \"email-validator\", \"version\": \"2.2.0\", \"vulns\": []}, {\"name\": \"fastapi\", \"version\": \"0.115.0\", \"vulns\": []}, {\"name\": \"filelock\", \"version\": \"3.29.0\", \"vulns\": []}, {\"name\": \"filetype\", \"version\": \"1.2.0\", \"vulns\": []}, {\"name\": \"frozenlist\", \"version\": \"1.8.0\", \"vulns\": []}, {\"name\": \"google-ai-generativelanguage\", \"version\": \"0.6.15\", \"vulns\": []}, {\"name\": \"google-api-core\", \"version\": \"2.30.3\", \"vulns\": []}, {\"name\": \"google-api-python-client\", \"version\": \"2.146.0\", \"vulns\": []}, {\"name\": \"google-auth\", \"version\": \"2.53.0\", \"vulns\": []}, {\"name\": \"google-auth-httplib2\", \"version\": \"0.4.0\", \"vulns\": []}, {\"name\": \"google-auth-oauthlib\", \"version\": \"1.2.1\", \"vulns\": []}, {\"name\": \"google-genai\", \"version\": \"1.75.0\", \"vulns\": []}, {\"name\": \"google-generativeai\", \"version\": \"0.8.6\", \"vulns\": []}, {\"name\": \"googleapis-common-protos\", \"version\": \"1.75.0\", \"vulns\": []}, {\"name\": \"greenlet\", \"version\": \"3.5.0\", \"vulns\": []}, {\"name\": \"groq\", \"version\": \"0.37.1\", \"vulns\": []}, {\"name\": \"grpcio\", \"version\": \"1.80.0\", \"vulns\": []}, {\"name\": \"grpcio-status\", \"version\": \"1.71.2\", \"vulns\": []}, {\"name\": \"h11\", \"version\": \"0.16.0\", \"vulns\": []}, {\"name\": \"httpcore\", \"version\": \"1.0.9\", \"vulns\": []}, {\"name\": \"httplib2\", \"version\": \"0.31.2\", \"vulns\": []}, {\"name\": \"httptools\", \"version\": \"0.7.1\", \"vulns\": []}, {\"name\": \"httpx\", \"version\": \"0.28.1\", \"vulns\": []}, {\"name\": \"httpx-sse\", \"version\": \"0.4.3\", \"vulns\": []}, {\"name\": \"idna\", \"version\": \"3.15\", \"vulns\": []}, {\"name\": \"iniconfig\", \"version\": \"2.3.0\", \"vulns\": []}, {\"name\": \"jinja2\", \"version\": \"3.1.6\", \"vulns\": []}, {\"name\": \"jiter\", \"version\": \"0.14.0\", \"vulns\": []}, {\"name\": \"jmespath\", \"version\": \"1.1.0\", \"vulns\": []}, {\"name\": \"joblib\", \"version\": \"1.5.3\", \"vulns\": []}, {\"name\": \"joserfc\", \"version\": \"1.6.8\", \"vulns\": []}, {\"name\": \"jsonpatch\", \"version\": \"1.33\", \"vulns\": []}, {\"name\": \"jsonpointer\", \"version\": \"3.1.1\", \"vulns\": []}, {\"name\": \"langchain\", \"version\": \"1.3.2\", \"vulns\": []}, {\"name\": \"langchain-classic\", \"version\": \"1.0.7\", \"vulns\": []}, {\"name\": \"langchain-community\", \"version\": \"0.4.2\", \"vulns\": []}, {\"name\": \"langchain-core\", \"version\": \"1.4.0\", \"vulns\": []}, {\"name\": \"langchain-google-genai\", \"version\": \"4.2.3\", \"vulns\": []}, {\"name\": \"langchain-groq\", \"version\": \"1.1.2\", \"vulns\": []}, {\"name\": \"langchain-ollama\", \"version\": \"1.1.0\", \"vulns\": []}, {\"name\": \"langchain-openai\", \"version\": \"1.2.2\", \"vulns\": []}, {\"name\": \"langchain-protocol\", \"version\": \"0.0.15\", \"vulns\": []}, {\"name\": \"langchain-text-splitters\", \"version\": \"1.1.2\", \"vulns\": []}, {\"name\": \"langgraph\", \"version\": \"1.2.2\", \"vulns\": []}, {\"name\": \"langgraph-checkpoint\", \"version\": \"4.1.1\", \"vulns\": []}, {\"name\": \"langgraph-prebuilt\", \"version\": \"1.1.0\", \"vulns\": []}, {\"name\": \"langgraph-sdk\", \"version\": \"0.3.15\", \"vulns\": []}, {\"name\": \"langsmith\", \"version\": \"0.8.6\", \"vulns\": []}, {\"name\": \"license-expression\", \"version\": \"30.4.4\", \"vulns\": []}, {\"name\": \"limits\", \"version\": \"5.8.0\", \"vulns\": []}, {\"name\": \"mako\", \"version\": \"1.3.12\", \"vulns\": []}, {\"name\": \"markdown-it-py\", \"version\": \"4.2.0\", \"vulns\": []}, {\"name\": \"markupsafe\", \"version\": \"3.0.3\", \"vulns\": []}, {\"name\": \"marshmallow\", \"version\": \"3.26.2\", \"vulns\": []}, {\"name\": \"mdurl\", \"version\": \"0.1.2\", \"vulns\": []}, {\"name\": \"msgpack\", \"version\": \"1.1.2\", \"vulns\": []}, {\"name\": \"multidict\", \"version\": \"6.7.1\", \"vulns\": []}, {\"name\": \"mypy-extensions\", \"version\": \"1.1.0\", \"vulns\": []}, {\"name\": \"nltk\", \"version\": \"3.9.4\", \"vulns\": []}, {\"name\": \"numpy\", \"version\": \"1.26.4\", \"vulns\": []}, {\"name\": \"oauthlib\", \"version\": \"3.3.1\", \"vulns\": []}, {\"name\": \"ollama\", \"version\": \"0.6.2\", \"vulns\": []}, {\"name\": \"openai\", \"version\": \"2.38.0\", \"vulns\": []}, {\"name\": \"orjson\", \"version\": \"3.11.5\", \"vulns\": [{\"id\": \"CVE-2025-67221\", \"fix_versions\": [\"3.11.6\"], \"aliases\": [\"GHSA-hx9q-6w63-j58v\"], \"description\": \"The orjson.dumps function in orjson before 3.11.6 does not limit recursion for deeply nested JSON documents.\"}]}, {\"name\": \"ormsgpack\", \"version\": \"1.12.2\", \"vulns\": []}, {\"name\": \"packageurl-python\", \"version\": \"0.17.6\", \"vulns\": []}, {\"name\": \"packaging\", \"version\": \"24.2\", \"vulns\": []}, {\"name\": \"passlib\", \"version\": \"1.7.4\", \"vulns\": []}, {\"name\": \"pgvector\", \"version\": \"0.3.4\", \"vulns\": []}, {\"name\": \"pip\", \"version\": \"26.1.1\", \"vulns\": []}, {\"name\": \"pip-api\", \"version\": \"0.0.34\", \"vulns\": []}, {\"name\": \"pip-audit\", \"version\": \"2.10.0\", \"vulns\": []}, {\"name\": \"pip-requirements-parser\", \"version\": \"32.0.1\", \"vulns\": []}, {\"name\": \"platformdirs\", \"version\": \"4.9.6\", \"vulns\": []}, {\"name\": \"pluggy\", \"version\": \"1.6.0\", \"vulns\": []}, {\"name\": \"prometheus-client\", \"version\": \"0.25.0\", \"vulns\": []}, {\"name\": \"propcache\", \"version\": \"0.5.2\", \"vulns\": []}, {\"name\": \"proto-plus\", \"version\": \"1.28.0\", \"vulns\": []}, {\"name\": \"protobuf\", \"version\": \"5.29.6\", \"vulns\": []}, {\"name\": \"psycopg\", \"version\": \"3.2.3\", \"vulns\": []}, {\"name\": \"psycopg-binary\", \"version\": \"3.2.3\", \"vulns\": []}, {\"name\": \"py-serializable\", \"version\": \"2.1.0\", \"vulns\": []}, {\"name\": \"pyasn1\", \"version\": \"0.6.3\", \"vulns\": []}, {\"name\": \"pyasn1-modules\", \"version\": \"0.4.2\", \"vulns\": []}, {\"name\": \"pycparser\", \"version\": \"3.0\", \"vulns\": []}, {\"name\": \"pydantic\", \"version\": \"2.9.2\", \"vulns\": []}, {\"name\": \"pydantic-core\", \"version\": \"2.23.4\", \"vulns\": []}, {\"name\": \"pydantic-settings\", \"version\": \"2.14.1\", \"vulns\": []}, {\"name\": \"pygments\", \"version\": \"2.20.0\", \"vulns\": []}, {\"name\": \"pyjwt\", \"version\": \"2.12.0\", \"vulns\": []}, {\"name\": \"pyparsing\", \"version\": \"3.3.2\", \"vulns\": []}, {\"name\": \"pytest\", \"version\": \"8.3.3\", \"vulns\": [{\"id\": \"CVE-2025-71176\", \"fix_versions\": [\"9.0.3\"], \"aliases\": [\"GHSA-6w46-j5rx-g56g\"], \"description\": \"pytest through 9.0.2 on UNIX relies on directories with the `/tmp/pytest-of-{user}` name pattern, which allows local users to cause a denial of service or possibly gain privileges.\"}]}, {\"name\": \"pytest-asyncio\", \"version\": \"0.24.0\", \"vulns\": []}, {\"name\": \"pytest-mock\", \"version\": \"3.14.0\", \"vulns\": []}, {\"name\": \"python-dateutil\", \"version\": \"2.9.0.post0\", \"vulns\": []}, {\"name\": \"python-dotenv\", \"version\": \"1.2.2\", \"vulns\": []}, {\"name\": \"python-multipart\", \"version\": \"0.0.27\", \"vulns\": []}, {\"name\": \"pyyaml\", \"version\": \"6.0.3\", \"vulns\": []}, {\"name\": \"redis\", \"version\": \"5.0.8\", \"vulns\": []}, {\"name\": \"regex\", \"version\": \"2026.5.9\", \"vulns\": []}, {\"name\": \"requests\", \"version\": \"2.34.2\", \"vulns\": []}, {\"name\": \"requests-oauthlib\", \"version\": \"2.0.0\", \"vulns\": []}, {\"name\": \"requests-toolbelt\", \"version\": \"1.0.0\", \"vulns\": []}, {\"name\": \"respx\", \"version\": \"0.21.1\", \"vulns\": []}, {\"name\": \"rich\", \"version\": \"15.0.0\", \"vulns\": []}, {\"name\": \"rsa\", \"version\": \"4.9.1\", \"vulns\": []}, {\"name\": \"ruamel-yaml\", \"version\": \"0.19.1\", \"vulns\": []}, {\"name\": \"s3transfer\", \"version\": \"0.10.4\", \"vulns\": []}, {\"name\": \"safety\", \"version\": \"3.8.0\", \"vulns\": []}, {\"name\": \"safety-schemas\", \"version\": \"0.0.16\", \"vulns\": []}, {\"name\": \"schema\", \"version\": \"0.7.8\", \"vulns\": []}, {\"name\": \"sentry-sdk\", \"version\": \"2.18.0\", \"vulns\": []}, {\"name\": \"shellingham\", \"version\": \"1.5.4\", \"vulns\": []}, {\"name\": \"six\", \"version\": \"1.17.0\", \"vulns\": []}, {\"name\": \"slowapi\", \"version\": \"0.1.9\", \"vulns\": []}, {\"name\": \"sniffio\", \"version\": \"1.3.1\", \"vulns\": []}, {\"name\": \"sortedcontainers\", \"version\": \"2.4.0\", \"vulns\": []}, {\"name\": \"sqlalchemy\", \"version\": \"2.0.35\", \"vulns\": []}, {\"name\": \"starlette\", \"version\": \"0.38.6\", \"vulns\": [{\"id\": \"PYSEC-2026-161\", \"fix_versions\": [\"1.0.1\"], \"aliases\": [\"GHSA-86qp-5c8j-p5mr\"], \"description\": \"Starlette reconstructs the requested URL based on the HTTP Host request header and requested path, but does not perform any validation of the Host header value. This allows attackers to inject paths into the host part, prepending the actual path. However, routing in Starlette is based on the actual request path. This inconsistent interpretation of HTTP requests may lead to issues such as authentication bypass when the authentication depends on the reconstructed URL\\u2019s path.\"}, {\"id\": \"CVE-2024-47874\", \"fix_versions\": [\"0.40.0\"], \"aliases\": [\"GHSA-f96h-pmfr-66vw\"], \"description\": \"### Summary Starlette treats `multipart/form-data` parts without a `filename` as text form fields and buffers those in byte strings with no size limit. This allows an attacker to upload arbitrary large form fields and cause Starlette to both slow down significantly due to excessive memory allocations and copy operations, and also consume more and more memory until the server starts swapping and grinds to a halt, or the OS terminates the server process with an OOM error. Uploading multiple such requests in parallel may be enough to render a service practically unusable, even if reasonable request size limits are enforced by a reverse proxy in front of Starlette.  ### PoC  ```python from starlette.applications import Starlette from starlette.routing import Route  async def poc(request):     async with request.form():         pass  app = Starlette(routes=[     Route('/', poc, methods=[\\\"POST\\\"]), ]) ```  ```sh curl http://localhost:8000 -F 'big= bool:         # check for SpooledTemporaryFile._rolled         rolled_to_disk = getattr(self.file, \\\"_rolled\\\", True)         return not rolled_to_disk      async def write(self, data: bytes) -&gt; None:         if self.size is not None:             self.size += len(data)          if self._in_memory:             self.file.write(data)         else:             await run_in_threadpool(self.file.write, data) ```  I have already created a PR which fixes the problem: https://github.com/encode/starlette/pull/2962   ### PoC See the discussion [here](https://github.com/encode/starlette/discussions/2927#discussioncomment-13721403) for steps on how to reproduce.  ### Impact To be honest, very low and not many users will be impacted. Parsing large forms is already CPU intensive so the additional IO block doesn't slow down `starlette` that much on systems with modern HDDs/SSDs. If someone is running on tape they might see a greater impact.\"}]}, {\"name\": \"stevedore\", \"version\": \"5.8.0\", \"vulns\": []}, {\"name\": \"structlog\", \"version\": \"24.4.0\", \"vulns\": []}, {\"name\": \"tenacity\", \"version\": \"8.5.0\", \"vulns\": []}, {\"name\": \"tiktoken\", \"version\": \"0.7.0\", \"vulns\": []}, {\"name\": \"tomli\", \"version\": \"2.4.1\", \"vulns\": []}, {\"name\": \"tomli-w\", \"version\": \"1.2.0\", \"vulns\": []}, {\"name\": \"tomlkit\", \"version\": \"0.15.0\", \"vulns\": []}, {\"name\": \"tqdm\", \"version\": \"4.67.3\", \"vulns\": []}, {\"name\": \"truststore\", \"version\": \"0.10.4\", \"vulns\": []}, {\"name\": \"twilio\", \"version\": \"9.3.2\", \"vulns\": []}, {\"name\": \"typer\", \"version\": \"0.25.1\", \"vulns\": []}, {\"name\": \"typing-extensions\", \"version\": \"4.15.0\", \"vulns\": []}, {\"name\": \"typing-inspect\", \"version\": \"0.9.0\", \"vulns\": []}, {\"name\": \"typing-inspection\", \"version\": \"0.4.2\", \"vulns\": []}, {\"name\": \"uritemplate\", \"version\": \"4.2.0\", \"vulns\": []}, {\"name\": \"urllib3\", \"version\": \"2.7.0\", \"vulns\": []}, {\"name\": \"uuid-utils\", \"version\": \"0.15.0\", \"vulns\": []}, {\"name\": \"uvicorn\", \"version\": \"0.30.6\", \"vulns\": []}, {\"name\": \"uvloop\", \"version\": \"0.22.1\", \"vulns\": []}, {\"name\": \"watchfiles\", \"version\": \"1.1.1\", \"vulns\": []}, {\"name\": \"webrtcvad-wheels\", \"version\": \"2.0.14\", \"vulns\": []}, {\"name\": \"websockets\", \"version\": \"16.0\", \"vulns\": []}, {\"name\": \"wrapt\", \"version\": \"1.17.3\", \"vulns\": []}, {\"name\": \"xxhash\", \"version\": \"3.7.0\", \"vulns\": []}, {\"name\": \"yarl\", \"version\": \"1.23.0\", \"vulns\": []}, {\"name\": \"zstandard\", \"version\": \"0.25.0\", \"vulns\": []}], \"fixes\": []}\n\n\n# Security audit summary \u2014 branch: security/major-upgrades-finalize\n\nRun date: 2026-05-28\n\nOverview:\n\n- Bandit: 50 low-severity findings reported (no medium/high). See `logs/security/bandit.json` for details.\n- pip-audit: Found 5 known vulnerabilities across 3 packages. Notable packages:\n  - `orjson` \u2014 CVE-2025-67221 (upgrade to &gt;= 3.11.6)\n  - `pytest` \u2014 CVE-2025-71176 (upgrade to &gt;= 9.0.3)\n  - `starlette` \u2014 several advisories (see `logs/security/pip_audit.json`) with recommended fix versions.\n- safety: invocation failed due to CLI flag mismatch; see `logs/security/safety.json` for raw output.\n\nRecommendations / next steps:\n\n1. Prioritize fixing dependency CVEs: bump `orjson` and `starlette` (and evaluate `pytest` upgrade impact in CI).\n2. Triage Bandit low-severity findings and address obvious issues (input validation, use of assert, etc.).\n3. Fix `scripts/security_audit.sh` safety invocation (remove `--full-report` or use supported flags) so `safety` can produce JSON output.\n4. Add automated dependency upgrade PRs (dependabot or scripted pin bump) and run CI test matrix.\n\nRaw scan outputs attached as a private gist and in `logs/security/` in JSON format.\n", "creation_timestamp": "2026-05-28T19:29:34.000000Z"}, {"uuid": "17d4322a-731d-42c7-9db6-e5c9555d8935", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2025-67221", "type": "seen", "source": "https://gist.github.com/alon710/cee85c1be84448547c73b283504cccd4", "content": "", "creation_timestamp": "2026-01-24T21:22:38.000000Z"}, {"uuid": "5b72ea51-f250-4d26-a246-f3f45f85fdd8", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2025-67221", "type": "seen", "source": "https://gist.github.com/alon710/0c47484899a12350c8bad1ed6d2c9a2e", "content": "", "creation_timestamp": "2026-01-24T22:17:31.000000Z"}, {"uuid": "fea2e459-7d82-498a-84a4-7a8381792ca3", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2025-67221", "type": "seen", "source": "https://gist.github.com/alon710/ccf28ffef170d8da1ed890bd93dddf00", "content": "", "creation_timestamp": "2026-01-24T22:17:28.000000Z"}]}