{"schema":"threatline.record/2","record":{"id":"CVE-2026-107287","aliases":["GHSA-v36g-jcw9-x7cw","PYSEC-2026-4281","PYSEC-2026-4290"],"summary":"Pydantic AI: Excessive resource use when local web fetching converts nested HTML","details":"### Summary\n\nApplications using Pydantic AI's local web-fetch tool can experience excessive CPU and memory use when it converts attacker-controlled HTML. An agent must fetch the affected page; provider-native web fetching is not affected.\n\n### Details\n\nNested block elements cause HTML-to-Markdown conversion to reprocess accumulated text at each level and can greatly expand the intermediate output. The response-body limit bounds downloaded bytes, while the returned-content limit is applied only after conversion. On current releases, conversion runs in a worker thread but can still consume substantial resources and delay other work in the process. Older releases performed conversion on the event loop.\n\n### Mitigation\n\nUpgrade to a patched release of `pydantic-ai` or `pydantic-ai-slim`. If you cannot upgrade yet, avoid using local web fetching for attacker-controlled HTML.","categories":["Libraries & packages"],"product":"pydantic-ai","vendor":"pydantic","ecosystem":"pip","affected_ranges":[{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-08T17:40:52Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"pip","name":"pydantic-ai"},"range":">= 1.77.0, < 1.107.7"},{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-08T17:40:52Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"pip","name":"pydantic-ai"},"range":">= 2.0.0b1, < 2.52.0"},{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-08T17:40:52Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"pip","name":"pydantic-ai-slim"},"range":">= 1.77.0, < 1.107.7"},{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-08T17:40:52Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"pip","name":"pydantic-ai-slim"},"range":">= 2.0.0b1, < 2.52.0"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-107287","source_modified_at":"2026-10-14T00:58:57.237Z","fetched_at":"2026-10-23T18:45:31.882637Z","product":"pydantic-ai","vendor":"pydantic","versions":[{"version":">= 1.77.0, < 1.107.7","status":"affected"},{"version":">= 2.0.0b1, < 2.52.0","status":"affected"}],"defaultStatus":null},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-107287","source_modified_at":"2026-10-14T00:58:57.237Z","fetched_at":"2026-10-23T18:45:31.882637Z","product":"pydantic-ai-slim","vendor":"pydantic","versions":[{"version":">= 1.77.0, < 1.107.7","status":"affected"},{"version":">= 2.0.0b1, < 2.52.0","status":"affected"}],"defaultStatus":null},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-15T14:56:19.955322184Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"pydantic-ai","ecosystem":"PyPI","purl":"pkg:pypi/pydantic-ai"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.77.0"},{"fixed":"1.107.7"}]}],"versions":["1.100.0","1.101.0","1.102.0","1.103.0","1.104.0","1.105.0","1.106.0","1.107.0","1.107.1","1.107.2","1.107.4","1.107.5","1.107.6","1.77.0","1.78.0","1.79.0","1.80.0","1.81.0","1.82.0","1.83.0","1.84.0","1.84.1","1.85.0","1.85.1","1.86.0","1.86.1","1.87.0","1.88.0","1.89.0","1.89.1","1.90.0","1.91.0","1.92.0","1.93.0","1.94.0","1.95.0","1.95.1","1.96.0","1.96.1","1.97.0","1.98.0","1.99.0"]},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-15T14:56:19.955322184Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"pydantic-ai","ecosystem":"PyPI","purl":"pkg:pypi/pydantic-ai"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0b1"},{"fixed":"2.52.0"}]}],"versions":["2.0.0","2.0.0b1","2.0.0b2","2.0.0b3","2.0.0b4","2.0.0b5","2.0.0b6","2.0.0b7","2.1.0","2.10.0","2.11.0","2.12.0","2.13.0","2.14.0","2.14.1","2.15.0","2.16.0","2.17.0","2.18.0","2.19.0","2.2.0","2.20.0","2.21.0","2.22.0","2.23.0","2.24.0","2.25.0","2.26.0","2.27.0","2.27.1","2.28.0","2.29.0","2.3.0","2.30.0","2.31.0","2.31.1","2.32.0","2.32.1","2.32.2","2.33.0","2.34.0","2.35.0","2.35.1","2.35.3","2.36.0","2.37.0","2.38.0","2.39.0","2.4.0","2.40.0"]},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-15T14:56:19.955322184Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"pydantic-ai-slim","ecosystem":"PyPI","purl":"pkg:pypi/pydantic-ai-slim"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.77.0"},{"fixed":"1.107.7"}]}],"versions":["1.100.0","1.101.0","1.102.0","1.103.0","1.104.0","1.105.0","1.106.0","1.107.0","1.107.1","1.107.2","1.107.4","1.107.5","1.107.6","1.77.0","1.78.0","1.79.0","1.80.0","1.81.0","1.82.0","1.83.0","1.84.0","1.84.1","1.85.0","1.85.1","1.86.0","1.86.1","1.87.0","1.88.0","1.89.0","1.89.1","1.90.0","1.91.0","1.92.0","1.93.0","1.94.0","1.95.0","1.95.1","1.96.0","1.96.1","1.97.0","1.98.0","1.99.0"]},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-15T14:56:19.955322184Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"pydantic-ai-slim","ecosystem":"PyPI","purl":"pkg:pypi/pydantic-ai-slim"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0b1"},{"fixed":"2.52.0"}]}],"versions":["2.0.0","2.0.0b1","2.0.0b2","2.0.0b3","2.0.0b4","2.0.0b5","2.0.0b6","2.0.0b7","2.1.0","2.10.0","2.11.0","2.12.0","2.13.0","2.14.0","2.14.1","2.15.0","2.16.0","2.17.0","2.18.0","2.19.0","2.2.0","2.20.0","2.21.0","2.22.0","2.23.0","2.24.0","2.25.0","2.26.0","2.27.0","2.27.1","2.28.0","2.29.0","2.3.0","2.30.0","2.31.0","2.31.1","2.32.0","2.32.1","2.32.2","2.33.0","2.34.0","2.35.0","2.35.1","2.35.3","2.36.0","2.37.0","2.38.0","2.39.0","2.4.0","2.40.0"]}],"fixed_versions":[{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-08T17:40:52Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"pip","name":"pydantic-ai"},"version":"1.107.7"},{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-08T17:40:52Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"pip","name":"pydantic-ai"},"version":"2.52.0"},{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-08T17:40:52Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"pip","name":"pydantic-ai-slim"},"version":"1.107.7"},{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-08T17:40:52Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"pip","name":"pydantic-ai-slim"},"version":"2.52.0"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-15T14:56:19.955322184Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"pydantic-ai","ecosystem":"PyPI","purl":"pkg:pypi/pydantic-ai"},"version":"1.107.7"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-15T14:56:19.955322184Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"pydantic-ai","ecosystem":"PyPI","purl":"pkg:pypi/pydantic-ai"},"version":"2.52.0"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-15T14:56:19.955322184Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"pydantic-ai-slim","ecosystem":"PyPI","purl":"pkg:pypi/pydantic-ai-slim"},"version":"1.107.7"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-v36g-jcw9-x7cw","source_modified_at":"2026-10-15T14:56:19.955322184Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"pydantic-ai-slim","ecosystem":"PyPI","purl":"pkg:pypi/pydantic-ai-slim"},"version":"2.52.0"}],"cvss":6.5,"severity":"Medium","kev":{"listed":false},"epss":{"probability":0.00277,"percentile":0.19093,"score_date":"2026-10-23"},"published_at":"2026-10-08T15:15:05.417Z","modified_at":"2026-10-15T14:56:19.955322184Z","provenance":[{"source":"GitHub Advisory Database","url":"https://github.com/advisories/GHSA-v36g-jcw9-x7cw","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-08T17:40:52Z"},{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2026-107287","fetched_at":"2026-10-23T18:45:31.882637Z","source_modified_at":"2026-10-14T00:58:57.237Z"},{"source":"OSV","url":"https://osv.dev/vulnerability/GHSA-v36g-jcw9-x7cw","fetched_at":"2026-10-23T18:45:31.882637Z","source_modified_at":"2026-10-15T14:56:19.955322184Z"},{"source":"EPSS","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-107287","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-23"}],"sources":["GitHub Advisory Database","CVE List","OSV","EPSS"],"references":[{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/security/advisories/GHSA-v36g-jcw9-x7cw","tags":["x_refsource_CONFIRM"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/pull/8984","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/pull/8985","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/commit/2b247add4950bef61d352e7ca8aefbd20539180c","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/commit/2fd38792693da00a3ca5412aeffb436787af3545","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/releases/tag/v1.107.7","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/pydantic/pydantic-ai/releases/tag/v2.52.0","tags":["x_refsource_MISC"]},{"url":"https://github.com/advisories/GHSA-v36g-jcw9-x7cw","source":"GitHub Advisory Database"}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","ssvc":{"exploitation":"none","automatable":"no","technical_impact":"partial","assessed_at":"2026-10-14T00:58:47.200664Z"},"classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":"ecosystem","confidence":"heuristic","reviewed":false},"change_timestamp":"2026-10-15T14:56:19.955322184Z","content_hash":"679824f62c0ee2b310e28f3b36ba53c419c2c0f1e9cec37a0440b83e8c9609cc"}}
