安全策略
LangChain 拥有一个庞大的生态系统,可与各种外部资源(如本地和远程文件系统、API 和数据库)集成。这些集成使开发人员能够创建多功能应用程序,将 LLM 的强大功能与访问外部资源、与外部资源交互和作的能力相结合。
最佳实践
在构建此类应用程序时,开发人员应记住遵循良好的安全实践:
- Limit Permissions:根据应用程序的需要专门限定权限范围。授予广泛或过多的权限可能会引入重大安全漏洞。为避免此类漏洞,请考虑使用只读凭证、禁止访问敏感资源、使用沙盒技术(例如在容器内运行)、指定代理配置以控制外部请求等,具体取决于您的应用程序。
- 预测潜在的滥用:正如人类会犯错一样,大型语言模型 (LLM) 也会出错。始终假定任何系统访问或凭证都可以以分配给它们的权限允许的任何方式使用。例如,如果一对数据库凭证允许删除数据,则最安全的做法是假设任何能够使用这些凭证的 LLM 实际上都可以删除数据。
- 深度防御:没有一种安全技术是完美的。微调和良好的链设计可以减少但不能消除大型语言模型 (LLM) 出错的几率。最好结合多层安全方法,而不是依赖任何单一的防御层来确保安全性。例如:同时使用只读权限和沙盒,以确保 LLM 只能访问明确供其使用的数据。
不这样做的风险包括但不限于:
- 数据损坏或丢失。
- 未经授权访问机密信息。
- 关键资源的性能或可用性受损。
使用缓解策略的示例方案:
- 用户可以要求具有文件系统访问权限的代理删除不应删除的文件或读取包含敏感信息的文件内容。为了缓解这种情况,请将代理限制为仅使用特定目录,并且只允许它读取或写入可以安全读取或写入的文件。考虑通过在容器中运行代理来进一步对代理进行沙盒处理。
- 用户可以要求对外部 API 具有写入权限的代理将恶意数据写入 API,或从该 API 中删除数据。为了缓解这种情况,请为代理提供只读 API 密钥,或将其限制为仅使用已经可以抵抗此类滥用的终端节点。
- 用户可以要求具有数据库访问权限的代理删除表或更改架构。为了缓解这种情况,请将凭证的范围限定为仅代理需要访问的表,并考虑颁发 READ-ONLY 凭证。
如果您正在构建访问外部资源(如文件系统、API)的应用程序 或数据库,请考虑与您公司的安全团队交谈,以确定如何最好地使用 设计和保护您的应用程序。
报告 OSS 漏洞
LangChain 与 Protect AI 的 huntr 合作,提供 针对我们开源项目的赏金计划。
请报告与 LangChain 相关的安全漏洞 开源项目,请访问以下链接:
https://huntr.com/bounties/disclose/
在报告漏洞之前,请查看:
- 下面的 In-Scope Targets (范围内目标) 和 Out-of-Scope Targets(范围外目标)。
- langchain-ai/langchain monorepo 结构。
- 以上最佳实践 了解我们认为与开发人员相比的安全漏洞 责任。
范围内目标
以下软件包和仓库有资格获得 bug 赏金:
- langchain-核心
- langchain (请参阅例外)
- langchain-community(请参阅例外)
- LangGraph
- 朗斯
超出范围的目标
huntr 定义的所有范围外目标以及:
- langchain-experimental:此存储库用于实验性代码,而不是 有资格获得 bug 赏金(参见软件包警告),向其报告 bug 将被标记为 Interesting 或 Waste of 时间并发布,没有附加赏金。
- tools: langchain 或 langchain-community 中的工具不符合 bug 的条件
赏金。这包括以下目录
- 库/langchain/langchain/工具
- 库/社区/langchain_community/工具
- 请查看 最佳实践 了解更多详情,但通常工具会与现实世界交互。开发人员是 应了解其代码的安全影响并负责 为了他们工具的安全。
- 使用安全通知记录的代码。这将由具体情况决定 案例基础,但很可能没有资格获得赏金,因为代码已经 记录了开发人员在制作 应用程序安全。
- 任何与 LangSmith 相关的存储库或 API(请参阅报告 LangSmith 漏洞)。
报告 LangSmith 漏洞
请将与 LangSmith 相关的安全漏洞通过电子邮件报告至security@langchain.dev.
- LangSmith 站点:https://smith.langchain.com
- SDK 客户端:https://github.com/langchain-ai/langsmith-sdk
其他安全问题
如有任何其他安全问题,请通过以下方式与我们联系security@langchain.dev.