安全策略
LangChain 具有龐大的生態系統,整合了各種外部資源,例如本地和遠端檔案系統、API 和資料庫。這些整合讓開發人員能夠建立多功能的應用程式,結合 LLM 的強大功能以及存取、互動和操作外部資源的能力。
最佳實踐
在建構此類應用程式時,開發人員應記住遵循良好的安全實踐
- 限制權限:將權限範圍明確限定於應用程式的需求。授予廣泛或過度的權限可能會引入重大的安全漏洞。為了避免此類漏洞,請考慮使用唯讀憑證、禁止存取敏感資源、使用沙箱技術(例如在容器內運行)、指定代理配置以控制外部請求等,這些都應根據您的應用程式酌情使用。
- 預期潛在的誤用:正如人類會犯錯一樣,大型語言模型 (LLM) 也會犯錯。始終假設任何系統存取或憑證都可能以其被分配的權限所允許的任何方式使用。例如,如果一對資料庫憑證允許刪除資料,那麼最安全的假設是,任何能夠使用這些憑證的 LLM 實際上都可能刪除資料。
- 縱深防禦:沒有任何安全技術是完美的。微調和良好的鏈設計可以降低,但不能消除大型語言模型 (LLM) 可能犯錯的可能性。最好結合多層次的安全方法,而不是僅依賴任何單一層的防禦來確保安全。例如:同時使用唯讀權限和沙箱,以確保 LLM 只能存取明確指定供其使用的資料。
不這樣做的風險包括但不限於
- 資料損壞或遺失。
- 未經授權存取機密資訊。
- 關鍵資源的效能或可用性受損。
具有緩解策略的範例情境
- 使用者可能會要求有權存取檔案系統的代理刪除不應刪除的檔案,或讀取包含敏感資訊的檔案內容。為了緩解這種情況,請將代理限制為僅使用特定目錄,並且僅允許其讀取或寫入可以安全讀取或寫入的檔案。考慮透過在容器中運行來進一步沙箱化代理。
- 使用者可能會要求有權寫入外部 API 的代理將惡意資料寫入 API,或從該 API 刪除資料。為了緩解這種情況,請為代理提供唯讀 API 金鑰,或將其限制為僅使用已經能夠抵抗此類誤用的端點。
- 使用者可能會要求有權存取資料庫的代理刪除表或變更結構描述。為了緩解這種情況,請將憑證範圍限定於代理需要存取的表,並考慮發出唯讀憑證。
如果您正在建構存取外部資源(如檔案系統、API 或資料庫)的應用程式,請考慮與您公司的安全團隊討論,以確定如何最佳地設計和保護您的應用程式。
報告 OSS 漏洞
LangChain 與 huntr by Protect AI 合作,為我們的開源專案提供賞金計畫。
請透過訪問以下連結報告與 LangChain 開源專案相關的安全漏洞
https://huntr.com/bounties/disclose/
在報告漏洞之前,請先查看
- 以下範圍內目標和範圍外目標。
- langchain-ai/langchain monorepo 結構。
- 上面的最佳實踐,以了解我們認為的安全漏洞與開發人員責任。
範圍內目標
以下套件和儲存庫符合錯誤賞金的資格
- langchain-core
- langchain(請參閱例外情況)
- langchain-community(請參閱例外情況)
- langgraph
- langserve
範圍外目標
huntr 定義的所有範圍外目標以及
- langchain-experimental:此儲存庫用於實驗性程式碼,不符合錯誤賞金的資格(請參閱套件警告),向其報告的錯誤將被標記為有趣或浪費時間並發布,但不附帶賞金。
- 工具:langchain 或 langchain-community 中的工具不符合錯誤賞金的資格。這包括以下目錄
- libs/langchain/langchain/tools
- libs/community/langchain_community/tools
- 請查看最佳實踐以了解更多詳細資訊,但通常工具會與真實世界互動。開發人員應了解其程式碼的安全影響,並對其工具的安全性負責。
- 使用安全注意事項記錄的程式碼。這將根據具體情況決定,但可能不符合賞金資格,因為程式碼已經記錄了開發人員應遵循以確保其應用程式安全的指南。
- 任何 LangSmith 相關的儲存庫或 API(請參閱報告 LangSmith 漏洞)。
報告 LangSmith 漏洞
請透過電子郵件向 security@langchain.dev
報告與 LangSmith 相關的安全漏洞。
- LangSmith 網站:https://smith.langchain.com
- SDK 客戶端:https://github.com/langchain-ai/langsmith-sdk
其他安全考量
對於任何其他安全考量,請透過 security@langchain.dev
與我們聯繫。