title: Server-side Request Forgery In Recursive URL Loader
description: 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
problem types: CWE-918 Server-Side Request Forgery (SSRF)
affected:
{
vendor: langchain-ai
product: langchain-ai/langchain
versions:
version: unspecified, lessThan: 0.1.0, status: affected, versionType: custom
}
metrics:
cvssV3_0: [
version: 3.0
attackComplexity: HIGH
attackVector: LOCAL
availabilityImpact: NONE
confidentialityImpact: LOW
integrityImpact: LOW
privilegesRequired: HIGH
scope: CHANGED
userInteraction: REQUIRED
vectorString: CVSS:3.0/AV:L/AC:H/PR:H/UI:R/S:C/C:L/I:L/A:N
baseScore: 3.7
baseSeverity: LOW
]