Skip to content
Heist/ feed
Back to feed
Low

Server-side Request Forgery In Recursive URL Loader

Type: advisorySources: OSV

With the following crawler configuration: ```python from bs4 import BeautifulSoup as Soup url = "https://example.com" loader = RecursiveUrlLoader( url=url, max_depth=2, extractor=lambda x: Soup(x, "html.parser").text ) docs = loader.load() ``` An attacker in control of the contents of `https://example.com` could place a malicious HTML file in there with links like "https://example.completely.different/my_file.html" and the crawler would proceed to download that file as well even though `prevent_outside=True`. https://github.com/langchain-ai/langchain/blob/bf0b3cc0b5ade1fb95a5b1b6fa260e99064c2e22/libs/community/langchain_community/document_loaders/recursive_url_loader.py#L51-L51 Resolved in https://github.com/langchain-ai/langchain/pull/15559

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2024-0243
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 00:53 UTC · Revision 1

Source evidence

Server-side Request Forgery In Recursive URL Loader

core-osv · Original source

Published 24 Feb 2024, 17:59 UTC

With the following crawler configuration: ```python from bs4 import BeautifulSoup as Soup url = "https://example.com" loader = RecursiveUrlLoader( url=url, max_depth=2, extractor=lambda x: Soup(x, "html.parser").text ) docs = loader.load() ``` An attacker in control of the contents of `https://example.com` could place a malicious HTML file in there with links like "https://example.completely.different/my_file.html" and the crawler would proceed to download that file as well even though `prevent_outside=True`. https://github.com/langchain-ai/langchain/blob/bf0b3cc0b5ade1fb95a5b1b6fa260e99064c2e22/libs/community/langchain_community/document_loaders/recursive_url_loader.py#L51-L51 Resolved in https://github.com/langchain-ai/langchain/pull/15559

osv:CVE-2024-0243
Complete source record
{
  "id": "808f98a59a8995879d1edc23d9ab8b0f3e70890c4ecf2b7edeb53b8330062a1b",
  "url": "https://osv.dev/vulnerability/CVE-2024-0243",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Server-side Request Forgery In Recursive URL Loader",
    "summary": "With the following crawler configuration: ```python from bs4 import BeautifulSoup as Soup url = \"https://example.com\" loader = RecursiveUrlLoader( url=url, max_depth=2, extractor=lambda x: Soup(x, \"html.parser\").text ) docs = loader.load() ``` An attacker in control of the contents of `https://example.com` could place a malicious HTML file in there with links like \"https://example.completely.different/my_file.html\" and the crawler would proceed to download that file as well even though `prevent_outside=True`. https://github.com/langchain-ai/langchain/blob/bf0b3cc0b5ade1fb95a5b1b6fa260e99064c2e22/libs/community/langchain_community/document_loaders/recursive_url_loader.py#L51-L51 Resolved in https://github.com/langchain-ai/langchain/pull/15559",
    "evidence": "osv:CVE-2024-0243",
    "products": [],
    "severity": "low",
    "structured": {
      "id": "CVE-2024-0243",
      "aliases": [
        "CVE-2024-0243",
        "GHSA-h9j7-5xvc-qhg5",
        "PYSEC-2024-235",
        "PYSEC-2026-1509"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.0/AV:L/AC:H/PR:H/UI:R/S:C/C:L/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/langchain-ai/langchain",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "4ac61670b283897dca3ff9aaba0a5eed80389b3d"
                },
                {
                  "fixed": "bf0b3cc0b5ade1fb95a5b1b6fa260e99064c2e22"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:langchain:langchain:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "0.1.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "range": [
                      {
                        "fixed": "bf0b3cc0b5ade1fb95a5b1b6fa260e99064c2e22"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v0.0.354",
            "v0.0.353",
            "v0.0.352",
            "v0.0.351",
            "v0.0.350",
            "v0.0.349",
            "v0.0.349-rc.2",
            "v0.0.349-rc.1",
            "v0.0.347",
            "v0.0.348",
            "v0.0.346",
            "v0.0.345",
            "v0.0.344",
            "v0.0.343",
            "v0.0.342",
            "v0.0.341",
            "v0.0.339rc3",
            "v0.0.339rc2",
            "v0.0.340",
            "v0.0.339",
            "v0.0.339rc1",
            "v0.0.339rc0",
            "v0.0.338",
            "v0.0.337",
            "v0.0.336",
            "v0.0.335",
            "v0.0.334",
            "v0.0.333",
            "v0.0.332",
            "v0.0.331rc3",
            "v0.0.331rc2",
            "v0.0.331rc1",
            "v0.0.331rc0",
            "v0.0.331",
            "v0.0.330",
            "v0.0.329",
            "v0.0.327",
            "v0.0.326",
            "v0.0.325",
            "v0.0.324",
            "v0.0.323",
            "v0.0.322",
            "v0.0.321",
            "v0.0.320",
            "v0.0.319",
            "v0.0.318",
            "v0.0.317",
            "v0.0.316",
            "v0.0.315",
            "v0.0.314",
            "v0.0.313",
            "v0.0.312",
            "v0.0.311",
            "v0.0.310",
            "v0.0.309",
            "v0.0.308",
            "v0.0.307",
            "v0.0.306",
            "v0.0.305",
            "v0.0.304",
            "v0.0.303",
            "v0.0.302",
            "v0.0.301",
            "v0.0.298",
            "v0.0.300",
            "v0.0.299",
            "v0.0.297",
            "v0.0.296",
            "v0.0.295",
            "v0.0.294",
            "v0.0.293",
            "v0.0.292",
            "v0.0.291",
            "v0.0.290",
            "v0.0.289",
            "v0.0.288",
            "v0.0.287",
            "v0.0.286",
            "v0.0.285",
            "v0.0.284",
            "v0.0.283",
            "v0.0.281",
            "v0.0.279",
            "v0.0.278",
            "v0.0.277",
            "v0.0.276",
            "v0.0.275",
            "v0.0.274",
            "v0.0.273",
            "v0.0.272",
            "v0.0.271",
            "v0.0.270",
            "v0.0.269",
            "v0.0.268",
            "v0.0.267",
            "v0.0.266",
            "v0.0.265",
            "v0.0.264",
            "v0.0.263",
            "v0.0.262",
            "v0.0.261",
            "v0.0.260",
            "v0.0.259",
            "v0.0.258",
            "v0.0.257",
            "v0.0.256",
            "v0.0.255",
            "v0.0.254",
            "v0.0.253",
            "v0.0.252",
            "v0.0.251",
            "v0.0.250",
            "v0.0.249",
            "v0.0.248",
            "v0.0.247",
            "v0.0.245",
            "v0.0.5",
            "v0.0.244",
            "v0.0.4",
            "v0.0.243",
            "v0.0.242",
            "v0.0.2",
            "v0.0.240",
            "v0.0.1",
            "v0.0.240rc4",
            "v0.0.1rc4",
            "v0.0.240rc1",
            "v0.0.240rc0",
            "v0.0.1rc3",
            "v0.0.1rc2",
            "v0.0.1rc1",
            "v0.0.1rc0",
            "v0.0.239",
            "v0.0.238",
            "v0.0.237",
            "v0.0.236",
            "v0.0.235",
            "v0.0.234",
            "v0.0.233",
            "v0.0.232",
            "v0.0.231",
            "v0.0.230",
            "v0.0.229",
            "v0.0.228",
            "v0.0.227",
            "v0.0.226",
            "v0.0.225",
            "v0.0.224",
            "v0.0.223",
            "v0.0.222",
            "v0.0.221",
            "v0.0.220",
            "v0.0.219",
            "v0.0.218",
            "v0.0.217",
            "v0.0.216",
            "v0.0.215",
            "v0.0.214",
            "v0.0.213",
            "v0.0.212",
            "v0.0.211",
            "v0.0.210",
            "v0.0.209",
            "v0.0.208",
            "v0.0.207",
            "v0.0.206",
            "v0.0.205",
            "v0.0.204",
            "v0.0.202",
            "v0.0.201",
            "v0.0.200",
            "v0.0.199",
            "v0.0.198",
            "v0.0.197",
            "v0.0.196",
            "v0.0.195",
            "v0.0.194",
            "v0.0.193",
            "v0.0.192",
            "v0.0.191",
            "v0.0.190",
            "v0.0.189",
            "v0.0.188",
            "v0.0.187",
            "v0.0.186",
            "v0.0.185",
            "v0.0.184",
            "v0.0.183",
            "v0.0.182",
            "v0.0.181",
            "v0.0.180",
            "v0.0.179",
            "v0.0.178",
            "v0.0.177",
            "v0.0.175",
            "v0.0.174",
            "v0.0.173",
            "v0.0.172",
            "v0.0.171",
            "v0.0.170",
            "v0.0.169",
            "v0.0.168",
            "v0.0.167",
            "v0.0.166",
            "v0.0.165",
            "v0.0.164",
            "v0.0.163",
            "v0.0.161",
            "v0.0.162",
            "v0.0.160",
            "v0.0.159",
            "v0.0.158",
            "v0.0.157",
            "v0.0.156",
            "v0.0.155",
            "v0.0.154",
            "v0.0.153",
            "v0.0.152",
            "v0.0.151",
            "v0.0.150",
            "v0.0.149",
            "v0.0.147",
            "v0.0.146",
            "v0.0.145",
            "v0.0.144",
            "v0.0.143",
            "v0.0.142",
            "v0.0.141",
            "v0.0.140",
            "v0.0.139",
            "v0.0.138",
            "v0.0.137",
            "v0.0.136",
            "v0.0.135",
            "v0.0.134",
            "v0.0.133",
            "v0.0.132",
            "v0.0.131",
            "v0.0.130",
            "v0.0.129",
            "v0.0.128",
            "v0.0.127",
            "v0.0.126",
            "v0.0.125",
            "v0.0.124",
            "v0.0.123",
            "v0.0.122",
            "v0.0.121",
            "v0.0.120",
            "v0.0.119",
            "v0.0.118",
            "v0.0.117",
            "v0.0.116",
            "v0.0.115",
            "v0.0.114",
            "v0.0.113",
            "v0.0.112",
            "v0.0.111",
            "v0.0.110",
            "v0.0.109",
            "v0.0.108",
            "v0.0.107",
            "v0.0.106",
            "v0.0.105",
            "v0.0.104",
            "v0.0.103",
            "v0.0.102",
            "v0.0.101",
            "v0.0.100",
            "v0.0.99",
            "v0.0.98",
            "v0.0.97",
            "v0.0.96",
            "v0.0.95",
            "v0.0.94",
            "v0.0.93",
            "v0.0.92",
            "v0.0.91",
            "v0.0.90",
            "v0.0.89",
            "v0.0.88",
            "v0.0.87",
            "v0.0.86",
            "v0.0.85",
            "v0.0.84",
            "v0.0.83",
            "v0.0.82",
            "v0.0.81",
            "v0.0.80",
            "v0.0.79",
            "v0.0.78",
            "v0.0.77",
            "v0.0.76",
            "v0.0.75",
            "v0.0.74",
            "v0.0.73",
            "v0.0.72",
            "v0.0.71",
            "v0.0.70",
            "v0.0.69",
            "v0.0.68",
            "v0.0.67",
            "v0.0.66",
            "v0.0.65",
            "v0.0.64"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-0243.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:24.918519886Z",
      "provider": "osv",
      "references": [
        "https://huntr.com/bounties/370904e7-10ac-40a4-a8d4-e2d16e1ca861",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/0xxx/CVE-2024-0243.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2024-0243",
        "https://github.com/langchain-ai/langchain/commit/bf0b3cc0b5ade1fb95a5b1b6fa260e99064c2e22",
        "https://github.com/langchain-ai/langchain/pull/15559"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-918"
        ],
        "cna_assigner": "@huntr_ai",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/0xxx/CVE-2024-0243.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2024-0243",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 491336,
  "published_at": "2024-02-24T17:59:26.498+00:00"
}