
微軟的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上找到有關此問題的更多資訊和完整的漏洞報告。
發佈留言