
微软的NLWeb:概述
2023 年 5 月,在 Build 2025 大会期间,微软推出了一项名为 NLWeb 的创新计划,即“自然语言网络”。该项目旨在促进人工智能代理和网站之间的智能交互,使它们能够通过直接与在线服务互动来执行复杂的任务。
NLWeb 的影响
在参与的公司中,Shopify 和 TripAdvisor 都表示支持这一概念,将 NLWeb 定位为微软所称的“代理网络”的关键组成部分。这一愿景预示着未来人工智能可以自主在线执行一系列任务,从而显著简化用户体验。
发现安全漏洞
然而,NLWeb 框架的安全性引发了广泛担忧。安全研究员关奥南 (Aonan Guan) 与其合作伙伴王磊 (Lei Wang) 在该开源项目的代码库中发现了一个路径遍历漏洞。他们的发现源于对NLWeb GitHub 代码库的检查,特别是一个名为 的文件。 webserver/static_file_handler.py
漏洞技术分析
所发现的缺陷位于特定的代码段中:
# The vulnerable code snippet safe_path = os.path.normpath(path.lstrip('/'))
possible_roots = [ APP_ROOT, os.path.join(APP_ROOT, ‘site’, ‘wwwroot’), ‘/home/site/wwwroot’, os.environ.get(‘HOME’, ”), ]
# 后面的代码…full_path = os.path.join(root, safe_path)
该代码片段的第一行看似无害;旨在通过消除不必要的分隔符和上级引用来规范化路径,该过程记录在官方 Python 文档中。 os.path.normpath()
漏洞的影响
虽然此功能很有用,但它也带来了安全漏洞。据关先生称,它无法限制用户利用目录遍历技术(例如序列)来访问目标网页目录之外的内容。 ../
为了验证该问题,Guan 在 上设置了一个本地服务器配置。通过执行 命令,他成功检索了 的内容,这是包含用户帐户详细信息的 UNIX 系统上的重要信息。 0.0.0.0:8000
curl "http://localhost:8000/static/..%2f..%2f..%2fetc/passwd"
/etc/passwd
此外,Guan 还能够访问其他敏感文件,包括项目文件。由于该文件包含 API 密钥等敏感凭证,因此本应始终保持机密。运行以下命令进一步证明了这一点。 .env
curl "http://localhost:8000/static/..%2f..%2f..%2fUsers//NLWeb/code/.env"
微软的回应和建议
关先生于5月28日报告了这一发现,微软当天就承认了这一问题,并在48小时内实施了修复。解决方案涉及几项关键措施:
- 对路径中的任何实例进行初始过滤,以对抗潜在的目录遍历尝试。
..
- 验证所请求的文件是否具有可接受的扩展名,包括.html、.css 和.json 等格式。
- 解析绝对路径以确认它位于授权的根目录中,从而防止任何未经授权的访问。
鉴于此事件,关先生强调立即更新所有NLWeb实例的重要性。他强调,随着代理网络概念的扩展,新的漏洞也随之暴露,尤其是自然语言处理如果不加以严格管理,可能会无意中解释恶意文件路径或命令。
您可以在Neowin上找到有关此问题的更多信息和完整的漏洞报告。
发表回复