CVE-2024-58340CVE-2024-58340是LangChain框架中的一个高危正则表达式拒绝服务漏洞。LangChain是一个开源的大语言模型应用开发框架,广泛用于构建基于LLM的应用程序。该漏洞存在于MRKLOutputParser.parse()方法中,该方法负责从模型输出中提取工具调用动作。由于使用了存在灾难性回溯问题的正则表达式,攻击者可以通过构造特定的输入payload来触发正则引擎的指数级回溯,从而导致CPU资源被大量消耗,出现显著的解析延迟甚至服务拒绝。攻击者可以通过多种方式触发此漏洞,最典型的场景是在支持prompt injection的下游应用中,恶意用户通过注入精心构造的文本内容,间接将payload传递给MRKLOutputParser进行解析。由于该解析器通常在LLM应用的关键路径上被调用,漏洞被利用后将直接影响应用的响应能力和可用性。CVSS评分7.5,属于高危级别,需要尽快修复。
该漏洞位于LangChain库的libs/langchain/langchain/agents/mrkl/output_parser.py文件中的MRKLOutputParser.parse()方法。漏洞根源在于该方法使用了存在回溯问题的正则表达式来匹配和提取工具动作。正则表达式在处理嵌套量词或重叠匹配路径时,当输入文本与模式部分匹配但最终无法完全匹配时,正则引擎会尝试所有可能的回溯路径,导致时间复杂度从线性增长到指数级。当攻击者提供包含大量重复字符(如空格)的payload时,正则引擎会陷入大量的回溯计算中。例如,构造一个包含数十个连续空格的字符串,该字符串与正则模式的部分子表达式匹配但整体不匹配,引擎会尝试所有可能的分组和量词组合,从而触发CPU的100%占用。这种攻击在LLM应用场景下特别危险,因为MRKLOutputParser通常处理来自大语言模型的输出,而LLM应用可能通过prompt injection或用户输入将恶意内容传递给解析器。攻击者无需特殊权限,只需能够向应用提交文本内容即可触发漏洞。