最佳实践
在构建此类应用程序时,开发人员应记住遵循良好的安全实践:- 限制权限:将权限明确限定为应用程序的需要。授予广泛或过度的权限可能会引入重大安全漏洞。为避免此类漏洞,请考虑使用只读凭据、禁止访问敏感资源、使用沙盒技术(例如在容器内运行)、指定代理配置以控制外部请求等,以适合您的应用程序。
- 预测潜在的滥用:就像人类可能犯错一样,大型语言模型 (LLM) 也可能犯错。始终假设任何系统访问或凭据可能以分配给它们的权限允许的任何方式使用。例如,如果一对数据库凭据允许删除数据,最安全的做法是假设任何能够使用这些凭据的 LLM 实际上可能会删除数据。
- 深度防御:没有任何安全技术是完美的。微调和良好的链设计可以减少但不能消除大型语言模型 (LLM) 犯错的可能性。最好结合多个分层安全方法,而不是依赖任何单一的防御层来确保安全。例如:同时使用只读权限和沙盒以确保 LLM 只能访问明确为它们使用的数据。
- 数据损坏或丢失。
- 未经授权访问机密信息。
- 关键资源的性能或可用性受损。
- 用户可能要求有权访问文件系统的智能体删除不应删除的文件或读取包含敏感信息的文件内容。为了缓解,将智能体限制为仅使用特定目录,并仅允许它读取或写入安全读取或写入的文件。考虑通过在容器中运行来进一步沙盒化智能体。
- 用户可能要求具有外部 API 写入访问权限的智能体将恶意数据写入 API,或从该 API 删除数据。为了缓解,为智能体提供只读 API 密钥,或将其限制为仅使用已经能够抵抗此类滥用的端点。
- 用户可能要求有权访问数据库的智能体删除表或更改架构。为了缓解,将凭据限定为智能体需要访问的表,并考虑颁发只读凭据。
报告 OSS 漏洞
LangChain 与 huntr by Protect AI 合作,为我们的开源项目提供赏金计划。 请在 huntr 报告与 LangChain 开源项目相关的安全漏洞。 在报告漏洞之前,请查看:- 范围内目标和范围外目标。
- 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 联系我们。