安全策略
LangChain 拥有一个庞大的生态系统,集成了各种外部资源,如本地和远程文件系统、API 和数据库。这些集成允许开发者创建多功能应用程序,将大型语言模型(LLM)的强大功能与访问、交互和操作外部资源的能力结合起来。
最佳实践
在构建此类应用程序时,开发者应牢记遵循良好的安全实践
- 限制权限: 将权限范围限定在应用程序所需的功能上。授予宽泛或过度的权限可能会引入重大的安全漏洞。为避免此类漏洞,请考虑根据您的应用程序适当使用只读凭据、禁止访问敏感资源、使用沙盒技术(例如在容器中运行)、指定代理配置以控制外部请求等。
- 预估潜在滥用: 正如人类会犯错一样,大型语言模型(LLM)也可能出错。始终假定任何系统访问或凭据都可能以其被授予权限所允许的任何方式使用。例如,如果一对数据库凭据允许删除数据,最安全的做法是假定任何能够使用这些凭据的LLM都可能实际删除数据。
- 纵深防御: 没有完美的安保技术。精细调优和良好的链式设计可以减少,但不能消除,大型语言模型(LLM)犯错的可能性。最好是结合多种分层安全方法,而不是仅仅依靠单一的防御层来确保安全。例如:同时使用只读权限和沙盒技术,以确保LLM只能访问明确供其使用的数据。
不这样做可能导致的风险包括但不限于
- 数据损坏或丢失。
- 未经授权访问机密信息。
- 关键资源性能或可用性受损。
示例场景及缓解策略
- 用户可能会要求拥有文件系统访问权限的代理删除不应删除的文件,或读取包含敏感信息的文件内容。为缓解此问题,请限制代理仅使用特定目录,并只允许其读取或写入安全的文件。考虑通过在容器中运行代理来进一步沙盒化它。
- 用户可能会要求拥有外部API写入权限的代理向API写入恶意数据,或从该API删除数据。为缓解此问题,请为代理提供只读API密钥,或限制它仅使用已能抵御此类滥用的端点。
- 用户可能会要求拥有数据库访问权限的代理删除表或修改架构。为缓解此问题,请将凭据范围限定为代理需要访问的表,并考虑颁发只读(READ-ONLY)凭据。
如果您正在构建访问文件系统、API 或数据库等外部资源的应用程序,请考虑与您公司的安全团队沟通,以确定如何最佳地设计和保护您的应用程序。
报告开源软件(OSS)漏洞
LangChain 已与 Protect AI 旗下的 huntr 合作,为我们的开源项目提供漏洞奖励计划。
请在此处报告与 LangChain 开源项目相关的安全漏洞。
在报告漏洞之前,请查阅
- 下面的“在范围目标”和“超出范围目标”。
- langchain-ai/langchain 单一仓库的结构。
- 上方“最佳实践”部分,以了解我们认为的安全漏洞与开发者责任之间的区别。
在范围目标
以下软件包和仓库符合漏洞奖励计划的条件
- 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
。