以编程方式使用文档

LangChain 拥有庞大的外部资源集成生态系统,包括本地和远程文件系统、API 和数据库。这些集成使开发者能够创建多功能应用程序,将 LLM 的强大能力与访问、交互和操作外部资源的能力相结合。

最佳实践

在构建此类应用程序时,开发者应记住遵循良好的安全实践:

  • * **限制权限**:将权限严格限定于应用程序的需求范围。授予过于宽泛或过多的权限可能会引入严重的安全漏洞。为避免此类漏洞,请根据应用程序的具体情况考虑使用只读凭证、禁止访问敏感资源、使用沙箱技术(如在容器中运行)、指定代理配置来控制外部请求等方法。
  • * **预见潜在的滥用**:正如人类会犯错一样,大型语言模型(LLM)也会犯错。应始终假设任何系统访问或凭证都可能被按照其被授予的权限以任何方式使用。例如,如果一对数据库凭证允许删除数据,最安全的做法是假设任何能够使用这些凭证的 LLM 都可能会实际删除数据。
  • * **纵深防御**):没有任何安全技术是完美的。微调和良好的链设计可以减少,但不能消除,大型语言模型(LLM)犯错的可能性。最好将多个分层的安全方法结合起来,而不是依赖任何单一防御层来确保安全。例如:同时使用只读权限和沙箱技术,确保 LLM 仅能访问明确允许其使用的数据。

不这样做的风险包括但不限于:

  • * 数据损坏或丢失。
  • * 对机密信息的未授权访问。
  • * 关键资源的性能受损或可用性下降。

示例场景及缓解策略:

  • * 用户可能要求具有文件系统访问权限的代理删除不应删除的文件,或读取包含敏感信息的文件内容。为缓解此风险,请将代理限制为仅使用特定目录,并仅允许其读取或写入安全的文件。考虑进一步通过在容器中运行来沙箱化代理。
  • * 用户可能要求具有外部 API 写权限的代理向该 API 写入恶意数据或从该 API 删除数据。为缓解此风险,请为代理提供只读 API 密钥,或将其限制为仅使用已对该类滥用具有抵抗力的端点。
  • * 用户可能要求具有数据库访问权限的代理删除表或变更架构。为缓解此风险,请将凭证范围限定为代理仅需访问的表,并考虑颁发只读凭证。

如果您正在构建访问文件系统、API 或数据库等外部资源的应用程序,请考虑与您公司的安全团队沟通,了解如何最好地 设计和保护您的应用程序。

报告开源软件漏洞

请使用以下流程报告与 LangChain 开源项目相关的安全漏洞:

  1. **提交安全公告** 在存在漏洞的 GitHub 仓库的"安全"选项卡上提交。
  2. **发送电子邮件** to security@langchain.dev 通知我们您已提交了安全issue以及提交到的仓库。

在报告漏洞之前,请查看 最佳实践 以上内容,了解我们认为什么是安全漏洞与开发者责任之间的区别。

漏洞赏金资格

我们欢迎所有 LangChain 库的安全漏洞报告。但是,我们可能仅针对以下软件包中的漏洞提供临时漏洞赏金:

  • * 由 LangChain 团队拥有和维护的核心库: langchain-core, langchain (v1), langgraph以及相关的检查点包(或其 JavaScript 等效包)
  • * 由 LangChain 团队维护的热门集成(如 langchain-openai, langchain-anthropic等,或其 JavaScript 等效包)

漏洞必须存在于库代码本身,而不是示例代码或示例应用程序中。

我们欢迎所有其他 LangChain 软件包的报告,并将处理有效的安全问题,但超出此范围的软件包将不会获得漏洞赏金。这包括已归档的 langchain-community,由于其社区驱动的性质,不符合漏洞赏金资格,但我们会接受并处理报告。

超出范围的目标

以下内容不包含在安全漏洞报告范围内:

  • * **langchain-experimental**:此归档仓库用于实验性代码,不在安全报告范围内(见 包警告).
  • * **示例和示例应用程序**:示例代码和演示应用程序不在安全报告范围内。
  • * **带有安全通知的代码**:这将根据具体情况进行判断,但由于代码已经包含为开发者提供的安全指南,可能不在范围内。
  • * **LangSmith 相关的仓库或 API**:请参阅 报告 LangSmith 漏洞 below.

报告 LangSmith 漏洞

请通过电子邮件向 security@langchain.dev.

其他安全问题

如有任何其他安全问题,请通过以下方式联系我们: security@langchain.dev.