快速结论:该报错发生在使用 LangChain 的 SitemapLoader 加载站点地图时,即使设置了 restrict_to_same_domain=True,嵌套的 <sitemap> 条目也会绕过同域限制,导致 SSRF(服务端请求伪造)漏洞。优先排查是否使用了嵌套 sitemap 索引,并检查所有子条目是否经过同域校验。
适用环境:langchain-community 包中的 SitemapLoader 组件;该漏洞在 langchain-community 仓库被归档(2026-05-22)后仍存在,不受 Python 版本或操作系统限制。
最快修复方案:暂无确认的一步修复方案。社区已准备好补丁(对嵌套 <sitemap> 条目在递归抓取前应用与叶子 <url> 相同的 scheme/netloc 校验),但由于仓库已归档,目前没有可合并的官方修复版本。
注意事项:该问题是安全漏洞,影响的是未维护的 langchain-community 包;在官方修复前,建议不要将 SitemapLoader 用于加载可被外部控制的 sitemap 索引,或自行应用社区补丁。
问题场景
用户在 Python 环境中使用 langchain_community.document_loaders.sitemap.SitemapLoader 加载站点地图时,发现设置 restrict_to_same_domain=True 后,攻击者仍可通过嵌套的 <sitemap> 条目让加载器请求内网地址(例如云元数据服务 http://127.0.0.1/latest/meta-data/),从而泄露敏感信息。
报错原文
SSRF via recursive sitemap fetch in `SitemapLoader` — `restrict_to_same_domain` is not enforced on nested `<sitemap>` entries
原因分析
可能原因:SitemapLoader.parse_sitemap() 方法在处理 sitemap 索引文件时,对叶子 <url> 条目会应用 restrict_to_same_domain 过滤跨域地址,但对嵌套的 <sitemap> 条目(约 L194-200)直接递归调用 self.scrape_all([loc.text], "xml"),没有进行任何域检查或内网 IP 防护,导致 aiohttp 客户端可以向任意主机发起 GET 请求。PoC 表明,即使设置了 restrict_to_same_domain=True,内部主机仍会被访问,确认同域限制被绕过。
环境排查
- 确认使用的包:
langchain-community(包含实际的SitemapLoader实现),而非langchain主包(仅含弃用转发 shim)。 - 检查 langchain-community 版本是否已被归档(2026-05-22 后不再维护)。
- 验证本地环境可复现:运行 PoC
poc_sitemap_ssrf.py,预期输出 “SSRF CONFIRMED”。 - 确认是否使用依赖 aiohttp 的异步抓取路径,以及是否配置了代理或自定义 DNS。
解决步骤
- 临时缓解(可优先尝试):避免使用
SitemapLoader加载不可信的 sitemap 索引;如果必须使用,请将输入来源限制为完全可信的域名。 - 应用社区补丁(可优先尝试):参考 himanshu-commits 分支 或直接下载 17e5a21.patch,该补丁对嵌套
条目在scrape_all()前应用与叶子条目相同的 scheme/netloc 校验,并先去除<loc>的空白字符。 - 自行修复:修改
langchain_community/document_loaders/sitemap.py中parse_sitemap()方法,对嵌套<sitemap>条目的<loc>执行与叶子条目相同的域检查逻辑(比较 scheme 和 netloc);注意保留restrict_to_same_domain=False和本地 sitemap(is_local=True)的原有行为。 - 回归验证:对补丁添加两个离线测试:跨域嵌套 sitemap 应被跳过且不进入
scrape_all();同域嵌套 sitemap 应正常被抓取和解析。
验证方法
运行 PoC 脚本,确认输出不再是 “SSRF CONFIRMED”;攻击者提供的嵌套 <loc> 指向内网地址时不再被请求。对于补丁验证,检查日志中是否出现对内部主机的请求,并运行上述两个回归测试以确认行为正确。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


![[langchain-deepseek] Missing `reasoning_content` in request payload when using deepseek-reasoner with tool calling](https://www.chat-gpts.plus/wp-content/uploads/2026/08/34166-e1df8dd1-768x403.jpg)